代码之家  ›  专栏  ›  技术社区  ›  lrclark

使用glm-probit模型生成预测

  •  2
  • lrclark  · 技术社区  · 9 年前

    我试图使用 forecast 命令但当运行以下代码时,我得到以下消息: Error in as.data.frame(newdata) : argument "newdata" is missing, with no default

    #generate dataset with unknown value for last period dependent variable
    data.set <- data.frame(date= seq(as.Date('2015-01-01'), by = 'days' , length = 100), 
                           replicate(100, sample(0:1,1)), runif(1e2),runif(1e2),runif(1e2))
    colnames(data.set) <- c("date", "dv", "iv1", "iv2", "iv3")
    data.set.ts <- xts(data.set[-1], order.by=data.set$date)
    rm(data.set)
    data.set.ts$dv[100] <- NA
    
    #run glm probit model
    PRmodel <- glm(dv ~ iv1 + iv2 + iv3, data = data.set.ts[-nrow(data.set.ts),], 
                   family = binomial(link = "probit"))
    
    #generate forecast for last period dv
    iv_input <- xts(data.set.ts[, which(colnames(data.set.ts) %in% c("iv1" , "iv2" , "iv3"))], 
                    order.by = index(data.set.ts))
    start.date <- index(data.set.ts)[length(index(data.set.ts))]
    fcastFn_output <- forecast(PRmodel, xreg=window(iv_input, start = start.date))
    

    我也尝试过使用 predict 命令,但如果缺少实际值,R似乎不会生成观测值的预测值。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Stereo smashedtoatoms    9 年前

    生成预测的代码应遵循以下行

    data.set <- data.frame(date= seq(as.Date('2015-01-01'), by = 'days' , length = 100), 
                           replicate(100, sample(0:1,1)), runif(1e2),runif(1e2),runif(1e2))
    colnames(data.set) <- c("date", "dv", "iv1", "iv2", "iv3")
    # Load the required package.
    require(xts)
    data.set.ts <- xts(data.set[-1], order.by=data.set$date)
    rm(data.set)
    data.set.ts$dv[100] <- NA
    
    #run glm probit model
    PRmodel <- glm(dv ~ iv1 + iv2 + iv3, data = data.set.ts[-nrow(data.set.ts),], 
                   family = binomial(link = "probit"))
    
    #generate forecast for last period dv
    iv_input <- xts(data.set.ts[, which(colnames(data.set.ts) %in% c("iv1" , "iv2" , "iv3"))], 
                    order.by = index(data.set.ts))
    start.date <- index(data.set.ts)[length(index(data.set.ts))]
    # Generate the forecast for 2015-04-10.
    fcastFn_output <- predict(PRmodel, window(iv_input, start = start.date))
    # Create a time series with all the forecasts.
    fcastFn_all <- c(predict(PRmodel), fcastFn_output)
    

    希望这有帮助