如何从回归数据中提取残差?

时间:2014-08-25 16:54:47

标签: r loops

这可能是一个非常简单的问题,但我确实需要R的帮助。

我有一个表达式数据,为此我运行了线性回归来校正协变量,我想在文件中提取残差。

以下是我的循环

for (i in 1:n) {
    geneProbe         <- z.na[,i]

    lm1    <- lm(geneProbe ~ phenotype + covariate1 + covariate2 + covariate3)

    write.table(lm1$residuals, file="residuals.txt", sep="\t")
}

当我做以下事情时

write.table(lm1$residuals, file="residuals.txt", sep="\t")

我只能为一个循环检索残差,如下所示(residuals.txt):

Res1
-0.00224226
0.005144119
0.011142788
1.90E-05
-0.003698019

我希望将所有i s或循环中的所有内容放入单个文件中,如下所示(residuals.txt)。换句话说,每个循环都应该添加一列:

Res1            Res2            Res3            Res4
-0.00224226     0.009583449     0.000538104     0.012497267
0.005144119     0.015632242     -0.000104554    -0.009199898
0.011142788     -0.012912383    -0.004363051    -0.010270967
1.90E-05        -0.038716093    0.004149837     0.011071139
-0.003698019    0.015219847     -0.002486236    -0.009230721

1 个答案:

答案 0 :(得分:3)

将残差保存在循环中的矩阵或数据框中,然后在完成后保存表格。 E.g:

resdat = matrix(NA, 5,n)
for (i in 1:n) {
    geneProbe         <- z.na[,i]
    lm1    <- lm(geneProbe ~ phenotype + covariate1 + covariate2 + covariate3)
    resdat[,i] = lm1$residuals
}
write.table(resdat, file="residuals.txt", sep="\t")