14

我有一个多元回归模型。我想将拟合值和残差data.frame作为两个新列添加到原始值中。我怎样才能做到这一点?我在 R 中的模型是这样的:

BD_lm <- lm(y ~ x1+x2+x3+x4+x5+x6, data=BD)
summary(BD)

我也得到了拟合值

BD_fit<-fitted(BD_lm)

但我想将此BD_fit值作为一列添加到我的原始数据BD中。我不知道怎么做。当我试图打电话BD_fit时,它只是给了我很多号码。我正在运行一个大型数据集,因此很难在此处列出所有这些数据集。

4

3 回答 3

25

认为:

fm <- lm(demand ~ Time, BOD)

然后试试这个:

cbind(BOD, resid = resid(fm), fitted = fitted(fm))

或这个:

BOD$resid <- resid(fm)
BOD$fitted <- fitted(fm)

添加:

如果您有NA值,demand那么您的拟合值和残差的长度将与数据的行数不同,这意味着上述内容将不起作用。在这种情况下使用:na.exclude像这样:

BOD$demand[3] <- NA # set up test data
fm <- lm(demand ~ Time, BOD, na.action = na.exclude)

na.exclude将自动用值填充预测和残差,NA使它们与原始数据具有相同的长度。现在前面的行应该可以工作了。

于 2013-09-28T10:32:35.183 回答
0
BD_fit<-data.frame(BD_fit)
BD$fit<-BD_fit[1]
于 2013-09-30T22:29:10.030 回答
-1

尽管不详细了解您的情况,但添加到数据框非常容易。您可以像这样添加一个新列:

df <- data.frame(var1=1:10)
df$var2 <- 11:20

您只需确保您的附加数据列的长度与原始数据列的长度相同。否则,您将无法将它们添加到数据框中。

于 2013-09-28T09:41:01.723 回答