Взаимодействие зондов от регрессии с пользовательскими контрастами - PullRequest
0 голосов
/ 30 мая 2019

Я изо всех сил пытаюсь исследовать существенные взаимодействия линейной регрессии с пользовательскими контрастными кодами.Я провел вмешательство, чтобы улучшить оценки с помощью трех групп лечения (то есть мышления, ценности, мышления плюс ценность) и одной контрольной группы, и теперь хотел бы увидеть, есть ли взаимодействие между конкретными уровнями вмешательства и различными теоретически значимыми категориальными переменными, такими как пол, статус бесплатного обеда и бинарный индикатор наличия gpa ниже среднего за два предыдущих семестра, а также соответствующие непрерывные переменные, такие как убеждения перед вмешательством (Imp_pre.C & Val_pre.C в приведенном ниже примере кадра данных).Непрерывные модераторы были отцентрированы по центру.

#subset of dataframe
mydata <- structure(list(cond = structure(c(1L, 2L, 3L, 3L, 2L, 3L,     1L,2L, 2L, 1L), contrasts = structure(c(-0.25, 0.0833333333333333,0.0833333333333333, 0.0833333333333333, -1.85037170770859e-17,-0.166666666666667, -0.166666666666667, 0.333333333333333, 0,-0.5, 0.5, 0), .Dim = 4:3, .Dimnames = list(c("control", "mindset","value", "MindsetValue"), NULL)), .Label = c("control", "mindset","value", "MindsetValue"), class = "factor"), sis_mp3_gpa = c(89.0557142857142,91.7514285714285, 94.8975, 87.05875, 69.9928571428571, 78.0357142857142,87.7328571428571, 83.8925, 61.2271428571428, 79.8314285714285), sis_female = c(1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L), low_gpa_m1m2 = c(0,0, 0, 0, 1, 1, 0, 0, 1, 0), sis_frpl = c(0L, 1L, 0L, 0L, 1L,1L, 1L, 1L, NA, 0L), Imp_pre.C = c(1.80112944983819, -0.198870550161812,1.46112944983819, -0.198870550161812, 0.131129449838188, NA,-0.538870550161812, 0.131129449838188, -0.198870550161812, -0.198870550161812), Val_pre.C = c(-2.2458357581636, -2.0458357581636, 0.554164241836405,0.554164241836405, -0.245835758163595, NA, 0.554164241836405,0.554164241836405, -2.0458357581636, -1.64583575816359)), row.names = c(323L,2141L, 2659L, 2532L, 408L, 179L, 747L, 2030L, 2183L, 733L), class = "data.frame")

Поскольку меня интересуют только конкретные контрасты, я создал следующие пользовательские контрастные коды.

mat = matrix(c(1/4, 1/4, 1/4, 1/4, -3, 1, 1, 1, 0, -1, -1, 2, 0,
mymat = solve(t(mat))
mymat
my.contrasts <- mymat[,2:4]
contrasts(mydata$cond) = my.contrasts

Я тестируюследующая модель:

#model
model1 <- lm(sis_mp3_gpa ~ cond +
               sis_female*cond +
               low_gpa_m1m2*cond + 
               sis_frpl*cond +
               Imp_pre.C*cond + 
               Val_pre.C*cond + 
               Imp_pre.C + Val_pre.C +
               low_gpa_m1m2 + sis_female +
               sis_frpl , data = mydata)
summary(model1)

В полном наборе данных существует значительная взаимосвязь между контрастом два (сравнение мышления плюс значение с мышлением и значением) и предыдущими убеждениями в значениях (т. е. Val_pre.C) и между этим контрастомкод и с низким gpa 2 предыдущих семестра.Чтобы интерпретировать существенные взаимодействия, я хотел бы создать прогнозируемые значения для людей на одно стандартное отклонение ниже и выше среднего значения для непрерывного модератора и двух уровней категориального модератора.Моя проблема в том, что когда я пытался сделать это, графики содержат прогнозные значения для каждого условия, а не сворачивают мышление и условие значения и исключают условие управления.Кроме того, когда я пытаюсь выполнить простой анализ уклона, я могу получить только парные сравнения для всех четырех условий, а не для контрастов, которые меня интересуют.

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

1 Ответ

0 голосов
/ 17 июля 2019

На этот вопрос нельзя ответить по двум причинам: (1) код для mat является неполным и не будет выполняться, и (2) модель серьезно пересекает предоставленные подмножества данных, что приводит к 0 д.ф. из-за ошибки и невозможности проверить что-либо.

Однако, здесь приведен анализ гораздо более простой модели, которая может показать, как делать то, что нужно.

> simp = lm(sis_mp3_gpa ~ cond * Imp_pre.C, data = mydata)

> library(emmeans)
> emt = emtrends(simp, "cond", var = "Imp_pre.C")

> emt   # estimated slopes
 cond    Imp_pre.C.trend    SE df lower.CL upper.CL
 control            1.97  7.91  3    -23.2     27.1
 mindset            1.37 42.85  3   -135.0    137.7
 value              4.72 12.05  3    -33.6     43.1

Confidence level used: 0.95 

> # custom contrasts of those slopes
> contrast(emt, list(c1 = c(-1,1,0), c2 = c(-1,-1,2)))
 contrast estimate   SE df t.ratio p.value
 c1         -0.592 43.6  3 -0.014  0.9900 
 c2          6.104 49.8  3  0.123  0.9102 
...