gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:48:12 25 4
gpt4 key购买 nike

我在 R 中发现了一些利用范 Derby 尔特泰坦尼克号数据集研究机器学习的代码 HERE 。这是类(class)的一部分,没有现场讲师或其他资源来回答我自己的问题。这项练习的最终目标是根据其他观察到的数据来预测生存率。我们将数据分为训练集和测试集,并运行 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" ...

我的问题是双重的。此过程的第一步是标记函数并将其应用于“因子变量”,如下所示:

factor_vars <- c('pclass', 'sex', 'embarked', 'survived')
training[factor_vars] <- lapply(training[factor_vars], function(x) as.factor(x))

我了解factor_vars在这里赋值,因为这些变量被清楚地标记为 Factor调用str(training)时。我的问题是我们为什么要运行 lapply功能?看来它只是将因子变量分类为因子。 training[factor_vars] <- lapply(training[factor_vars], function(x) as.factor(x)) 中到底发生了什么?行代码?

下一步是估算缺失的变量 age

impute_variables <- c('pclass', 'sex', 'age', 'sibsp', 'parch', 'fare', 'embarked')
mice_model <- mice(training[,impute_variables], method='rf')
  1. 为什么特定的变量子集被选为 impute_variables ?包含诸如 sex 之类的内容的基础是什么?但不是boat
  2. 为什么我们要在 mice() 中对训练数据进行子集化函数仅作用于 impute_variables列?
  3. mice_model 返回的输出是:

    iter imp variable
    1 1 age
    1 2 age
    1 3 age
    1 4 age
    1 5 age
    2 1 age
    2 2 age
    2 3 age
    2 4 age
    2 5 age
    3 1 age
    3 2 age
    3 3 age
    3 4 age
    3 5 age
    4 1 age
    4 2 age
    4 3 age
    4 4 age
    4 5 age
    5 1 age
    5 2 age
    5 3 age
    5 4 age
    5 5 age

在上述任何代码中,我们明确告诉 mice()估算年龄的函数?

最佳答案

简短回答:类(class)讲师经常给出含糊不清且令人困惑的示例。

长答案:正如 LAP 所指出的,mice() 确实会估算输入其中的任何变量。在这种特殊情况下,泰坦尼克号数据集只有一列包含任何缺失值 - age。任何人都可以猜测为什么讲师选择在插补中任意包含其他变量。他在书中没有解释为什么要这么做。

关于R:mice() 如何知道要插补哪个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49564629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com