에서 R
의 사용을위한 회귀 입력 데이터를 포맷하기위한 세 가지 방법이있다 glm
기능 :
- 데이터는 각 관측치에 대해 "이진"형식 일 수 있습니다 (예 : 각 관측치에 대해 y = 0 또는 1).
- 데이터는 "Wilkinson-Rogers"형식 일 수 있으며 (예를 들어,
y = cbind(success, failure)
각 행은 하나의 처리를 나타냄); 또는 - 데이터는 각 관측치에 대한 가중치 형식 (예 : y = 0.3, 가중치 = 10) 일 수 있습니다.
세 가지 접근법 모두 동일한 계수 추정치를 생성하지만 자유 도와 결과 편차 값 및 AIC 점수는 다릅니다. 마지막 두 방법은 관측치 수에 대해 각 처리를 사용하는 반면 첫 번째 방법은 관측치 수에 대해 각 관측치를 사용하기 때문에 관측치가 적으므로 자유도가 낮아집니다.
내 질문 : 하나의 입력 형식을 다른 형식보다 사용하면 수치 적 또는 통계적 이점이 있습니까? 내가 볼 수있는 유일한 장점 R
은 모델과 함께 사용하기 위해 데이터를 다시 포맷 할 필요가 없다는 것 입니다.
나는 glm documentation 을 보았고 웹과이 사이트를 검색하여 접선 적으로 관련된 게시물을 찾았 지만이 주제에 대한 지침은 없습니다.
다음은이 동작을 보여주는 시뮬레이션 된 예입니다.
# 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
입니다. 설문 패키지에서 가중치 인수를 처리하는 더 나은 방법을 제공합니다.