Построение результатов nlme и получение разных перехватов

#r #ggplot2

#r #ggplot2

Вопрос:

Я запускаю lme в nlme, и когда я пытаюсь отобразить результаты (используя код из одного из вопросов с ответами здесь), я получаю результаты, отличные от результирующих коэффициентов модели, а именно перехват. Это построение перехвата случайных эффектов, а не перехвата фиксированных эффектов?

model<-lme(Y~A Group A*Group, random=~1|Subject, data.in2)

     > summary(model)
     Linear mixed-effects model fit by REML
    Data: data.in2 
     AIC      BIC    logLik
  3203.191 3227.229 -1595.596

Random effects:
 Formula: ~1 | Subject
        (Intercept) Residual
StdDev:     17.6086 10.03305

Fixed effects: Y ~ A   Group   A * Group 
               Value Std.Error  DF   t-value p-value
(Intercept) 42.36244  7.122246 360  5.947905  0.0000
A           -1.05472  0.144155 360 -7.316565  0.0000
Group1      -7.49777 12.920964  46 -0.580279  0.5646
A:Group1     0.00180  0.291035 360  0.006195  0.9951
 Correlation: 
         (Intr) A      Group1
A        -0.902              
Group1   -0.551  0.497       
A:Group1  0.447 -0.495 -0.888

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-2.99649773 -0.50936511 -0.01409361  0.55007319  4.11784199 

Number of Observations: 410
Number of Groups: 48
  

И графический код является:

newdata<-expand.grid(Group=unique(data.in2$Group), A=c(min(data.in2$A), max(data.in2$A)))

 [![ggplot(data.in2, aes(x=A, y=Y, colour=Group))   geom_point(size=1)  
  geom_line(aes(y=predict(model), group=Subject, size="Subjects")) 
  geom_line(data=newdata, aes(y=predict(model, level=0, newdata=newdata), size="Population"))  
  scale_size_manual(name="Predictions", values=c("Subjects"=0.5, "Population"=3), guide="none")][2]][2]
  

Я также пытаюсь прикрепить изображение, но я не уверен, как. https://i.stack.imgur.com/rfNwP.png

Ответ №1:

Ваша модельная формула не соответствует вашей выходной записи. Правильная формула модели для предоставленных вами выходных данных является:

 model<-lme(Y ~ A   Group   A:Group, random=~1|Subject, data.in2)
  

что эквивалентно:

 model<-lme(Y ~ A*Group, random=~1|Subject, data.in2)
  

Если вы расскажете нам больше о ваших переменных A и Group, мы сможем прокомментировать предоставленные вами выходные данные модели.

Добавление:

Из вашего сообщения неясно, что вы подразумеваете под «получением разных перехватов». В вашей модели взаимосвязь между Y и A для каждого субъекта в каждой группе предполагается линейной (например, значение Y имеет тенденцию к уменьшению по мере увеличения A); пересечение прямой линии, фиксирующей эту взаимосвязь, может отличаться у субъектов внутри группы, но наклон предполагается одинаковым у субъектов в этой группе. Наклон отражает скорость изменения ожидаемого значения Y на увеличение значения A на 1 единицу для данного субъекта в данной группе.

Поскольку ваша модель включает в себя перехват между A и Group, существует дополнительное предположение, что наклоны субъектов в первой группе отличаются от наклонов субъектов во второй группе. Значение p для взаимодействия между A и Group довольно велико, поэтому ваши данные, похоже, не подтверждают это предположение. Вот почему на вашем графике вы видите, что наклоны для объектов в двух группах более или менее одинаковы.

«Типичный» объект в вашей первой группе (Group = 0) имеет перехват, заданный 42.36244, и наклон, заданный -1.05472. Другие испытуемые в первой группе имеют одинаковый наклон, но перехваты, которые случайным образом варьируются в зависимости от «типичного» значения перехвата 42,36244. Вы можете извлечь отклонения от этого «типичного» перехвата с помощью команды ranef(). Добавление этих отклонений к «типичному» перехвату в первой группе даст вам перехваты, зависящие от конкретной темы, для субъектов первой группы.

У «типичного» субъекта из вашей второй группы (Group = 1) перехват равен 42.36244 (-7.49777), а наклон равен -1.05472 (0.00180). Другие испытуемые во второй группе имеют тот же наклон -1.05472 (0.00180), но перехваты, которые случайным образом варьируются в пределах «типичного» значения перехвата 42.36244 (-7.49777). Вы можете извлечь отклонения от этого «типичного» перехвата с помощью команды ranef() — просто убедитесь, что каждое отклонение соответствует соответствующему объекту в группе 2. Добавив эти отклонения к «типичному» перехвату для второй группы, вы получите перехваты, зависящие от конкретного объекта, для объектов второй группы.

В вашей сводной модели и команде ranef () достаточно информации, чтобы фактически построить свой график с нуля и посмотреть, соответствует ли он графику, который вы показали здесь.

Комментарии:

1. Вы абсолютно правы, B должно было быть Group в первоначальном утверждении. A — непрерывная переменная, а Group — категориальная переменная с 2 уровнями.

2. Пожалуйста, ознакомьтесь с моим дополнением — дайте мне знать, если это прояснит для вас вопросы. Кстати, вы румын? Я сам румын, но обосновался в Канаде — мой младший брат ходил в среднюю школу имени Мирчи чел Батрана в Констанце.

3. Спасибо! Это было отличное подробное объяснение! Я попробую это и посмотрю, как будет выглядеть новый график! Да, я румын! Bine v-am gasit!

4. На самом деле, как выясняется, масштабы здесь не те. Я не устанавливал это соединение, пока не попробовал ваш метод, и, естественно, среднее значение отклонений очень близко к нулю, отсюда и линия заполнения. Если я расширю ось x до нуля, я получу тот же перехват. Это всегда самый простой ответ! В любом случае спасибо!