R lm中的缺失数据行为:使用完整案例,即使没有缺失数据的预测值 我的问题是:用“代码> Nav/Cult>S去除预测因子是最有效的方法,并考虑排除该预测器的完整情况?

R lm中的缺失数据行为:使用完整案例,即使没有缺失数据的预测值 我的问题是:用“代码> Nav/Cult>S去除预测因子是最有效的方法,并考虑排除该预测器的完整情况?,r,na,lm,R,Na,Lm,该问题源于NAs的以下回归情况,其中Ozone(大部分)和Solar.R中存在缺失值 data(airquality) summary(airquality) # Ozone Solar.R Wind Temp Month # Min. : 1.00 Min. : 7.0 Min. : 1.700 Min. :56.00 Min. :5.000 #

该问题源于
NA
s的以下回归情况,其中
Ozone
(大部分)和
Solar.R
中存在缺失值

data(airquality)
summary(airquality)
#     Ozone           Solar.R           Wind             Temp           Month      
# Min.   :  1.00   Min.   :  7.0   Min.   : 1.700   Min.   :56.00   Min.   :5.000  
# 1st Qu.: 18.00   1st Qu.:115.8   1st Qu.: 7.400   1st Qu.:72.00   1st Qu.:6.000  
# Median : 31.50   Median :205.0   Median : 9.700   Median :79.00   Median :7.000  
# Mean   : 42.13   Mean   :185.9   Mean   : 9.958   Mean   :77.88   Mean   :6.993  
# 3rd Qu.: 63.25   3rd Qu.:258.8   3rd Qu.:11.500   3rd Qu.:85.00   3rd Qu.:8.000  
# Max.   :168.00   Max.   :334.0   Max.   :20.700   Max.   :97.00   Max.   :9.000  
# NA's   :37       NA's   :7                                                       
#      Day      
# Min.   : 1.0  
# 1st Qu.: 8.0  
# Median :16.0  
# Mean   :15.8  
# 3rd Qu.:23.0  
# Max.   :31.0  
对剩余变量的
回归。只考虑完整的案例

summary(lm(Wind ~ ., data = airquality))
# 
# Call:
# lm(formula = Wind ~ ., data = airquality)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -4.3908 -2.2800 -0.3078  1.4132  9.6501 
# 
# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)    
# (Intercept) 15.519460   2.918393   5.318 5.96e-07 ***
# Ozone       -0.060746   0.011798  -5.149 1.23e-06 ***
# Solar.R      0.003791   0.003216   1.179    0.241    
# Temp        -0.036604   0.044576  -0.821    0.413    
# Month       -0.159671   0.208082  -0.767    0.445    
# Day          0.017353   0.031238   0.556    0.580    
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 2.822 on 105 degrees of freedom
#   (42 observations deleted due to missingness)
# Multiple R-squared:  0.3994,  Adjusted R-squared:  0.3708 
# F-statistic: 13.96 on 5 and 105 DF,  p-value: 1.857e-10
如果去除了
Ozone
,仍然只考虑完整的案例(包括
Ozone
)。但这与手动清除臭氧不同

summary(lm(Wind ~ . - Ozone, data = airquality))
# 
# Call:
# lm(formula = Wind ~ . - Ozone, data = airquality)
# 
# Residuals:
#    Min     1Q Median     3Q    Max 
# -6.012 -2.323 -0.361  1.493  9.605 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept) 24.3159074  2.6354288   9.227 3.09e-15 ***
# Solar.R      0.0009228  0.0035281   0.262    0.794    
# Temp        -0.1900820  0.0369159  -5.149 1.21e-06 ***
# Month        0.0313046  0.2280600   0.137    0.891    
# Day          0.0008969  0.0346116   0.026    0.979    
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 3.143 on 106 degrees of freedom
#   (42 observations deleted due to missingness)
# Multiple R-squared:  0.2477,  Adjusted R-squared:  0.2193 
# F-statistic: 8.727 on 4 and 106 DF,  p-value: 3.961e-06

