Как я могу рассчитать предельное значение r^2 для линейных смешанных моделей в SPSS для простой модели случайного наклона?

#r #spss #lme4 #mixed-models #mumin

Вопрос:

TLDR:

Как я могу получить предельный и условный R^2, соответствующий статье Johnson, P. C. (2014), для простых моделей случайного наклона с неструктурированным типом ковариации и одним случайным наклоном в SPSS?

Длиннее:

В R я использую функцию r.squaredGLMM() в пакете MuMIn для вычисления предельного и условного R^2 для моих смешанных моделей в соответствии с Johnson, P. C. (2014). Расширение R2GLMM Накагавы и Шильцета на модели случайных наклонов. Методы в экологии и эволюции, 5(9), 944-946.

Сейчас я преподаю класс по смешанным моделям с использованием SPSS, и я хотел бы предоставить студентам инструмент, с помощью которого они также могут вычислять предельные и условные R^2. Однако SPSS не предоставляет этого в своих выводах для смешанных моделей.

Я нашел инструкции о том, как вычислить предельное и условное R^2 в SPSS для моделей случайного перехвата, написанные Полом Джонсоном. Для этого требуются вычисления: Vf (дисперсия фиксированного эффекта), Vr (дисперсия случайного эффекта), Ve (остаточная дисперсия),

В очень простом случае модели случайного перехвата я вычисляю их по:

  • Вф: Я беру дисперсию прогнозируемых значений только на основе предикторов фиксированного эффекта
  • Vr: Оценки параметров ковариации таблица с перечислением дисперсии, связанной со случайным перехватом
  • Ve: Оценки параметров ковариации таблица с перечислением дисперсии, связанной с остатками

и используйте формулу:

  • R^2m = Vf / (Vf Vr Ve)
  • R^2c = (Vf Vr) / (Vf Vr Ve)

Это возвращает тот же результат, что и этот код R:

     library(lme4)
    library(MuMIn)
    library(insight)
    
    data <- read.csv("https://raw.githubusercontent.com/kekecsz/SIMM32/master/2021/Lab_4/data_bully_slope.csv")
    
    mod1 <- lmer(sandwich_taken ~ weight   (1|class), data = data)
    summary(mod1)
    
    r.squaredGLMM(mod1)
 

Однако я не знаю, как обобщить это на простой случай случайного перехвата наклона в SPSS.
В R я смог получить эти компоненты дисперсии в виде:

 mod2 <- lmer(sandwich_taken ~ weight   (weight|class), data = data)

Vf = var(predict(mod2,re.form=NA))
Vr = get_variance(mod2)$var.random
Ve = sigma(mod2)^2
 

и используя эту формулу:

 R^2m = Vf / (Vf   Vr   Ve)
R^2c = (Vf   Vr) / (Vf   Vr   Ve)
 

возвращает те же значения, что и

 r.squaredGLMM(mod2)
 

Я могу вычислить Vf и Ve так же, как указано выше в SPSS, но я не могу найти дисперсию для случайных эффектов в выходных данных. Я попытался рассчитать это, взяв общую дисперсию переменной результата и вычитая Vf и Ve:

 Vtotal = var(model.response(model.frame(mod1)))
Vr = Vtotal - (Vf   Ve)
 

Но ценность, которую я получаю для виртуальной реальности, отличается от того, что я получаю от

 get_variance(mod2)$var.random
 

и предельное и условное R^2, вычисленное таким образом, не соответствует

 r.squaredGLMM(mod2)
 

Как я могу получить предельный и условный R^2, соответствующий статье Johnson, P. C. (2014), для простых моделей случайного наклона с неструктурированным типом ковариации и одним случайным наклоном в SPSS?

В качестве альтернативы, было бы разумно сказать, что следующее даст разумную оценку предельного и условного R^2 для простой модели случайного наклона? (Потому что это то, что я мог бы вычислить в SPSS), с оговоркой, что это включает в себя небольшую переоценку предельного R^2 и небольшую недооценку условного R^2?

 Vtot = var(model.response(model.frame(mod2)))
Vf = var(predict(mod2,re.form=NA))
Ve = sigma(mod2)^2
Vr_est = Vtot - (Vf   Ve)

Rm_est = Vf / (Vf   Vr_est   Ve)
Rm_est
Rc_est = (Vf   Vr_est) / (Vf   Vr_est   Ve)
Rc_est
 

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

1. Добро пожаловать в Stack Overflow! Спасибо за этот четко написанный вопрос с хорошим примером кода.