У меня очень большой набор данных и около 5% случайных значений отсутствуют. Эти переменные связаны друг с другом. В следующем примере набор данных R - просто игрушечный пример с фиктивными коррелированными данными.
set.seed(123)
# matrix of X variable
xmat <- matrix(sample(-1:1, 2000000, replace = TRUE), ncol = 10000)
colnames(xmat) <- paste ("M", 1:10000, sep ="")
rownames(xmat) <- paste("sample", 1:200, sep = "")
#M variables are correlated
N <- 2000000*0.05 # 5% random missing values
inds <- round ( runif(N, 1, length(xmat)) )
xmat[inds] <- NA
> xmat[1:10,1:10]
M1 M2 M3 M4 M5 M6 M7 M8 M9 M10
sample1 -1 -1 1 NA 0 -1 1 -1 0 -1
sample2 1 1 -1 1 0 0 1 -1 -1 1
sample3 0 0 1 -1 -1 -1 0 -1 -1 -1
sample4 1 0 0 -1 -1 1 1 0 1 1
sample5 NA 0 0 -1 -1 1 0 NA 1 NA
sample6 -1 1 0 1 1 0 1 1 -1 -1
sample7 NA 0 1 -1 0 1 -1 0 1 NA
sample8 1 -1 -1 1 0 -1 -1 1 -1 0
sample9 0 -1 0 -1 1 -1 1 NA 0 1
sample10 0 -1 1 0 1 0 0 1 NA 0
Есть ли (лучший) способ вменять пропущенные значения в этой ситуации? Полезен ли алгоритм случайного леса? Любое рабочее решение в R будет высоко ценится.
Редактирование:
(1) Пропущенные значения случайным образом распределены среди переменных и samples.As числа переменных является очень большим (здесь в примере - 10000), в то время как число выборок мало здесь , в приведенном выше примере фиктивной она составляет около 200. Поэтому , когда мы смотрим на любую выборку по всем переменным (10000), есть большие шансы, что будет отсутствовать значение для некоторой переменной - из-за большого количества переменных. Так что просто удалить образец не вариант.
(2) Переменная может рассматриваться как количественная или качественная (двоичная) в процессе вменения. Единственное суждение - насколько хорошо мы можем предсказать это (точность). Таким образом, такие прогнозы, как 0,98 вместо 1, могут быть приемлемыми, а не 0 против 1 или -1 против 1. Мне может потребоваться компромисс между временем и точностью вычислений.
(3) У меня есть проблема, как переоснащение может повлиять на результаты, так как количество переменных велико по сравнению с количеством выборок.
(4) Поскольку общее количество пропущенных значений составляет около 5% и является случайным (не сконцентрировано ни в каких переменных или выборках, поэтому были приняты меры предосторожности для удаления переменных или выборок, которые имеют очень высокие пропущенные значения)
(5) Подготовка данных для анализа является первой целью, а точность - вторичной. Так что не слишком чувствителен к точности.