使用回归残差计算R中的另一个回归(内部函数)

时间:2015-07-11 06:48:21

标签: r function regression

我使用函数来计算回归。我需要残差与另一个变量相关的关系。 这是因为我多次更改了构面网格。

这是我的代码:

modelregression = function(file) {
mod2 = lm(y ~ x,data=file)
mod = lm(mod2$residuals ~ anotherX,data=file)
mod_sum = summary(mod)
formula = sprintf("y= %.3f %+.3f*x",
                coef(mod)[1], coef(mod)[2])
r = mod_sum$r.squared
r2 = sprintf("r2= %.3f", r)
x  = cor.test(~mod2$residuals + anotherX,data=file)
r0 = sprintf("r= %.3f", x[4])
p1 = pf(mod_sum$fstatistic[1],mod_sum$fstatistic[2],mod_sum$fstatistic[3],lower.tail=F)
p =sprintf("p = %.3f", p1)
n0 = length(mod_sum$residual)
n1 = sprintf("N = %.f", n0)
data.frame(formula=formula, r=r0,r2=r2, p=p,n=n1, stringsAsFactors=FALSE)
}

modelregression_math = ddply(file, c("database","level"), modelregression)

它运行没有任何问题,但所有系数都为零。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你需要残留物来居住&#34;内部&#34; file <- cbind(mod2$residuals, file) 指定的内容。 因此,在运行第二次回归之前插入一行如下:

file

但是,只有当mod2$model中的行与第一次回归所用的行的顺序和数量相匹配时,这才有效。如果您缺少值,则会变得更复杂:使用data_with_residuals <- cbind(mod2$model, mod2$residuals) mod = lm(residuals ~ anotherX, data=data_with_residuals) 准确获取回归中使用的数据(也是正确的顺序)并将其与残差相结合:

merge()

(或者使用Glide.with(xxx).load(xxx).asBitmap()的方法可以解决问题。)

相关问题