summary(lm(Wind ~ Solar.R + Temp + Wind + Month + Day, data = airquality))
# 
# Call:
# lm(formula = Wind ~ Solar.R + Temp + Wind + Month + Day, data = airquality)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -8.1779 -2.2063 -0.2757  1.9448  9.3510 
# 
# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)    
# (Intercept) 23.660271   2.416766   9.790  < 2e-16 ***
# Solar.R      0.002980   0.003113   0.957    0.340    
# Temp        -0.186386   0.032725  -5.695 6.89e-08 ***
# Month        0.074952   0.206334   0.363    0.717    
# Day         -0.011028   0.030304  -0.364    0.716    
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 3.158 on 141 degrees of freedom
#   (7 observations deleted due to missingness)
# Multiple R-squared:  0.2125,  Adjusted R-squared:  0.1901 
# F-statistic: 9.511 on 4 and 141 DF,  p-value: 7.761e-07
摘要(lm(风-臭氧,数据=空气质量))
# 
#电话:
#lm(公式=风-臭氧,数据=空气质量)
# 
#残差:
#最小1季度中值3季度最大值
# -6.012 -2.323 -0.361  1.493  9.605 
# 
#系数:
#估计标准误差t值Pr(>t)
#(截距)24.3159074 2.6354288 9.227 3.09e-15***
#Solar.R 0.0009228 0.0035281 0.262 0.794
#温度-0.1900820 0.0369159-5.149 1.21e-06***
#月份0.0313046 0.2280600 0.137 0.891
#第0.0008969天0.0346116 0.026 0.979
# ---
#签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
# 
#剩余标准误差:106个自由度上的3.143
#(由于缺失,删除了42项观察结果)
#多重R平方:0.2477,调整后的R平方:0.2193
#F-统计量:4和106 DF上的8.727,p-值:3.961e-06
汇总(lm(风~太阳能.R+温度+风+月+日,数据=空气质量))
# 
#电话:
#lm(公式=风能~太阳能.R+温度+风能+月+日,数据=空气质量)
# 
#残差:
#最小1季度中值3季度最大值
# -8.1779 -2.2063 -0.2757  1.9448  9.3510 
# 
#系数:
#估计标准误差t值Pr(>t)
#(截距)23.660271 2.416766 9.790<2e-16***
#Solar.R 0.002980.003113 0.957 0.340
#温度-0.186386 0.032725-5.695 6.89e-08***
#月份0.074952 0.206334 0.363 0.717
#第-0.011028 0.030304-0.364 0.716天
# ---
#签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
# 
#剩余标准误差:141个自由度上的3.158
#(7因缺失而删除的观察结果)
#倍数R平方:0.2125,调整后的R平方:0.1901
#F-统计量:4和141 DF上的9.511,p-值:7.761e-07

风的确令人遗憾和惊讶臭氧在发现完整病例时考虑臭氧;似乎值得讨论
r-devel@r-org
邮件列表,如果你想继续。与此同时,你觉得呢

 summary(lm(Wind ~ ., data = subset(airquality, select=-Ozone))

在您的第一种情况下,似乎
臭氧
已从分析中删除,但存在于公式中,因此带有
臭氧
的行仍将被删除。在第二种情况下,
Ozone
不是公式,因此完全忽略
Ozone
NA
s。如果要删除的变量没有
NA
值,则这些方法完全相同。是的,我同意。但是,如何才能以比手动指定要包含的变量更有效的方式去除臭氧呢?我喜欢
~。-
我非常喜欢这个问题。通过
stats::model.frame.default
(即完成案例计算的地方)进行调试,我们发现
术语(Wind~.-Ozone)
的结果确实在其变量列表中包含
Ozone
。这对我来说似乎是错误的,但如此深入人心,以至于我认为它不会被改变……很好的方法,感谢
r上的建议-devel@r-org
list。我也要把问题发过去。