r语言 - MASS::rlm方法与na.动作= na.排除不起作用



我有一个关于MASS包的功能rlm的问题。

该函数通过鲁棒回归拟合线性模型,参数为na.action。如果找到NAs,用户应该可以选择指定要采取的操作。我显式地用na运行函数。排除返回与输入长度相同的拟合值,但实际上NA值只是丢失了。na。在RLM函数中实现的操作,因为实际上更改了na的参数。行动没有任何作用吗?

我尝试设置na。动作通过选项到na。排除,但它没有工作。实际上,我想要的只是函数返回一个拟合模型,其拟合值与输入长度相同。自从这个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

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-01-13与reprex v2.0.2

最新更新