W R
istnieją trzy sposoby, aby sformatować dane wejściowe dla regresji logistycznej z wykorzystaniem glm
funkcji:
- Dane mogą być w formacie „binarnym” dla każdej obserwacji (np. Y = 0 lub 1 dla każdej obserwacji);
- Dane mogą być w formacie „Wilkinson-Rogers” (np.
y = cbind(success, failure)
), Przy czym każdy wiersz reprezentuje jeden zabieg; lub - Dane mogą mieć format ważony dla każdej obserwacji (np. Y = 0,3, wagi = 10).
Wszystkie trzy podejścia dają te same oszacowania współczynników, ale różnią się stopniami swobody i wynikającymi z nich wartościami dewiacji i wynikami AIC. Dwie ostatnie metody mają mniej obserwacji (a zatem stopni swobody), ponieważ wykorzystują każde leczenie dla liczby obserwacji, podczas gdy pierwsze wykorzystują każdą obserwację dla liczby obserwacji.
Moje pytanie: Czy korzystanie z jednego formatu wejściowego nad innym ma przewagę liczbową lub statystyczną? Jedyną zaletą, jaką widzę, jest to, że nie muszę ponownie formatować danych, R
aby użyć z modelem.
Przejrzałem dokumentację glm , przeszukałem Internet i tę stronę i znalazłem jeden stycznie powiązany post , ale nie ma wskazówek na ten temat.
Oto symulowany przykład, który demonstruje takie zachowanie:
# 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)
źródło
svyglm
z pakietu ankiet daje lepsze metody radzenia sobie z argumentem wagi.Odpowiedzi:
Nie ma statystycznego powodu, aby preferować jeden od drugiego, oprócz przejrzystości pojęciowej. Chociaż zgłaszane wartości odchyleń są różne, różnice te są całkowicie spowodowane nasyconym modelem. Zatem żadne porównanie z wykorzystaniem względnego odchylenia między modelami pozostaje nienaruszone, ponieważ prawdopodobieństwo dziennika nasyconego modelu zostaje anulowane.
Myślę, że warto przejść przez obliczenie wyraźnego odchylenia.
Długa forma
Skrócona forma (ważona)
Zauważ, że rozkład dwumianowy nie może faktycznie przyjmować wartości niecałkowitych, ale mimo to możemy obliczyć „logarytm prawdopodobieństwa”, wykorzystując ułamek zaobserwowanych sukcesów w każdej komórce jako odpowiedź i ważąc każdy summand w obliczeniu logarytmu prawdopodobieństwa przez liczba obserwacji w tej komórce.
Jest to dokładnie równe obliczonemu powyżej odchyleniu modelu, które można zobaczyć, wyciągając w miarę możliwości sumę nad w równaniu długiej postaci.jot
Tymczasem nasycone odchylenie jest inne. Ponieważ nie mamy już odpowiedzi 0-1, nawet z jednym parametrem na obserwację nie możemy uzyskać dokładnie 0. Zamiast tego nasycone prawdopodobieństwo logarytmu modelu wynosi
W twoim przykładzie możesz zweryfikować, że dwukrotność tej kwoty stanowi różnicę między zgłaszanymi wartościami zerowymi i odchyleniami resztkowymi dla obu modeli.
źródło