Как сделать анализ маржинальной модели в R? - PullRequest
0 голосов
/ 05 января 2019

Проблема. Я хотел бы провести анализ маржинальной модели в R - я думаю, что ее иногда называют моделью, усредненной по совокупности, маржинальной многоуровневой моделью или моделью маржинальной линейной регрессии. Тем не менее, я не могу найти информацию о stackoverflow, Google или Youtube о том, как это сделать конкретно в R.

Справочная информация. Я говорю о маргинальных моделях, описанных Фактором анализа здесь и здесь и как описано на этих Слайды PowerPoint . * * * В CrossValidated *1016* есть один человек, который упоминает этот анализ в SPSS и R, но он не показывает свой реальный код, и на его вопрос не было ответа. Не уверен, следует ли делать это в пакете nlme или нет.

Код SPSS. Я описал природу этих данных в другом месте в CrossValidated , но в основном мы заинтересованы в прогнозировании эмоций участников (измеряемых дважды в 2 различных условиях) через личность (измеряется один раз). Вот код, который я использовал в SPSS.

MIXED emotion BY condition WITH centeredPersonality
    /FIXED=condition centeredPersonality condition*centeredPersonality
    /METHOD = REML
    /REPEATED= condition | SUBJECT (ID) COVTYPE(UN)
    /PRINT=SOLUTION.

Вопрос. Как это сделать в R?

1 Ответ

0 голосов
/ 05 января 2019

Я думаю, что geeglm для пакета geepack может сделать это. Насколько я понимаю, обобщенные оценочные уравнения - это то же самое, что и маргинальные модели. Синтаксис geeglm похож на glm, и если вы используете семейство гауссов, вы получите результат, аналогичный стандартной маргинальной модели. Я уверен, что есть и другие способы, но это должно сработать.

edit: Вот пример, который вы можете использовать, регрессия эмоций на две переменные, состояние и личность, и их взаимодействие. Условие рассматривается как фактор, а ошибки группируются по идентификатору. Семейство по умолчанию для geeglm - gaussian / Normal, поэтому нам не нужно это указывать.

> library(geepack)
> dat <- data.frame(id = c(1, 1, 2, 2, 3, 3, 4, 4), 
+                   condition = factor(c(1, 2, 1, 2, 1, 2, 1, 2)), 
+                   personality = c(2.5, 2.5, 4.0, 4.0, 3.3, 3.3, 4.2, 4.2),
+                   emotion = c(5.0, 4.9, 2.6, 2.3, 4.3, 2.9, 1.0, 1.0))
>   
> my_mod <- geeglm(emotion ~ condition*personality, data = dat, id = id)
> summary(my_mod)

Call:
geeglm(formula = emotion ~ condition * personality, data = dat, 
    id = id)

 Coefficients:
                       Estimate Std.err  Wald Pr(>|W|)    
(Intercept)              10.815   1.296 69.68  < 2e-16 ***
condition2               -0.902   1.284  0.49     0.48    
personality              -2.169   0.385 31.77  1.7e-08 ***
condition2:personality    0.129   0.322  0.16     0.69    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Estimated Scale Parameters:
            Estimate Std.err
(Intercept)    0.223  0.0427

Correlation: Structure = independenceNumber of clusters:   4   Maximum cluster size: 2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...