首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将残差绑定到缺少值的输入数据集

将残差绑定到缺少值的输入数据集
EN

Stack Overflow用户
提问于 2012-12-03 03:06:44
回答 5查看 3K关注 0票数 4

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

示例数据:

代码语言:javascript
复制
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))

残差应该绑定到df。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-03 03:44:19

代码语言:javascript
复制
"[<-"(df, !is.na(df$X), "res", residuals(lm(Y ~ X,data=df,na.action=na.omit)))

就能达到目的。

票数 0
EN

Stack Overflow用户

发布于 2013-08-01 02:23:07

只需将na.action更改为na.exclude

代码语言:javascript
复制
residuals(lm(Y ~ X, data = df, na.action = na.exclude))

na.omitna.exclude在预测因子和标准方面都做了案例删除。它们唯一的不同之处在于,像residuals()fitted()这样的提取器函数将在na.exclude中省略的情况下用NAs填充它们的输出,从而具有与输入变量相同长度的输出。

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

票数 8
EN

Stack Overflow用户

发布于 2012-12-03 03:19:36

使用merge或join。

代码语言:javascript
复制
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)

df$id <- rownames(df)

res <- residuals(lm(Y ~ X,data=df,na.action=na.omit))
tmp <- data.frame(res=res)
tmp$id <- names(res)

merge(df,tmp,by="id",sort=FALSE,all.x=TRUE)

如果你需要维护秩序。使用plyr包中的join():

代码语言:javascript
复制
library(plyr) 
join(df,tmp)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13672690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档