【发布时间】:2022-01-22 15:08:04
【问题描述】:
作为一个新的 R 用户,我无法理解为什么我的数据框中的 NA 值不断变化。我在 Kaggle 上运行我的代码。也许这就是我的问题所在?
Original dataframe titled "abc"
有多个列具有 NA 值,因此我决定尝试使用多重插补来处理 na 值。
所以我创建了一个新数据框,其中仅包含具有 na 值的列并开始插补 This is the new dataframe titled "abc1"
abc1 <- select(abc, c(9,10,15,16,17,18,19,25,26))
#mice imputation
input_data = abc1
my_imp = mice(input_data, m=5, method="pmm", maxit=20)
summary(input_data$m_0_9)
my_imp$imp$m_0_9
当插补开始时,它会创建 5 个包含新值的列,以填充 m_0_9 列的 NA 值,然后我选择哪一列。
然后我运行这段代码:
final_clean_abc1 <- complete(my_imp,5)
这会将最后一张图像的第 5 列的值分配给我的“abc1”数据帧中的 NA 值,并保存为“final_clean_abc1”。
最后,我用“final_clean_abc1”中的新列替换原始“abc”数据框中缺失值的列。
我知道这可能不是最干净的:
abc$m_0_9 <- final_clean_abc1$m_0_9
abc$m_10_12 <- final_clean_abc1$m_10_12
abc$f_0_9 <- final_clean_abc1$f_0_9
abc$f_10_12 <- final_clean_abc1$f_10_12
abc$f_13_14 <- final_clean_abc1$f_13_14
abc$f_15 <- final_clean_abc1$f_15
abc$f_16 <- final_clean_abc1$f_16
abc$asian_pacific_islander <- final_clean_abc1$asian_pacific_islander
abc$american_indian <- final_clean_abc1$american_indian
现在我有一个没有缺失值的数据框“abc”,这就是我的问题出现的地方。我应该在 m_0_9 列的第 10 行看到“162”,但是当我保存我的代码并在 Kaggle 上查看它时,我得到该特定行和列的值“7”。如下图所示。
"abc" dataframe with no NA values
希望这是有道理的,我尽量做到具体。
【问题讨论】:
-
欢迎!请务必使用
dput(your_data)或dput(head(your_data))制作your example reproductible,而不是截图,其他人无法使用 -
首先,我希望您知道您使用鼠标的方式并不规范:多重插补意味着您同时使用多个插补,而不是只选择一个插补。这个想法是,几个插补之间的方差代表了您对缺失值的不确定性。你这样做的方式,就像你真的知道缺失值一样。无论如何,关于你的问题:我不知道 Kaggle 做了什么,但也许它会在保存/查看时重新运行你的代码,改变
mice使用的随机数。尝试在使用mice()之前设置种子,如下所示:set.seed(123)
标签: r dataframe imputation r-mice