İçinde R
, glm
fonksiyonu kullanarak bir lojistik regresyon için giriş verilerini formatlamak için üç yöntem vardır :
- Veriler her gözlem için "ikili" bir formatta olabilir (örneğin her gözlem için y = 0 veya 1);
- Veriler, "Wilkinson-Rogers" formatında (örneğin
y = cbind(success, failure)
), her sıra bir tedaviyi temsil eder; veya - Veriler her gözlem için ağırlıklı bir formatta olabilir (örneğin, y = 0,3, ağırlıklar = 10).
Her üç yaklaşım da aynı katsayı tahminlerini üretir, ancak serbestlik dereceleri ve sonuç olarak sapma değerleri ve AIC puanları bakımından farklılık gösterir. Son iki yöntemin daha az gözlemi (ve dolayısıyla serbestlik dereceleri) vardır, çünkü her tedaviyi gözlem sayısı için kullanırlar, ilki her gözlemi gözlem sayısı için kullanır.
Benim sorum: Bir girdi biçimini diğerine göre kullanmanın sayısal veya istatistiksel avantajları var mı? Gördüğüm tek avantaj R
, kişinin modelle kullanmak için verilerini yeniden biçimlendirmek zorunda değil .
Glm belgelerine baktım , web'de ve bu sitede aradım ve teğetsel olarak ilişkili bir yazı buldum , ancak bu konuda hiçbir rehberlik etmedim .
İşte bu davranışı gösteren simüle edilmiş bir örnek:
# 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
. Anket paketinden, ağırlık argümanını ele almak için daha iyi yöntemler sunar.