R - MICE использует объединенный оценочный коэффициент для прогнозирования пропущенного значения - PullRequest
0 голосов
/ 27 марта 2020

Я работаю с большой частью недостающих данных из Kaggle для некоторых исследований https://www.kaggle.com/mohalim/video-games-sales. Тем не менее, данные ужасно имеют большую часть пропущенного значения в большинстве столбцов ~ 80% -90%. Я считаю, что MICE в R может помочь вписать пропущенное значение из набора данных.

После того, как я обработал данные, такие как удаление строк со всем значением N / A, преобразовал данные в числовое значение и начал вменять его с помощью: imputed_Data <- mice(processed_dataset, m=5, maxit = 20, method = 'pmm', seed = 500)

Я получаю 5 разных наборов полного набора данных. Мне нужен полный набор данных, о чем я думаю:

  1. Просто выберите 1 из 5 в качестве моего полного набора данных.
  2. Вычислите среднее значение из 5 установленных данных в одно значение, чтобы заменить отсутствующее значение.

Однако ни один из этих 2 не является хорошим решением, так как я изучаю некоторые упомянутые статьи. Рекомендуемый способ - сделать with() и pool(), чтобы построить модель для анализа. Я исследую некоторые примеры, но после выполнения pool() я могу получить список коэффициентов, std error..et c. Как я могу использовать эти значения, чтобы сгенерировать недостающее значение для построения полного набора данных?

Что я делаю сейчас, так это чтобы все столбцы имели числовое значение, вменяли его и объединяли вмененные данные, используя множественную линейную регрессию чтобы получить объединенный коэффициент. Например, значение tot_ship:

tot_ship_fit = with(data = imputed_Data, exp = lm(tot_ship ~ 0 + user_Score + na_sale + pal_sale + jp_sale + other_sale + VGscore))

pooled_tot_ship = pool(tot_ship_fit)

Выход:

term estimate std.error statistic df p.value 1 user_Score -0.06155977 0.0920140 -0.6690261 4.486961 0.5363411 2 na_sale 2.34458158 3.3788532 0.6938986 2.998705 0.5376690 3 pal_sale -0.49664797 1.9800498 -0.2508260 3.858425 0.8147363 4 jp_sale 3.58647568 4.8990448 0.7320765 3.277330 0.5129870 5 other_sale 1.43796506 4.2434543 0.3388666 3.946106 0.7519732 6 VGscore 0.19046582 0.1500309 1.2695102 4.192459 0.2701552

Таким образом, в в этом случае я получаю средний коэффициент из 5 stes для tot_ship и могу использовать коэффициент с формулой tot_ship ~ 0 + user_Score + na_sale + pal_sale + jp_sale + other_sale + VGscore для вычисления моего пропущенного значения tot_ship в наборе данных.

Например, в данных есть эта запись:

userScore tot_ship na_sale pal_sale jp_sale other_sale VGscore NA NA 6.37 9.85 0.99 3.12 NA

Таким образом, мой итог будет (при условии, что NA равен 0):

tot_ship = -0.06155977(0) + 2.34458158(6.37) + 2.34458158(9.85) + -0.49664797(0.99) + 1.43796506(3.12) + 0.19046582(0) = ~17.99

Аналогично для user_Score, na_sale ... et c Я делаю то же самое, чтобы получить коэффициент, заменив пропущенное значение формулой. Я не уверен, что я делаю правильно, потому что данные выглядят странно для меня.

Мой вопрос:

  1. Использую ли я правильный способ для вычисления отсутствующих данных ? После того как я попробовал это, я обнаружил, что некоторые значения не имеют смысла, например, отрицательные или почти близкие к 0.

  2. Могу ли я просто выбрать 1 вмененный набор в качестве моего полного набора, кажется, замененное значение имеет больше смысла? какие-либо оправдания для этого?

Пожалуйста, сообщите. Спасибо.

...