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)
sumber
svyglm
dari paket survei memberi Anda metode yang lebih baik untuk menangani argumen bobot.Jawaban:
Tidak ada alasan statistik untuk memilih satu dari yang lain, selain kejelasan konseptual. Meskipun nilai penyimpangan yang dilaporkan berbeda, perbedaan ini sepenuhnya karena model jenuh. Jadi perbandingan apa pun yang menggunakan penyimpangan relatif antara model tidak terpengaruh, karena model jenuh log-kemungkinan dibatalkan.
Saya pikir ini berguna untuk pergi melalui perhitungan penyimpangan eksplisit.
Penyimpangan model adalah 2 * (LL (Model Jenuh) - LL (Model)). Misalkan Anda memiliki sel yang berbeda, di mana adalah jumlah pengamatan dalam sel , adalah model prediksi untuk semua pengamatan di sel , dan adalah nilai yang diamati (0 atau 1) untuk pengamatan ke- di sel .i ni i pi i yij j i
Bentuk panjang
Kemungkinan log dari model (diusulkan atau null) adalah∑i∑j(log(pi)yij+log(1−pi)(1−yij))
dan kemungkinan log dari model jenuh adalahIni sama dengan 0, karena adalah 0 atau 1. Note tidak terdefinisi, tetapi untuk kenyamanan silakan baca sebagai singkatan untuk , yaitu 0.∑i∑j(log(yij)yij+log(1−yij)(1−yij)). yij log(0) 0log(0) limx→0+xlog(x)
Bentuk pendek (berbobot)
Perhatikan bahwa distribusi binomial sebenarnya tidak dapat mengambil nilai-nilai non-integer, tetapi kami tetap dapat menghitung "log likelihood" dengan menggunakan sebagian kecil dari keberhasilan yang diamati dalam setiap sel sebagai respons, dan menimbang setiap musim panas dalam perhitungan log-likelihood dengan jumlah pengamatan dalam sel itu.
Ini persis sama dengan penyimpangan model yang kami hitung di atas, yang dapat Anda lihat dengan menarik jumlah di atas dalam persamaan bentuk panjang sejauh mungkin.j
Sementara penyimpangan jenuh berbeda. Karena kita tidak lagi memiliki 0-1 tanggapan, bahkan dengan satu parameter per pengamatan kita tidak bisa mendapatkan tepat 0. Sebaliknya model log-kemungkinan jenuh adalah
Dalam contoh Anda, Anda dapat memverifikasi bahwa dua kali jumlah ini adalah perbedaan antara nilai null dan nilai penyimpangan yang dilaporkan untuk kedua model.
sumber