У мене дуже великий набір даних, і близько 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
Чи існує (найкращий) спосіб вписати пропущені значення в цій ситуації? Чи корисний алгоритм Random Forest? Будь-яке робоче рішення в R буде дуже вдячним.
Зміни:
(1) Пропущені значення випадковим чином розподілені серед змінних і samples.As числа змінних є дуже великим (тут в прикладі - 10000), в той час як число вибірок мало тут , в наведеному вище прикладі фіктивної вона становить близько 200. Тому , коли ми дивимось будь-яку вибірку за всіма змінними (10000), є велика ймовірність того, що у якоїсь змінної буде відсутнє значення - через велику кількість змінних. Тому просто видалити зразок - це не варіант.
(2) Змінна може трактуватися як кількісною, так і якісною (бінарною) у процесі імпультування. Єдине судження - наскільки добре ми можемо це передбачити (точність). Тож прогнози на зразок 0,98 замість 1 можуть бути прийнятними, а не 0 проти 1 або -1 проти 1. Мені може знадобитися компроміс між часом обчислень та точністю.
(3) Я замислююся над питанням, як перевитрата може вплинути на результати, оскільки кількість змінних велика порівняно з кількістю вибірок.
(4) Оскільки загальна кількість пропущених значень становить близько 5% і є випадковою (не концентрується в жодних змінних чи зразках, оскільки вжито заходів обережності для видалення змінних або зразків, які мають дуже високі відсутні значення)
(5) Здійснення повних даних для аналізу є першим об'єктивним, а точність - другорядною. Тож не надто чутливі до точності.