【问题标题】:How do I store and use the output regression formula which has been identified from stepAIC regression?如何存储和使用从 stepAIC 回归中确定的输出回归公式?
【发布时间】:2016-10-14 18:56:57
【问题描述】:
TestRegALL <- lm(RegV.DiffMoMChange.FIN$Y ~ RegVariables.FIN$A + RegVariables.FIN$B + RegVariables.FIN$C + RegVariables.FIN$D + RegVariables.FIN$E + RegVariables.FIN$F + RegVariables.FIN$G + RegVariables.FIN$H + RegVariables.FIN$I + RegVariables.FIN$J + RegVariables.FIN$K)

TestRegALL.stepAIC <- stepAIC(TestRegALL, directions = "both")
summary(TestRegALL.stepAIC)

摘要揭示了一个特定的公式:

lm(formula = RegV.DiffMoMChange.FIN$Y ~ RegVariables.FIN$A + RegVariables.FIN$B + RegVariables.FIN$C + RegVariables.FIN$D + RegVariables.FIN$E + RegVariables.FIN$F + RegVariables.FIN$J + RegVariables.FIN$K)

无变量 G、H、I

如何存储此公式以用于预测目的?

由于这个输出回归公式可能会随着每月更新的数据而改变,我想了解如何在 R 脚本上编写它并使用更新的公式进行预测/预测。

【问题讨论】:

  • TestRegALL.stepAIC$call 将返回 AIC 逐步模型选择中选择的公式。
  • 要重新运行model&lt;- TestRegALL.stepAIC$call,请执行eval(model)
  • 谢谢!有什么方法可以使用“TestRegALL.stepAIC$call”中的公式和未来的变量 A、B、C 等自动计算 Y?干杯! @AdamQuek
  • 只需以相同的格式和eval(model)更新您的数据,您应该可以得到它。尝试对您的数据进行子集化,看看这个选项是否有效。另外,考虑使用单个 data.frame 或 model.matrix... 跨两个矩阵(RegV.DiffMoMChange.FIN 和 RegVariables.FIN)调用变量不是很直观
  • 我不会使用eval 技巧。 update 方法可用于在新数据集上重新估计模型。

标签: r regression predict


【解决方案1】:

您可以使用方法update 使用新数据重新估计模型,并且可以使用predict 来计算模型的预测。

首先,我不会在公式中使用 data.frame 的名称,而是使用 lmdata 参数(以及大多数其他建模函数)传递 data.frame。使用生成的数据集:

N <- 1000
traindata <- data.frame(Y = rnorm(N), A = rnorm(N), 
  B = rnorm(N), C = rnorm(N), D = rnorm(N))

model_0 <- lm(Y ~ A + B + C + D, data = traindata)
model_step <- MASS::stepAIC(model_0, direction = "both")

使用data 参数将data.frame 传递给lm 的优点是现在可以对其他数据集(具有不同名称)使用相同的公式。

例如,为新数据集testdata生成预测:

N <- 500
testdata <- data.frame(A = rnorm(N), B = rnorm(N),
  C = rnorm(N), D = rnorm(N))

predict(model_step, newdata = testdata)

使用update 使用新数据集重新估计模型:

N <- 1000
newdata <- data.frame(Y = rnorm(N), A = rnorm(N), B = rnorm(N), C = rnorm(N), D = rnorm(N))

model_new <- update(model_step, data = newdata)

update也可以用来修改公式(例如在模型中加入系数C:

model_new2 <- update(model_step, . ~ . + C)

您可以使用formula 方法从模型中提取公式。下面我使用model_0 中的公式来更新model_new 使用stepAIC

model_new_step <- MASS::stepAIC(model_new, formula(model_0), direction = "both")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-12
    • 2022-01-12
    • 1970-01-01
    • 2016-02-17
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多