我有一个多元回归模型。我想将拟合值和残差添加到原始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
时,它只给了我很多数字。我正在运行一个大型数据集,所以很难在这里列出所有这些数据集。
答案 0 :(得分:17)
假设:
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
值填充预测和残差,以使它们与原始数据的长度相同。现在前面的行应该可以工作。
答案 1 :(得分:0)
BD_fit<-data.frame(BD_fit)
BD$fit<-BD_fit[1]
答案 2 :(得分:-1)
尽管不详细了解您的情况,但添加到数据框非常简单。你可以像这样添加一个新列:
df <- data.frame(var1=1:10)
df$var2 <- 11:20
您只需确保您的其他数据列与原始列的长度相同。否则,您将无法将它们添加到数据框中。