R MICE veri ithalatı için çalışma süresi nasıl geliştirilir


9

Kısacası sorum: R MICE'ın çalışma süresini iyileştirmek için yöntemler var mı?

(Oldukça rasgele) eksik veri içeren bir veri kümesi (30 değişken, 1.3 milyon satır) ile çalışıyorum. 30 değişkenin yaklaşık 15'inde gözlemlerin yaklaşık% 8'i NA içerir. Eksik verileri engellemek için, MICE paketinin bir parçası olan MICE işlevini çalıştırıyorum .

Yöntem = "fastpmm" ve m = 1 ile bir alt kümede (100.000 satır) bile oldukça yavaş çalışma süresi yaşıyorum ve yaklaşık 15 dakika çalışır.

Performansta çok fazla kaybetmeden çalışma süresini iyileştirmenin bir yolu var mı? (mouse.impute.mean oldukça hızlıdır, ancak önemli bilgi kaybı ile birlikte gelir!).

Tekrarlanabilir kod:

library(mice)
df <- data.frame(replicate(30,sample(c(NA,1:10),1000000,rep=TRUE)))
df <- data.frame(scale(df))

output <- mice(df, m=1, method = "fastpmm")

1
Genel olarak: bu tür sorular Çapraz Onaylı için uygun mu yoksa Yığın Taşması için daha mı uygun?
Dendrobates

3
Bir karar çağrısı olabilir. (Genel bir ilke olarak) çalışma sürelerindeki en önemli gelişmeler temel algoritmaları anlayarak elde edildiğinden, insanların gerçekten alternatif yaklaşımlar önerebileceği bir toplulukta gerçekten etkili bir cevap alma şansınızın en iyi şekilde olmasını bekliyorum. . Bir veya iki gün içinde yeterli cevap alamazsanız, bu gönderiyi taşıma için işaretleyin ve bunu SO'ya göndeririz (bu arada toplamış olabileceği cevaplar ve yorumlarla birlikte).
whuber

1
'Fastppm' seçeneğini 'norm' olarak değiştirebilirsiniz, daha hızlı olacak
marc1s

1
Thx @ marc1s, büyük veri kümeleri için çok şey geliştirdi. 10.000 sıralı rastgele bir veri çerçevesi (yukarıdaki gibi) için "norm" yöntemi "fastpmm" den yaklaşık 4 kat daha hızlıdır. 50.000 satırla 12 kat daha hızlıydı. Bu nedenle, çalışma süresindeki göreceli kazanç, satır sayısı ile artmaktadır.
Dendrobates

1
Çalıştıracağınız modele bağlı olarak, model doğru bir şekilde belirtilirse, asimtotik olarak çarpışma ile eşdeğer olan maksimum olabilirlik (veya tam bilgi maksimum olabilirlik) tahminini kullanmak daha hızlı olabilir. İşte dahil olduğum, farklı yöntemleri karşılaştıran bir makale: emeraldinsight.com/doi/abs/10.1108/JCP-02-2015-0007
Jeremy Miles

Yanıtlar:


4

Sen kullanabilirsiniz quickpred()dan micesen belirterek belirleyicilerini sınırlamak hangi kullanarak paketin Mincor (Minimum korelasyon) ve minpuc (kullanılabilen vakaların oranı). Ayrıca, tahminleri kontrol etmek için hariç tutma ve dahil etme parametrelerini kullanabilirsiniz.


2

Ben için bir sarıcı yapılan micebir ilave argüman içerir fonksiyonu droplistsize anlamına tahmini değişkenleri bir karakter vektör geçebilir değil töhmet formüllerin sağ tarafında kullanılan istediğiniz. Bu, hız içindi, çünkü birçok seviyedeki faktör değişkenlerinin imputasyonu önemli ölçüde yavaşlatacağını buldum . quickpred@Aanish tarafından başvurulan işlevin farkında değildim ve belki de her iki kavramı da birlikte kullanabilirsiniz.

Aşağıda glmmplus paketimde göründüğü gibi bir işlev var . Yararlı bulursanız, gerçek micepakette bir çekme isteği açabilirim .

ImputeData <- function(data, m = 10, maxit = 15, droplist = NULL) {
  if (length(intersect(names(data), droplist)) < length(droplist)) {
    stop("Droplist variables not found in data set")
  }
  predictorMatrix <- (1 - diag(1, ncol(data)))
  for (term in droplist) {
  drop.index <- which(names(data) == term)
    predictorMatrix[, drop.index] <- 0
  }
  mids.out <- mice(data, m = m, maxit = maxit,
                   predictorMatrix = predictorMatrix)
  return(mids.out)
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.