Псевдо R квадрат формулы для GLM

Ответы:

22

Существует большое количество псевдо- R2 для GLiM. Отличный справочный сайт по статистике UCLA имеет полный обзор их здесь . Тот, который вы перечислите, называется псевдо- R ^ 2 Макфаддена R2. Относительно типологии UCLA, он похож на R2 в том смысле, что он указывает улучшение улучшенной модели по сравнению с нулевой моделью. Некоторые статистические программы, в частности SPSS, если я правильно помню, распечатывают псевдо- R ^ 2 Макфаддена R2по умолчанию с результатами некоторых анализов, таких как логистическая регрессия, так что я подозреваю, что это довольно часто, хотя псевдо- R Кокса и Снелла и Нагелкерке ^ 2R2 с может быть даже больше. Однако псевдо- R ^ 2 Макфаддена R2не обладает всемиR2 (нет псевдо- R2 делает). Если кто-то заинтересован в использовании псевдо- R2 для понимания модели, я настоятельно рекомендую прочитать эту прекрасную ветку резюме: какую меру псевдо- R2 следует сообщить о логистической регрессии (Cox & Snell или Nagelkerke)? (Для чего это стоит, R2 самого скользкий , чем люди понимают, большая демонстрацию , которую можно увидеть в @ whuber Ответит здесь: Is R2 ? Полезно или опасно )

Gung - Восстановить Монику
источник
Интересно, все ли эти псевдо-R2 были разработаны специально для логистической регрессии? Или они обобщают также для пуассона и гамма-глям? Я нашел разные формулы R2 для каждого возможного GLM вColin Cameron, A., & Windmeijer, F. A. (1997). An R-squared measure of goodness of fit for some common nonlinear regression models. Journal of Econometrics, 77(2), 329-342.
Jens
@Jens, некоторые из них, конечно, кажутся специфичными для LR, но другие используют отклонения, которые вы можете получить от любого GLiM.
gung - Восстановить Монику
1
Обратите внимание, что Макфаддена часто определяется в терминах логарифмического правдоподобия, которое определяется только с точностью до аддитивной константы, а не отклонения, как в вопросе ОП. Без указания аддитивной константы Макфаддена не вполне определена. Отклонение является одним из уникальных вариантов аддитивной константы, что, на мой взгляд, является наиболее подходящим выбором, если обобщение должно быть сопоставимо с линейных моделей. R2R2R2
NRH
Учитывая, что GLM подгоняются с использованием итеративно перевешенных наименьших квадратов, как в bwlewis.github.io/GLM , что было бы возражением против фактического вычисления взвешенного R2 по шкале связи GLM, используя веса 1 / дисперсии в качестве весов (которые glm возвращает в слот весов в глм подойдет)?
Том Венселерс
@ TomWenseleers, вы можете делать, как хотите, но основные аргументы приведены в теме «Какой псевдо- ... сообщить ...», которую я связал, особенно ответ вероятностного журнала . R2
gung - Восстановить Монику
9

R дает нулевое и остаточное отклонение в выходных данных, glmтак что вы можете сделать именно такое сравнение (см. Две последние строки ниже).

> x = log(1:10)

> y = 1:10

> glm(y ~ x, family = poisson)

>Call:  glm(formula = y ~ x, family = poisson)

Coefficients:
(Intercept)            x  
  5.564e-13    1.000e+00  

Degrees of Freedom: 9 Total (i.e. Null);  8 Residual
Null Deviance:      16.64 
Residual Deviance: 2.887e-15    AIC: 37.97

Вы также можете извлечь эти значения из объекта с помощью model$null.devianceиmodel$deviance

Дэвид Дж. Харрис
источник
Ах хорошо. Я просто отвечал на вопрос как написано. Я бы добавил больше, но я не уверен на 100%, как рассчитывается нулевое отклонение (это как-то связано с вероятностью записи в журнале насыщенной модели, но я не помню достаточно подробностей о насыщенности, чтобы быть уверенным что я мог дать хорошую интуицию)
Дэвид Дж. Харрис
У меня его нет в выводе glm (семейный вариант или квазипуассон).
Любопытно
@ Томас увидеть мои правки. Я не знаю, ошибся ли я 2 года назад или изменился ли вывод по умолчанию с тех пор.
Дэвид Дж. Харрис
Томас информация производится summary.glm. Что касается того, является ли это определение общепринятым, потребовало бы некоторого вида обзора. Я бы сказал, что это не особенно редко, потому что я видел это раньше, но не то, что обязательно широко используется. R2
Glen_b
1
Прочитайте вопрос. Вы думаете, что ответите на это? Вопрос был не «где взять компоненты формулы?».
Любопытно,
6

Предложенная вами формула была предложена Maddala (1983) и Magee (1990) для оценки R в квадрате по логистической модели. Поэтому я не думаю, что это применимо ко всей модели glm (см. Книгу «Современные методы регрессии» Томаса П. Райана на странице 266).

Если вы сделаете ложный набор данных, вы увидите, что он недооценивает R в квадрате ... для гауссовского glm в каждом примере.

Я думаю, что для гауссовского GLM вы можете использовать базовую формулу (лм) R в квадрате ...

R2gauss<- function(y,model){
    moy<-mean(y)
    N<- length(y)
    p<-length(model$coefficients)-1
    SSres<- sum((y-predict(model))^2)
    SStot<-sum((y-moy)^2)
    R2<-1-(SSres/SStot)
    Rajust<-1-(((1-R2)*(N-1))/(N-p-1))
    return(data.frame(R2,Rajust,SSres,SStot))
}

А для логистики (или биномиального семейства в r) я бы использовал предложенную вами формулу ...

    R2logit<- function(y,model){
    R2<- 1-(model$deviance/model$null.deviance)
    return(R2)
    }

До сих пор для Пуассона GLM я использовал уравнение из этого поста.

/programming/23067475/how-do-i-obtain-pseudo-r2-measures-in-stata-when-using-glm-regression

Существует также отличная статья о псевдо R2 доступна на исследовательских ворот ... вот ссылка:

https://www.researchgate.net/publication/222802021_Pseudo_R-squared_measures_for_Poisson_regression_models_with_over-_or_underdispersion

Я надеюсь, что это поможет.

Нико Коллиер
источник
Просто установите модель GLM с family = gaussian (link = identity) и проверьте значение, 1-summary(GLM)$deviance/summary(GLM)$null.devianceи вы увидите, что R2 соответствует значению R2 обычной регрессии OLS, поэтому приведенный выше ответ верен! Смотрите также мой пост здесь - stats.stackexchange.com/questions/412580/…
Том Wenseleers
3

Пакет R modEvAвычисляет D-Squared , как , 1 - (mod$deviance/mod$null.deviance)как упомянуто Дэвид Дж Харрис

set.seed(1)
data <- data.frame(y=rpois(n=10, lambda=exp(1 + 0.2 * x)), x=runif(n=10, min=0, max=1.5))

mod <- glm(y~x,data,family = poisson)

1- (mod$deviance/mod$null.deviance)
[1] 0.01133757
library(modEvA);modEvA::Dsquared(mod)
[1] 0.01133757

D-Squared или объясненное отклонение модели представлено в (Guisan & Zimmermann 2000) https://doi.org/10.1016/S0304-3800(00)00354-9

user2673238
источник