R:mice()如何知道要插补哪个变量?

R:mice()如何知道要插补哪个变量?,r,machine-learning,r-mice,R,Machine Learning,R Mice,我在R中发现了一些利用范德比尔特泰坦尼克号数据集研究机器学习的代码。这是课堂的一部分,没有现场讲师或其他资源来回答我自己的问题。这个练习的最终目标是根据其他观察数据预测生存率。我们将数据分为训练集和测试集,运行str(training)返回: > str(training) 'data.frame': 917 obs. of 14 variables: $ pclass : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1

我在R中发现了一些利用范德比尔特泰坦尼克号数据集研究机器学习的代码。这是课堂的一部分,没有现场讲师或其他资源来回答我自己的问题。这个练习的最终目标是根据其他观察数据预测生存率。我们将数据分为训练集和测试集,运行
str(training)
返回:

> str(training)
'data.frame':   917 obs. of  14 variables:
 $ pclass   : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
 $ survived : Factor w/ 2 levels "0","1": 2 2 1 1 2 2 1 2 2 2 ...
 $ name     : chr  "Allen, Miss. Elisabeth Walton" "Allison, Master. Hudson Trevor" "Allison, Miss. Helen Loraine" "Allison, Mrs. Hudson J C (Bessie Waldo Daniels)" ...
 $ sex      : Factor w/ 2 levels "female","male": 1 2 1 1 2 1 2 1 1 1 ...
 $ age      : num  29 0.92 2 25 48 63 71 18 24 26 ...
 $ sibsp    : int  0 1 1 1 0 1 0 1 0 0 ...
 $ parch    : int  0 2 2 2 0 0 0 0 0 0 ...
 $ ticket   : chr  "24160" "113781" "113781" "113781" ...
 $ fare     : num  211.3 151.6 151.6 151.6 26.6 ...
 $ cabin    : chr  "B5" "C22 C26" "C22 C26" "C22 C26" ...
 $ embarked : Factor w/ 4 levels "","C","Q","S": 4 4 4 4 4 4 2 2 2 4 ...
 $ boat     : chr  "2" "11" "" "" ...
 $ body     : int  NA NA NA NA NA NA 22 NA NA NA ...
 $ home.dest: chr  "St Louis, MO" "Montreal, PQ / Chesterville, ON" "Montreal, PQ / Chesterville, ON" "Montreal, PQ / Chesterville, ON" ...
我的问题有两方面。该过程的第一步是标记“因子变量”并将其应用于函数,如下所示:

  • 为什么选择特定的变量子集作为
    插补变量
    ?什么是包含诸如
    sex
    而不是
    boat
    之类内容的基础
  • 为什么我们要在
    mice()
    函数中对训练数据进行子集设置,使其仅作用于
    impute\u变量
  • mices\u model
    返回的输出为:

    iter imp变量
    1岁
    12岁
    13岁
    14岁
    15岁
    21岁
    2岁
    2.3岁
    2.4岁
    2.5岁
    3.1岁
    3.2岁
    3岁
    3.4岁
    35岁
    4.1岁
    4.2岁
    4.3岁
    4岁
    4.5岁
    5.1岁
    5.2岁
    5.3岁
    5.4岁
    5岁


  • 在上述任何代码中,我们在哪里明确地告诉了
    mices()
    函数来估算年龄

    简短回答:本课程的讲师通常会给出模棱两可、令人困惑的例子


    长答案:正如拉普所指出的,
    mices()
    会输入任何变量。在这个特殊的例子中,泰坦尼克号数据集只有一列缺少任何值-
    age
    。为什么讲师选择在插补中任意包含其他变量,这是任何人的猜测。他没有在书中解释他为什么这么做。

    据我所知,
    mices()
    使用子集来插补每个包含变量中的所有
    NA
    。这是我一直在思考的理论,但是为什么
    mices\u模型本身只显示
    age
    变量上的插补?我如何将这个问题标记为关闭?你是对的,在这个数据集中,年龄是唯一缺少值的变量。我想我还是想知道为什么一些值被选择来插补其他值。。。特别是如果只有一个变量需要插补。老实说,这门课很垃圾,我遇到过几个模棱两可、不清楚的例子,就像这样只要接受你自己的答案,就可以了。谢谢。为了证实这一点,我在
    pclass
    列中运行了一个替换来填充一些
    NA
    值,
    mices()
    同时填充了这两个值。谢谢你对一个新手这么好!如果在
    插补变量中只包含
    年龄
    ,那么
    小鼠
    是否给出了不同的答案?是的。它给出了一个错误,
    数据应该是矩阵或数据帧。插补至少需要包含1个其他变量
    mice()
    既使用impute_变量来插补缺失值,也在插补它们自己的缺失值。
    factor_vars <- c('pclass', 'sex', 'embarked', 'survived')
    training[factor_vars] <- lapply(training[factor_vars], function(x) as.factor(x))
    
    impute_variables <- c('pclass', 'sex', 'age', 'sibsp', 'parch', 'fare', 'embarked')
    mice_model <- mice(training[,impute_variables], method='rf')