Я хотел бы проверить симетрию в реакции наблюдателя на контрастные стимулы разной полярности, положительные (белый) и отрицательные (черные). Я взял время реакции (RT) как зависимую переменную по четырем различным контрастам. Известно, что время отклика следует кривой Пьерона, асимптоты которой помещены (1) на пороге наблюдателя (Inf) и (2) на базовом RT, расположенном где-то между 250 и 450 мсек. Эти знания позволяют нам линеаризовать взаимосвязь, преобразуя независимую переменную (эффективный контраст EC) как 1 / EC ^ 2 (tEC), поэтому уравнение, связывающее RT с EC, становится:
RT = m * tEC + RT0
Чтобы проверить симметрию, я установил критерии: одинаковый наклон и одинаковый отрезок в двух полярностях подразумевают симметрию. Чтобы получить коэффициенты, я сделал линейную модель с взаимодействием (кодирование через фиктивную переменную для полярности: положительная или отрицательная). Для меня результат lm ясен, но некоторые коллеги предпочитают что-то более похожее на результат ANOVA. Поэтому я решил использовать emmeans, чтобы создать контраст. С наклоном все в порядке, но при вычислении пересечений начинаются проблемы. Перехваты, вычисленные lm, сильно отличаются от вывода emmeans, и выводы также разные. Ниже я воспроизведу этот пример. Вопрос двоякий: можно ли использовать emmeans для решения моей проблемы? Если нет, можно ли контрастировать с помощью других пакетов (какой)?
Данные
RT1000 |
EC |
tEC |
Polarity |
596.3564 |
-25 |
0.001600 |
Negative |
648.2471 |
-20 |
0.002500 |
Negative |
770.7602 |
-17 |
0.003460 |
Negative |
831.2971 |
-15 |
0.004444 |
Negative |
1311.3331 |
15 |
0.004444 |
Positive |
1173.8942 |
17 |
0.003460 |
Positive |
1113.7240 |
20 |
0.002500 |
Positive |
869.3635 |
25 |
0.001600 |
Positive |
Код
# Model
model <- lm(RT1000 ~ tEC * Polarity, data = Data)
# emmeans
library(emmeans)
# Slopes
m.slopes <- lstrends(model, "Polarity", var="tEC")
# Intercepts
m.intercept <- lsmeans(model, "Polarity")
# Contrasts
pairs(m.slopes)
pairs(m.intercept)
Выходы
Modelo
term |
estimate |
std.error |
statistic |
p.value |
(Intercept) |
449.948 |
66.829 |
6.733 |
0.003 |
tEC |
87205.179 |
20992.976 |
4.154 |
0.014 |
PolarityPositive |
230.946 |
94.511 |
2.444 |
0.071 |
tEC:PolarityPositive |
58133.172 |
29688.551 |
1.958 |
0.122 |
Slopes (it is all right)
Polarity |
tEC.trend |
SE |
df |
lower.CL |
upper.CL |
Negative |
87205.18 |
20992.98 |
4 |
28919.33 |
145491.0 |
Positive |
145338.35 |
20992.98 |
4 |
87052.51 |
203624.2 |
contrast |
estimate |
SE |
df |
t.ratio |
p.value |
Negative - Positive |
-58133.17 |
29688.55 |
4 |
-1.958101 |
0.12182 |
Intercepts (problem)
Polarity |
lsmean |
SE |
df |
lower.CL |
upper.CL |
Negative |
711.6652 |
22.2867 |
4 |
649.7874 |
773.543 |
Positive |
1117.0787 |
22.2867 |
4 |
1055.2009 |
1178.957 |
contrast |
estimate |
SE |
df |
t.ratio |
p.value |
Negative - Positive |
-405.4135 |
31.51816 |
4 |
-12.86285 |
0.000211 |
Вычисленные перехваты с помощью emmeans отличаются от тех, которые вычисляются с помощью lm. Думаю, проблема в том, что модель не определена для EC = 0. Но я не уверен.