Я построил логистическую регрессию, где переменная результата излечивается после получения лечения (по 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?
r
hypothesis-testing
logistic
generalized-linear-model
odds-ratio
SniperBro2000
источник
источник
confint()
. То есть вероятность была профилирована. Таким образом вы получаете КИ, аналогичные LRT. Ваш расчет верен, но вместо этого составляют Уолда. Более подробная информация в моем ответе ниже.Ответы:
С обобщенными линейными моделями можно выполнить три различных типа статистических тестов. Это: тесты Вальда, тесты отношения правдоподобия и тесты баллов. Отличный сайт помощи статистики UCLA обсуждает их здесь . Следующий рисунок (скопированный с их сайта) помогает проиллюстрировать их:
summary.glm()
confint()
profile()
Ниже я профилирую коэффициенты на шкале линейного предиктора и запускаю тест отношения правдоподобия явно (через
anova.glm()
). Я получаю те же результаты, что и вы:Как отметил @JWilliman в комментарии (теперь удаленном),
R
вы также можете получить p-значение, основанное на оценке, используяanova.glm(model, test="Rao")
. В приведенном ниже примере, заметим , что р-значение не совсем такой же , как в тесте хи-квадрат выше, потому что по умолчанию,R
«ыchisq.test()
применяет коррекцию непрерывности. Если мы изменим этот параметр, значения p будут соответствовать:источник