Stephan Kolassa'nın gönderisini takip ederek (bunu yorum olarak ekleyemiyorum), bir simülasyon için bazı alternatif kodlarım var. Bu aynı temel yapıyı kullanır, ancak biraz daha patlar, bu yüzden okumak biraz daha kolaydır. Ayrıca Kleinman ve Horton'un kodlarına dayanmaktadır. lojistik regresyonu simüle etmek için .
nn, örnekteki sayıdır. Değişken sürekli olarak normal şekilde dağıtılmalı ve 0 ve sd 1 olarak standartlaştırılmalıdır. Bunu oluşturmak için rnorm (nn) kullanıyoruz. Bir oran oranı seçiyoruz ve odds.ratio'da saklıyoruz. Ayrıca kesme için bir numara seçiyoruz. Bu sayının seçimi, numunenin hangi oranının "olay" yaşadığını yönetir (örn. 0.1, 0.4, 0.5). Doğru oranı elde edene kadar bu numarayla oynamalısınız. Aşağıdaki kod, 950 örnek boyutu ve 1,5 OR değeri ile 0,1 oranını verir:
nn <- 950
runs <- 10000
intercept <- log(9)
odds.ratio <- 1.5
beta <- log(odds.ratio)
proportion <- replicate(
n = runs,
expr = {
xtest <- rnorm(nn)
linpred <- intercept + (xtest * beta)
prob <- exp(linpred)/(1 + exp(linpred))
runis <- runif(length(xtest),0,1)
ytest <- ifelse(runis < prob,1,0)
prop <- length(which(ytest <= 0.5))/length(ytest)
}
)
summary(proportion)
özet (oran) oranın ~ 0.1 olduğunu doğrular
Daha sonra aynı değişkenleri kullanarak, güç 10000 çalıştırmada hesaplanır:
result <- replicate(
n = runs,
expr = {
xtest <- rnorm(nn)
linpred <- intercept + (xtest * beta)
prob <- exp(linpred)/(1 + exp(linpred))
runis <- runif(length(xtest),0,1)
ytest <- ifelse(runis < prob,1,0)
summary(model <- glm(ytest ~ xtest, family = "binomial"))$coefficients[2,4] < .05
}
)
print(sum(result)/runs)
Bu kodun doğru olduğunu düşünüyorum - Hsieh, 1998'de verilen örneklere göre kontrol ettim (tablo 2) ve orada verilen üç örneğe katılıyor gibi görünüyor. Ayrıca Hosmer ve Lemeshow'un p 342 - 343'teki örneğe karşı test ettim, burada 0.75'lik bir güç buldu (Hosmer ve Lemeshow'daki 0.8'e kıyasla). Bu nedenle, bazı durumlarda bu yaklaşım gücü hafife alır. Ancak, bu çevrimiçi hesap makinesinde aynı örneği çalıştırdığımda Hosmer ve Lemeshow'daki sonucu değil, benimle aynı fikirde olduğunu gördüm.
Biri bize bunun neden böyle olduğunu söyleyebilirse bilmek isterim.