IJH*_*IJH 3 regression r linear-regression lm na
我正在使用具有许多NA值的数据框.虽然我能够创建一个线性模型,但由于缺少值和缺少指标列,我随后无法将模型的拟合值与原始数据对齐.
这是一个可重复的例子:
library(MASS)
dat <- Aids2
# Add NA's
dat[floor(runif(100, min = 1, max = nrow(dat))),3] <- NA
# Create a model
model <- lm(death ~ diag + age, data = dat)
# Different Values
length(fitted.values(model))
# 2745
nrow(dat)
# 2843
Run Code Online (Sandbox Code Playgroud)
这里实际上有三个解决方案:
NA自己的价值观;predict()来计算拟合值;lm().选项1
## row indicator with `NA`
id <- attr(na.omit(dat), "na.action")
fitted <- rep(NA, nrow(dat))
fitted[-id] <- model$fitted
nrow(dat)
# 2843
length(fitted)
# 2843
sum(!is.na(fitted))
# 2745
Run Code Online (Sandbox Code Playgroud)
选项2
## the default NA action for "predict.lm" is "na.pass"
pred <- predict(model, newdata = dat) ## has to use "newdata = dat" here!
nrow(dat)
# 2843
length(pred)
# 2843
sum(!is.na(pred))
# 2745
Run Code Online (Sandbox Code Playgroud)
选项3
或者,您可以简单地将数据框传递NA给lm():
complete.dat <- na.omit(dat)
fit <- lm(death ~ diag + age, data = complete.dat)
nrow(complete.dat)
# 2745
length(fit$fitted)
# 2745
sum(!is.na(fit$fitted))
# 2745
Run Code Online (Sandbox Code Playgroud)
综上所述,
NA,但我认为人们很少采用这种方法;| 归档时间: |
|
| 查看次数: |
918 次 |
| 最近记录: |