使用 caret 创建训练和测试数据时缺少值

问题描述 投票:0回答:1

我的问题是关于在使用 train 来拟合带插入符号的模型时如何处理缺失值。 我的一小部分数据就是这样的:

       df <- dput(dat)
       structure(list(LagO3 = c(NA, NA, NA, 40, 45, NA), RH = c(69.4087524414062, 
       79.9608383178711, 64.4592437744141, 66.4207077026367, 66.0899200439453, 
       91.3353729248047), SR = c(298.928888888889, 300.128888888889, 
       303.688888888889, 304.521111111111, 303.223333333333, 294.716666666667
       ), ST = c(317.9917578125, 317.448253038194, 311.039059244792, 
       312.557927517361, 321.252841796875, 330.512212456597), Tmx = c(294.770359293045, 
       294.897191864461, 295.674552786042, 296.247345044048, 296.108238352818, 
       294.594430242372), CWTE = c(0, 1, 0, 0, 0, 0), CWTW = c(0, 0, 
       0, 0, 0, 0), o3 = c(NA, NA, NA, 52, 55, NA)), .Names = c("LagO3", 
       "RH", "SR", "ST", "Tmx", "CWTE", "CWTW", "o3"), row.names = c("1", 
       "2", "3", "4", "5", "6"), class = "data.frame")

问题是,对于我的一个预测变量中的几个位置,我有 NA,而预测变量 (o3) 也有 NA(但在不同的位置)。然后,我尝试了:

model <- train(x = na.omit(x.training), y = na.omit(training$o3), method = "lmStepAIC",
               direction="backward", trControl = control)

但是,我会有不同的长度...... 我尝试使用:

 model <- train(x = x.training, y = training$o3,na.action=na.pass, 
                method = "lmStepAIC",direction="backward",trControl = control)

出现以下错误:

quantile.default(y, probs = seq(0, 1, length = cuts)) 错误: 如果 'na.rm' 为 FALSE

,则不允许缺失值和 NaN

如有任何建议,我将不胜感激!

非常感谢

r statistics r-caret
1个回答
4
投票

您需要将

na.action
参数与na.omit
函数的
train
一起使用。正如文档所说的
na.action
(类型
?train
):

一个函数,用于指定在找到 NA 时要采取的操作。默认操作是程序失败。另一种方法是 na.omit,它会拒绝在任何必需变量上具有缺失值的案例。 (注意:如果给定,则必须命名此参数。)

所以以下将起作用:

model <- train(x = x.training, y = training$o3, 
              method = "lmStepAIC",direction="backward", 
              trControl = control, na.action=na.omit)

输出:

> model <- train(x = x.training, y = y.training, method = "lmStepAIC",direction="backward",
+                na.action=na.omit)
Start:  AIC=-129.7
.outcome ~ LagO3 + RH + SR + ST + Tmx + CWTE + CWTW


Step:  AIC=-129.7
.outcome ~ LagO3 + RH + SR + ST + Tmx + CWTE


Step:  AIC=-129.7
.outcome ~ LagO3 + RH + SR + ST + Tmx


Step:  AIC=-129.7
.outcome ~ LagO3 + RH + SR + ST


Step:  AIC=-129.7
.outcome ~ LagO3 + RH + SR


Step:  AIC=-129.7
.outcome ~ LagO3 + RH


Step:  AIC=-129.7
.outcome ~ LagO3


Step:  AIC=-129.7
.outcome ~ 1
...
...
...
© www.soinside.com 2019 - 2024. All rights reserved.