【发布时间】: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