【问题标题】:generate forecast using glm probit model使用 glm 概率模型生成预测
【发布时间】:2015-08-14 20:36:37
【问题描述】:

我正在尝试使用 forecast 命令为 glm(概率回归)模型生成一个简单的单周期预测。但是在运行以下代码时,我收到以下消息: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 似乎不会为观察生成预测值。

【问题讨论】:

  • 不在笔记本电脑附近,如果这是错误的,我们深表歉意,但我认为 forecast 是为时间序列模型设计的,而不是 glms。我对错误的猜测是,它最终被传递给predict.glm,此时 newdata 参数(指定独立变量的输入数据集)不存在。尝试形成一个包含 101 个日期而不是 100 个日期的数据集,然后使用 predict(PRmodel, newdata = data.set.2) 来获取您的预测。这行得通吗?

标签: r glm forecasting


【解决方案1】:

生成预测的代码应该遵循这些原则

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)

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2021-05-31
    • 2018-09-05
    相关资源
    最近更新 更多