【问题标题】:Using year fixed effects on test set在测试集上使用年份固定效应
【发布时间】:2017-04-18 15:09:31
【问题描述】:

我有一个包含 2000 年至 2011 年期间的数据的训练集和一个 2012 年至 2016 年期间的测试集。我在训练集中(2000-2011 年期间)运行了一个具有年份固定效应的 logit 模型,我想使用测试集的预测值。

我在测试集中添加年份固定效应(2012-2016 年)时遇到了一些麻烦,因为训练集中使用的模型使用了完全不同的年份(2000-2011 年)。

我该如何调整这种差异?这是我面临的问题。有什么想法吗?

训练集模型:

model.2 <- glm(MAKE ~ NAME + DIST + DIST2 + DIST3 + SEASON + 
           GRASS + COLD49 + WINDY + ALTITUDE + PRECIP -1, 
           family = "binomial"(link = logit), data = df.train)

测试集模型:

df.test$model.2.predictions <- predict(model.2, newdata = df.test, 
                                   type = "response")

Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : 
factor SEASON has new levels 2012, 2013, 2014, 2015, 2016

【问题讨论】:

  • 只是想知道,如果您使用季节(以年份作为级别),那么您正在尝试查看每个级别对您的响应的具体影响,对吗?由于这些影响是特定于因素水平的(例如,A 年相对于 B 年的概率增加 x),您如何期望模型预测年的影响,而不包括在训练中? ——我真的很好奇。是否有可能拥有一个涵盖所有年份的训练集?
  • 确实如此。季节性固定效应的系数是针对该特定季节估算的,将这些系数与新季节(2012 - 2016 年)的虚拟变量相乘是没有意义的。我需要对 2012 - 2016 赛季的系数进行新的估计。我无法建立一个涵盖所有年份的训练集。
  • 省略年份变量,或者如果假设趋势,则将其建模为数字。
  • @42- 我采纳了您的建议并假设呈线性趋势。谢谢。

标签: r


【解决方案1】:

错误表示测试集中的关卡从未出现在训练集中。 在进行预测之前和训练模型之后尝试model.2$xlevels$SEASON &lt;- union(model.2$xlevels$SEASON, levels(df.test$SEASON))

【讨论】:

  • 我已经尝试过您的建议,但出现相同的错误消息。知道为什么吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
  • 2016-03-13
  • 2013-04-04
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
相关资源
最近更新 更多