#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! Спасибо за этот четко написанный вопрос с хорошим примером кода.