Член взаимодействия многомерной регрессии с категориальными переменными - PullRequest
0 голосов
/ 06 августа 2020

Я как бы новичок в R, работаю над моделью glm и хотел посмотреть влияние взаимодействия групп ИМТ и групп пациентов (4 группы) на смертность (бинарный) в анализе подгрупп. У меня есть следующие коды:

model <- glm(death~patient.group*bmi.group, data = data, family = "binomial")
summary(model)

, и я получаю следующее:

Coefficients:
                            Estimate Std. Error z value Pr(>|z|)    
(Intercept)               -3.4798903  0.0361911 -96.153  < 2e-16 ***
patient.group2             0.0067614  0.0507124   0.133    0.894    
patient.group3             0.0142658  0.0503444   0.283    0.777    
patient.group4             0.0212416  0.0497523   0.427    0.669    
bmi.group2                 0.1009282  0.0478828   2.108    0.035 *  
bmi.group3                 0.2397047  0.0552043   4.342 1.41e-05 ***
patient.group2:bmi.group2 -0.0488768  0.0676473  -0.723    0.470    
patient.group3:bmi.group2 -0.0461319  0.0672853  -0.686    0.493    
patient.group4:bmi.group2 -0.1014986  0.0672675  -1.509    0.131    
patient.group2:bmi.group3 -0.0806240  0.0791977  -1.018    0.309    
patient.group3:bmi.group3 -0.0008951  0.0785683  -0.011    0.991    
patient.group4:bmi.group3 -0.0546519  0.0795683  -0.687    0.492    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Итак, как показано, у меня будет p-значение для каждого из patient.group:bmi.group. Мой вопрос: есть ли способ получить одно значение p для patient.group:bmi.group вместо одного для каждой подгруппы? Я попытался найти ответы в Интернете, но так и не нашел ответа: (

Заранее большое спасибо.

1 Ответ

1 голос
/ 06 августа 2020

Это зависит от того, рассматриваете ли вы своего пациента и группы ИМТ как факторы или как непрерывные ковариаты . Если они ковариаты, предложение @ jay.sf уместно. Он соответствует единой степени свободы для взаимодействия между линейным эффектом группы пациентов и линейным эффектом группы ИМТ.

Но это зависит как от порядка, так и от определения групп. Это предполагает, например, что «разница» между группами пациентов 1 и 2 такая же, как между группами пациентов 2 и 3 и так далее. Порядок групп пациентов таков, что каким-то образом группа 1 <группа 2 <группа 3 <группа 4? Аналогично для ИМТ. Эта модель также предполагает, что изменение на 1 единицу по шкале пациента было «таким же», как изменение на одну единицу по шкале ИМТ. Я не знаю, являются ли это разумными предположениями. </p>

Было бы более обычным рассматривать как группу пациентов, так и группу ИМТ в качестве факторов. Это предполагает отсутствие порядка в группах или то, что разница между любыми двумя группами была равна разнице между любыми двумя другими. В этом случае предложение jay.sf дало бы вводящий в заблуждение ответ.

Чтобы проиллюстрировать мою точку зрения ...

Сначала сгенерируйте некоторые искусственные данные, поскольку вы их не предоставили:

data <- tibble() %>% 
          expand(patient.group=1:4, bmi.group=1:3, rep=1:5) %>% 
          mutate(
            z=-0.25*patient.group + 0.75*bmi.group, 
            death=rbernoulli(nrow(.), exp(z)/exp(1+z))
          ) %>% 
          select(-z)

Подберите простую непрерывную ковариатную модель с взаимодействием, согласно предложению jay.sf:

covariateModel <- glm(death~patient.group * bmi.group, data = data, family = "binomial")
summary(covariateModel)

Частичная отдача

Coefficients:
                        Estimate Std. Error z value Pr(>|z|)
(Intercept)              -2.6962     1.8207  -1.481    0.139
patient.group             0.7407     0.6472   1.144    0.252
bmi.group                 1.2697     0.8340   1.523    0.128
patient.group:bmi.group  -0.3807     0.2984  -1.276    0.202

Здесь значение p для patient.group:bmi.group взаимодействие - это тест Вальда, основанный на z-тесте с единственной степенью свободы.

Необходим немного более сложный подход, чтобы подогнать факторную модель с взаимодействием и получить тест на «общий» эффект взаимодействия .

mainEffectModel <- glm(death~as.factor(patient.group) + as.factor(bmi.group), data = data, family = "binomial")
interactionModel <- glm(death~as.factor(patient.group) * as.factor(bmi.group), data = data, family = "binomial")
anova(mainEffectModel, interactionModel, test="Chisq")

Предоставление

Analysis of Deviance Table

Model 1: death ~ as.factor(patient.group) + as.factor(bmi.group)
Model 2: death ~ as.factor(patient.group) * as.factor(bmi.group)
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1        54     81.159                     
2        48     70.579  6    10.58   0.1023

Здесь изменение отклонения является оценочным тестом и распределяется как статистика хи-квадрат c на (4-1) x ( 3-1) = 6 степеней свободы.

Эти два подхода дают схожие ответы с использованием моего конкретного набора данных , но они не всегда могут это сделать. Оба статистически верны, но какой из них наиболее подходит, зависит от вашей конкретной ситуации. У нас недостаточно информации для комментариев.

Этот отличный пост предоставляет больше контекста.

...