带有na.action = na.exclude的MASS::rlm方法不起作用

hgb9j2n6  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(147)

我有一个关于MASS包的函数rlm的问题。
该函数通过稳健回归拟合线性模型,并具有参数na.action。用户应该可以选择指定在找到NA时要采取的操作。我显式地使用na.exclude运行该函数,以返回与输入长度相同的拟合值。但实际上NA值只是丢失了。在rlm函数中是否实现了na.操作,因为实际上更改了na的参数。行动什么也做不了?
我试图通过选项将na.action设置为na.exclude,但没有成功。实际上,我所希望的是函数返回一个拟合模型,其拟合值与输入长度相同。由于提供了这个na.action参数,我认为它也可以工作。
下面是一个简单的例子:

ref_a <- c(13.70284,11.61466,16.03751,20.70219,13.85347,22.22926,18.16462,16.39861,14.62653,13.66633)
m <- c(NA,NA,0.05286859,0.23125664,-0.55154806, 0.16420488,0.29565772 ,0.49802977, NA,NA)

fit <- MASS::rlm(m ~ ref_a, na.action = stats::na.exclude)
fit_values <- fit$fitted.values
length(fit_values) # 6
length(m) #10
length(ref_a) #10
ijnw1ujt

ijnw1ujt1#

na.action存储模型拟合中的信息,该信息由其他函数使用,尤其是predict。对象fitted.values不受影响。因此,只需使用predict计算的拟合值,而不是$fitted.values

library(MASS)
ref_a <- c(13.70284,11.61466,16.03751,20.70219,13.85347,22.22926,18.16462,16.39861,14.62653,13.66633)
m <- c(NA,NA,0.05286859,0.23125664,-0.55154806, 0.16420488,0.29565772 ,0.49802977, NA,NA)

fit <- rlm(m ~ ref_a, na.action=stats::na.exclude)
length(fit$fitted.values)
#> [1] 6
length(predict(fit))
#> [1] 10

创建于2023年1月13日,使用reprex v2.0.2

相关问题