Di R
, ada tiga metode untuk memformat data input untuk regresi logistik menggunakan glm
fungsi:
- Data dapat dalam format "biner" untuk setiap pengamatan (misalnya, y = 0 atau 1 untuk setiap pengamatan);
- Data dapat dalam format "Wilkinson-Rogers" (misalnya,
y = cbind(success, failure)
) dengan setiap baris mewakili satu perlakuan; atau - Data dapat dalam format tertimbang untuk setiap pengamatan (misalnya, y = 0,3, bobot = 10).
Ketiga pendekatan menghasilkan estimasi koefisien yang sama, tetapi berbeda dalam derajat kebebasan dan menghasilkan nilai penyimpangan dan skor AIC. Dua metode terakhir memiliki lebih sedikit pengamatan (dan karenanya derajat kebebasan) karena mereka menggunakan setiap perlakuan untuk jumlah pengamatan sedangkan yang pertama menggunakan setiap pengamatan untuk jumlah pengamatan.
Pertanyaan saya: Apakah ada kelebihan numerik atau statistik untuk menggunakan satu format input daripada yang lain? Satu-satunya keuntungan yang saya lihat adalah tidak harus memformat ulang data seseorang R
untuk digunakan dengan model.
Saya telah melihat dokumentasi glm , mencari di web, dan situs ini dan menemukan satu posting yang berhubungan secara tangensial , tetapi tidak ada panduan tentang topik ini.
Berikut adalah contoh simulasi yang menunjukkan perilaku ini:
# Write function to help simulate data
drc4 <- function(x, b =1.0, c = 0, d = 1, e = 0){
(d - c)/ (1 + exp(-b * (log(x) - log(e))))
}
# simulate long form of dataset
nReps = 20
dfLong <- data.frame(dose = rep(seq(0, 10, by = 2), each = nReps))
dfLong$mortality <-rbinom(n = dim(dfLong)[1], size = 1,
prob = drc4(dfLong$dose, b = 2, e = 5))
# aggregate to create short form of dataset
dfShort <- aggregate(dfLong$mortality, by = list(dfLong$dose),
FUN = sum)
colnames(dfShort) <- c("dose", "mortality")
dfShort$survival <- nReps - dfShort$mortality
dfShort$nReps <- nReps
dfShort$mortalityP <- dfShort$mortality / dfShort$nReps
fitShort <- glm( cbind(mortality, survival) ~ dose,
data = dfShort,
family = "binomial")
summary(fitShort)
fitShortP <- glm( mortalityP ~ dose, data = dfShort,
weights = nReps,
family = "binomial")
summary(fitShortP)
fitLong <- glm( mortality ~ dose, data = dfLong,
family = "binomial")
summary(fitLong)
svyglm
dari paket survei memberi Anda metode yang lebih baik untuk menangani argumen bobot.