9900123 2024-08-01 00:13 采纳率: 0%
浏览 3

msmFit使用时报错

可以帮我看看这步出错是因为什么吗?想用Markov switching model去分析回归CSAD~abs(Rm)+Rm2,但是总是运行不了.
谢谢帮忙了

aic_values <- numeric()
bic_values <- numeric()
abs_Rm =abs(Rm)
df <- data.frame(CSAD_df = CSAD, abs_Rm_df = abs_Rm, Rm2_df=  Rm2)
> for (m in 1:10) {
+   lm_model <- lm(CSAD_df ~ abs_Rm_df + Rm2_df, data = df)
+   model1 <- msmFit(lm_model, k = m, p = 0,
+                    sw = c(TRUE,TRUE,TRUE,TRUE), control=list(parallel=FALSE))
+   aic_values[m] <- AIC(model1)
+   bic_values[m] <- BIC(model1)
+ }
Error in apply(w, 2, sum) : dim(X)的值必需是正数


  • 写回答

2条回答 默认 最新

  • 9900123 2024-08-01 00:26
    关注

    以下使我目前用的全部代码

    rm(list = ls()) 
    data <-read.csv('cc_close.csv')
    library(zoo)
    LINK_miss <- na.approx(data$LINK)
    source("fineco_fun.R")
    data$time <- as.Date(data$time, format="%Y/%m/%d")
    
    BCH <-lr(data$BCH)
    BTC <-lr(data$BTC)
    BNB <-lr(data$BNB)
    ADA <-lr(data$ADA)
    LINK<-lr(LINK_miss)
    DOGE<-lr(data$DOGE)
    ETC <-lr(data$ETC)
    ETH <-lr(data$ETH)
    LTC <-lr(data$LTC)
    XMR <-lr(data$XMR)
    XLM <-lr(data$XLM)
    USDT<-lr(data$USDT)
    TRX <-lr(data$TRX)
    XRP <-lr(data$XRP)
    
    data1<- cbind( BCH, BTC, BNB, ADA,
                   LINK, DOGE,ETC, ETH, LTC,
                   XMR, XLM, USDT, TRX, XRP)
    Rm_all <- rowMeans(data1)
    n <- 14
    
    CSAD_all <- (1/n) * (abs(BCH - Rm_all) + abs(BTC - Rm_all) + abs(BNB - Rm_all) +
                           abs(ADA - Rm_all) + abs(LINK - Rm_all)+ abs(DOGE - Rm_all)+ 
                           abs(ETC - Rm_all) + abs(ETH - Rm_all) + abs(LTC - Rm_all)+ 
                           abs(XMR - Rm_all) + abs(TRX - Rm_all) + abs(USDT - Rm_all)+
                           abs(XRP - Rm_all) + abs(XLM - Rm_all) 
                          )
    CSAD <- CSAD_all[-(1:5)]
    Rm<- Rm_all[-(1:5)]
    
    #MS
    install.packages("MSwM")
    library(MSwM)
    
    aic_values <- numeric()
    bic_values <- numeric()
    abs_Rm =abs(Rm)
    
    df <- data.frame(CSAD_df = CSAD, abs_Rm_df = abs_Rm, Rm2_df=  Rm2)
    
    
    for (m in 1:10) {
      lm_model <- lm(CSAD_df ~ abs_Rm_df + Rm2_df, data = df)
      model1 <- msmFit(lm_model, k = m, p = 0,
                       sw = c(TRUE,TRUE,TRUE,TRUE),control=list(parallel=FALSE))
      aic_values[m] <- AIC(model1)
      bic_values[m] <- BIC(model1)
    }
    
    # find k
    optimal_k_aic <- which.min(aic_values)
    optimal_k_bic <- which.min(bic_values)
    
    cat("Optimal k based on AIC:", optimal_k_aic, "\n")
    cat("Optimal k based on BIC:", optimal_k_bic, "\n")
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 8月1日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见