Bir lm modelinin özel bir güç analizini simüle etme (R kullanarak)


13

Burada yaşadığımız son soruların ardından .

Kimse rastlamak ya da doğrusal bir model için simülasyon dayalı özel bir güç analizi gerçekleştirmek için R kodunu paylaşmak bilmek umuyordum ?

Daha sonra bunu daha karmaşık modellere genişletmek istiyorum, ama lm başlamak için doğru yer gibi görünüyor. Teşekkürler.

Yanıtlar:


4

Basit bir regresyon modeli için simülasyona ihtiyacınız olduğundan emin değilim. Örneğin, Taşınabilir Güç belgesine bakın . Daha karmaşık modeller, özellikle karışık efektler için, R'deki pamm paketi simülasyonlar yoluyla güç analizleri gerçekleştirir. Ayrıca , simülasyon için R koduna sahip Todd Jobe'un gönderisine de bakın .


1
Taşınabilir Güç bağlantısı kopuk. Birisi bağlantıyı güncelleyebilirse, bu harika olurdu. Teşekkür.
Brian P

3

İşte R'deki simülasyon kodu birkaç kaynağı: Herhangi bir özel olarak doğrusal modelleri ele alıp almadığından emin değilim, ama belki de özü elde etmek için yeterli bir örnek sağlıyorlar:

  • Benjamin Bolker R ile Ekolojik Veriler ve Modeller adlı harika bir kitap yazdı . Sweave kodu ile birlikte tüm kitabın erken bir taslağı çevrimiçi olarak mevcuttur. 5. Bölümde güç analizi ve simülasyon ele alınmaktadır.

Aşağıdaki sitelerde bir kaç simülasyon örneği daha var:


0

Bolker 2009 Ekolojik Modeller ve R'den Veriler. Sezgisel olarak güçlü bir eğilim ve düşük değişkenlik, küçük bir numune boyutu, zayıf bir eğilim ve büyük değişkenlik, büyük bir numune boyutu gerektirir.

a = 2  #desired slope
b = 1  #estimated intercept
sd = 20  #estimated variability defined by standard deviation
nsim = 400  #400 simulations
pval = numeric(nsim)  #placeholder for the second for loop output
Nvec = seq(25, 100, by = 1)  #vector for the range of sample sizes to be tested
power.N = numeric(length(Nvec))   #create placeholder for first for loop output
for (j in 1:length(Nvec)) {
  N = Nvec[j]  
  x = seq(1, 20, length = Nvec[j])  #x value length needs to match sample size (Nvec) length
  for (i in 1:nsim) {   #for this value of N, create random error 400 times
    y_det = a + b * x
    y = rnorm(N, mean = y_det, sd = sd)
    m = lm(y ~ x)
    pval[i] = coef(summary(m))["x", "Pr(>|t|)"]  #all the p values for 400 sims
  }  #cycle through all N values
  power.N[j] = sum(pval < 0.05)/nsim  #the proportion of correct p-values (i.e the power)
}
power.N
plot(Nvec, power.N)  #need about 90 - 100 samples for 80% power

Kitapta gösterildiği gibi, belirli bir örnek boyutu için test edebileceğiniz minimum eğilimin ne olduğunu da simüle edebilirsiniz.

bvec = seq(-2, 2, by = 0.1)
power.b = numeric(length(bvec))
for (j in 1:length(bvec)) {
  b = bvec[j]
   for (i in 1:nsim) {
     y_det = a + b * x
     y = rnorm(N, mean = y_det, sd = sd)
     m = lm(y ~ x)
     pval[i] = coef(summary(m))["x", "Pr(>|t|)"]
     }
   power.b[j] = sum(pval < 0.05)/nsim
  }
 power.b
 plot(bvec, power.b)
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.