将残差绑定到具有缺失值的输入数据集

met*_*oia 2 regression r plyr dataframe

我正在寻找一种方法将lm残差绑定到输入数据集.该方法必须添加NA缺失残差,残差应对应于正确的行.

样本数据:

N <- 100 
Nrep <- 5 
X <- runif(N, 0, 10) 
Y <- 6 + 2*X + rnorm(N, 0, 1) 
X[ sample(which(Y < 15), Nrep) ] <- NA
df <- data.frame(X,Y)

residuals(lm(Y ~ X,data=df,na.action=na.omit))
Run Code Online (Sandbox Code Playgroud)

残差应该与df绑定.

TMS*_*TMS 7

只需更改na.actionna.exclude:

residuals(lm(Y ~ X, data = df, na.action = na.exclude))
Run Code Online (Sandbox Code Playgroud)

na.omit并且na.exclude两者都针对预测因子和标准进行了个案删除.它们的不同之处在于,提取器的功能类似于residuals()fitted()将使用NA填充其输出以用于省略的情况na.exclude,因此具有与输入变量相同长度的输出.

(这是这里找到的最佳解决方案)


Sve*_*ein 0

"[<-"(df, !is.na(df$X), "res", residuals(lm(Y ~ X,data=df,na.action=na.omit)))
Run Code Online (Sandbox Code Playgroud)

会成功的。