使用带有虚拟变量的lm输出的fitting()

时间:2014-07-18 20:58:35

标签: r linear-regression prediction

reg_ss <- predict(lm(stem_d~stand_id*yr,ss))
fitted.values(reg_ss)

#Error: $ operator is invalid for atomic vectors

我已使用fitted()fitted.values()尝试此操作并收到相同的错误。

stand_id是300+级别的因素,yr是1-19的整数,但两者都是数字。

我有关于树干密度的数据,每2 - 3年收集一次,持续20年。我想进行线性回归并预测采样之间年份的林分密度,即使用第1年和第3年的数据来预测第2年的茎密度。

有关如何使用fitted()或任何其他方法获取预测值的任何建议将不胜感激。我怀疑它与分配给类别的虚拟变量有关,但似乎无法找到解决方案的任何信息。

提前致谢!

1 个答案:

答案 0 :(得分:2)

如果您想要拟合值,则不应首先调用predict()

reg_ss <- lm(stem_d~stand_id*yr,ss)
predict(reg_ss)
fitted(reg_ss)

当您没有传递新数据进行预测时,它基本上与fitted做同样的事情,因此您可以获得基本相同的值。 fittedpredict都会返回一个简单的命名向量。您不能在命名向量上使用fitted(因此错误消息)。

如果要预测未观察到的值,则需要将newdata=参数传递给predict()。您应该使用名为&#34; stand_id&#34;的列传入data.frame。和#34;年龄&#34;就像ss一样。确保也匹配因子水平。