Чому мої р-значення відрізняються між результатами логістичної регресії, тестом чи-квадрата та інтервалом довіри для АБО?


37

Я створив логістичну регресію, де змінна результат вилікується після лікування ( Cureпроти No Cure). Усі пацієнти цього дослідження отримували лікування. Мене цікавить, чи пов’язаний діабет із цим результатом.

У R мій результат логістичної регресії виглядає так:

Call:
glm(formula = Cure ~ Diabetes, family = binomial(link = "logit"), data = All_patients)
...
Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   1.2735     0.1306   9.749   <2e-16 ***
Diabetes     -0.5597     0.2813  -1.990   0.0466 *  
...
    Null deviance: 456.55  on 415  degrees of freedom
Residual deviance: 452.75  on 414  degrees of freedom
  (2 observations deleted due to missingness)
AIC: 456.75

Однак довірчий інтервал для коефіцієнта шансів включає 1 :

                   OR     2.5 %   97.5 %
(Intercept) 3.5733333 2.7822031 4.646366
Diabetes    0.5713619 0.3316513 1.003167

Коли я роблю тест-чи-квадрат на цих даних, я отримую наступне:

data:  check
X-squared = 3.4397, df = 1, p-value = 0.06365

Якщо ви хочете обчислити його самостійно, розподіл діабету в групах, що виліковуються і не отверждены, є таким:

Diabetic cure rate:      49 /  73 (67%)
Non-diabetic cure rate: 268 / 343 (78%)

Моє запитання: Чому p-значення та довірчий інтервал, включаючи 1, не погоджуються?


Як розраховувався довірчий інтервал для діабету? Якщо ви використовуєте оцінку параметрів і стандартну помилку для формування ІР Wald, ви отримуєте exp (-. 5597 + 1,96 * .2813) = .99168 як верхню кінцеву точку.
hard2fathom

@ hard2fathom, швидше за все, використовували ОП confint(). Тобто ймовірність була профільована. Таким чином ви отримуєте CI, аналогічні LRT. Ваш розрахунок правильний, але замість цього складайте вальд-інтерфейси. Більше інформації у моїй відповіді нижче.
gung - Відновіть Моніку

Я схвалив це після того, як я прочитав його більш уважно. Має сенс.
hard2fathom

Відповіді:


64

З узагальненими лінійними моделями існує три різних типи статистичних тестів, які можна запустити. Це: тести Вальда, тести коефіцієнта ймовірності та тестові оцінки. На відмінному довідковому сайті UCLA зі статистикою обговорюється тут . Наступна фігура (скопійована з їх сайту) допомагає проілюструвати їх:

введіть тут опис зображення

  1. zNNN
  2. Тести коефіцієнта ймовірності дивляться на співвідношення ймовірностей (або різниці в ймовірності журналу) на його максимумі та на нулі. Це часто вважається найкращим тестом.
  3. Тест оцінки ґрунтуються на схилі ймовірності при значенні нуля. Це, як правило, менш потужно, але бувають випадки, коли повну ймовірність неможливо прорахувати, і це хороший варіант резервного копіювання.

summary.glm()confint()profile()1.96χ2

Nppα=.05.05

Нижче я профілюю коефіцієнти на шкалі лінійного предиктора та запускаю тест відношення ймовірності явно (через anova.glm()). Я отримую такі самі результати, як і ви:

library(MASS)
x = matrix(c(343-268,268,73-49,49), nrow=2, byrow=T);  x
#      [,1] [,2]
# [1,]   75  268
# [2,]   24   49
D = factor(c("N","Diabetes"), levels=c("N","Diabetes"))
m = glm(x~D, family=binomial)
summary(m)
# ...
# Coefficients:
#             Estimate Std. Error z value Pr(>|z|)    
# (Intercept)  -1.2735     0.1306  -9.749   <2e-16 ***
# DDiabetes     0.5597     0.2813   1.990   0.0466 *  
# ...
confint(m)
# Waiting for profiling to be done...
#                    2.5 %    97.5 %
# (Intercept) -1.536085360 -1.023243
# DDiabetes   -0.003161693  1.103671
anova(m, test="LRT")
# ...
#      Df Deviance Resid. Df Resid. Dev Pr(>Chi)  
# NULL                     1     3.7997           
# D     1   3.7997         0     0.0000  0.05126 .
chisq.test(x)
#         Pearson's Chi-squared test with Yates' continuity correction
# 
# X-squared = 3.4397, df = 1, p-value = 0.06365

Як зазначив @JWilliman у коментарі (тепер видалено), в R, ви також можете отримати p-значення на основі балів, використовуючи anova.glm(model, test="Rao"). У наведеному нижче прикладі зауважте, що значення p не є таким самим, як у тесті чи-квадрата вище, тому що за замовчуванням R's chisq.test()застосовує корекцію безперервності. Якщо ми змінимо це налаштування, значення p відповідатиме:

anova(m, test="Rao")
# ...
#      Df Deviance Resid. Df Resid. Dev   Rao Pr(>Chi)  
# NULL                     1     3.7997                 
# D     1   3.7997         0     0.0000 4.024  0.04486 *
chisq.test(x, correct=FALSE)
#   Pearson's Chi-squared test
# 
# data:  x
# X-squared = 4.024, df = 1, p-value = 0.04486

12
+1 Це дуже інформативний аналіз, чітко та авторитетно розглядає дещо загадкове поведінку та дає корисні вказівки.
качан

Хороший відповідь Гунг, хоча я не розумію, що ви маєте на увазі під "я б сказав, що ваші дані не є" суттєвими "за звичайними критеріями"
марка999

@ mark999, найнадійніші тести (LRT & chi-kvadrat) обидва трохи перевищують .05.
gung - Відновіть Моніку
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.