Trong R
đó, có ba phương thức định dạng dữ liệu đầu vào cho hồi quy logistic bằng glm
hàm:
- Dữ liệu có thể ở định dạng "nhị phân" cho mỗi quan sát (ví dụ: y = 0 hoặc 1 cho mỗi quan sát);
- Dữ liệu có thể ở định dạng "Wilkinson-Rogers" (ví dụ
y = cbind(success, failure)
:) với mỗi hàng đại diện cho một điều trị; hoặc là - Dữ liệu có thể ở định dạng có trọng số cho mỗi quan sát (ví dụ: y = 0,3, trọng số = 10).
Tất cả ba phương pháp đều tạo ra các ước tính hệ số giống nhau, nhưng khác nhau về mức độ tự do và dẫn đến các giá trị sai lệch và điểm AIC. Hai phương pháp cuối cùng có ít quan sát hơn (và do đó mức độ tự do) bởi vì chúng sử dụng mỗi phương pháp điều trị cho số lượng quan sát trong khi phương pháp đầu tiên sử dụng mỗi quan sát cho số lượng quan sát.
Câu hỏi của tôi: Có những lợi thế về số hoặc thống kê để sử dụng một định dạng đầu vào so với định dạng khác không? Ưu điểm duy nhất tôi thấy là không phải định dạng lại dữ liệu của một người R
để sử dụng với mô hình.
Tôi đã xem tài liệu glm , tìm kiếm trên web và trang web này và tìm thấy một bài đăng liên quan , nhưng không có hướng dẫn về chủ đề này.
Dưới đây là một ví dụ mô phỏng thể hiện hành vi này:
# 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
từ gói khảo sát cung cấp cho bạn các phương pháp tốt hơn để xử lý đối số trọng số.