这个问题与我的previous question密切相关。唯一的区别是,我不希望绘制数据,而是希望原始数据适合。我试着在最后一个答案后自己解决但仍然卡住了。
所以我想从线性回归的拟合中检索自变量,拟合变量,残差和标准化残差。
我将使用由Brian Diggs友情创建的示例。所以谢谢。
dat <- data.frame(x1=rnorm(100), x2=rnorm(100,4,5), x3=rnorm(100,8,27), x4=rnorm(100,- 6,0.1),t=(1:100)+runif(100,-2,2))
dat <- transform(dat, y=x1+4*x2+3.6*x3+4.7*x4+rnorm(100,3,50))
fit <- lm(y~x1+x2+x3+x4, data=dat) # fit
dat$resid <- residuals(fit)
vars <- names(coef(fit))[-1]
下一步我和以前一样卡住了。我试图只获取用于回归的变量并将它们绑定到新数据集。我尝试了以下,但它不起作用。这一步是错误的。我可以绑定残差,但不能使用变量。
fit.data <- cbind(predict(fit),as.name(names(coef(fit))[2]))
非常感谢任何帮助。是的,仍在教我自己。
答案 0 :(得分:0)
你不能把不相应维度的东西捆绑在一起。为此,您需要一个列表。您还需要使用fit对象,因为摘要对象没有适合的值(并且可能不适用于rstandard()但我不确定)。
mod.results <- list(vars = names(coef(fit))[-1],
fitted.values=fit$fitted.values,
residuals = residuals(fit),
std.resid = rstandard(fit))
将它放在一个函数中是微不足道的:
> extr.res <- function(fit) {mod.results <- list(vars = names(coef(fit)),
fitted.values=fit$fitted.values, residuals = residuals(fit), std.resid = rstandard(fit)) }
> str(extr.res(fit))
List of 4
$ vars : chr [1:5] "(Intercept)" "x1" "x2" "x3" ...
$ fitted.values: Named num [1:100] -36.19 31.4 -2.59 -130.03 -1.12 ...
..- attr(*, "names")= chr [1:100] "1" "2" "3" "4" ...
$ residuals : Named num [1:100] -71.6 -21.2 -50.7 19 -58.5 ...
..- attr(*, "names")= chr [1:100] "1" "2" "3" "4" ...
$ : Named num [1:100] -1.608 -0.487 -1.175 0.435 -1.297 ...
..- attr(*, "names")= chr [1:100] "1" "2" "3" "4" ...