ในR
มีสามวิธีในการจัดรูปแบบข้อมูลอินพุตสำหรับการถดถอยโลจิสติกโดยใช้glm
ฟังก์ชัน:
- ข้อมูลสามารถอยู่ในรูปแบบ "ไบนารี" สำหรับการสังเกตแต่ละครั้ง (เช่น y = 0 หรือ 1 สำหรับการสังเกตแต่ละครั้ง);
- ข้อมูลสามารถอยู่ในรูปแบบ "Wilkinson-Rogers" (เช่น
y = cbind(success, failure)
) โดยแต่ละแถวแสดงถึงการรักษาหนึ่งครั้ง หรือ - ข้อมูลสามารถอยู่ในรูปแบบถ่วงน้ำหนักสำหรับการสังเกตแต่ละครั้ง (เช่น y = 0.3, น้ำหนัก = 10)
ทั้งสามวิธีมีการประมาณค่าสัมประสิทธิ์เท่ากัน แต่แตกต่างกันไปตามระดับของอิสรภาพและค่าเบี่ยงเบนและผลคะแนน AIC สองวิธีสุดท้ายมีการสังเกตน้อยกว่า (และดีกรีอิสระ) เพราะพวกเขาใช้การรักษาแต่ละครั้งสำหรับจำนวนการสังเกตในขณะที่วิธีแรกใช้การสังเกตแต่ละครั้งสำหรับจำนวนการสังเกต
คำถามของฉัน:มีความได้เปรียบเชิงตัวเลขหรือเชิงสถิติในการใช้รูปแบบอินพุตหนึ่งมากกว่าอีกรูปแบบหนึ่งหรือไม่ ข้อได้เปรียบเดียวที่ฉันเห็นคือไม่ต้องฟอร์แมตข้อมูลR
เพื่อใช้กับตัวแบบ
ฉันได้ดูเอกสาร glmค้นหาบนเว็บและเว็บไซต์นี้และพบโพสต์ที่เกี่ยวข้องเป็นรูปธรรมแต่ไม่มีคำแนะนำในหัวข้อนี้
นี่คือตัวอย่างที่จำลองซึ่งแสดงให้เห็นถึงพฤติกรรมนี้:
# 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
จากแพคเกจสำรวจให้วิธีการจัดการอาร์กิวเมนต์น้ำหนักที่ดีขึ้น