2017-04-18 28 views
0

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

由于在训练集中使用的模型使用完全不同的年份(2000-2011),因此我在测试集(2012-2016年)中添加年度固定效果时遇到了一些问题。

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

训练集模式:

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 
+0

只是想知道,如果您使用季节(以年份作为级别),那么您正在试图查看每个级别对您的响应的具体影响吗?因为这些影响是特定因素水平的(例如,A年的概率相对于B年的概率增加了),您如何预期该模型能够预测未包含在培训中的年数的影响? - 我真的很好奇。是否有可能拥有涵盖所有年份的培训集? – din

+0

这是真的。季节性固定效应的系数是在特定季节估计的,将这些系数乘以新季节的虚拟变量(2012 - 2016年)是没有意义的。我需要提出2012 - 2016年季节系数的新估计。 我无法构建涵盖所有年份的训练集。 – josehernandez

+0

退出年份变量或假定趋势被假设,然后将其建模为数字。 –

回答

0

错误说有在测试组从未appeares在训练集的水平。 尝试model.2$xlevels$SEASON <- union(model.2$xlevels$SEASON, levels(df.test$SEASON))在做预测和训练模型之后。

+0

我已经尝试了您的建议,但出现相同的错误消息。任何想法为什么?谢谢。 – josehernandez