Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从模型性能计算中排除缺少的值_R_Missing Data_R Caret_Imputation - Fatal编程技术网

R 从模型性能计算中排除缺少的值

R 从模型性能计算中排除缺少的值,r,missing-data,r-caret,imputation,R,Missing Data,R Caret,Imputation,我有一个数据集,我想建立一个模型,最好使用caret包。我的数据实际上是一个时间序列,但问题不是特定于时间序列,只是我使用CreateTimeSlices进行数据分区 我的数据中有一定数量的缺失值NA,我将它们与caret代码分开计算。我还记录了他们的位置: # a logical vector same size as the data, which obs were imputed NA imputed=c(FALSE, FALSE, FALSE, TRUE, FALSE, FALSE) i

我有一个数据集,我想建立一个模型,最好使用
caret
包。我的数据实际上是一个时间序列,但问题不是特定于时间序列,只是我使用
CreateTimeSlices
进行数据分区

我的数据中有一定数量的缺失值
NA
,我将它们与
caret
代码分开计算。我还记录了他们的位置:

# a logical vector same size as the data, which obs were imputed NA
imputed=c(FALSE, FALSE, FALSE, TRUE, FALSE, FALSE)
imputed[imputed] <- NA; print(imputed)
#### [1] FALSE FALSE FALSE    NA FALSE FALSE

我如何在插入符号中处理这种方式?或者有没有其他方法可以避免手工编码

我不知道您是否在寻找这个,但这里有一个简单的解决方案,创建一个函数

i=which(imputed==F) ## As you have index for NA values

metric_na=function(fun, actual, predicted, index){
    fun(actual[index], predicted[index])
}

metric_na(Metrics::rmse, actual, predicted, index = i)
0.676757
metric_na(Metrics::mae, actual, predicted, index = i)
0.54
此外,您还可以在计算所需指标时直接使用索引

Metrics::rmse(actual[i], predicted[i])

对我来说,听起来像是需要自定义代码,而不是插入符号。我也想过使用
weights
参数,但不清楚何时考虑到它。谢谢,这是一个非常有用的函数,我肯定会实现它,没有人认为它可能与插入:-)我认为这是可能的,但它需要一些努力。若你们并没有读过,也可以看看帖子。
Metrics::rmse(actual[i], predicted[i])