Интересно, я что-то упускаю из виду, но не могли бы вы сделать это статистически, используя ANCOVA? Важной проблемой является то, что наклоны в двух регрессиях оцениваются с ошибкой. Они являются оценками склонов в населении в целом. Если проблема заключается в том, являются ли две линии регрессии параллельными или нет в популяции, то нет смысла сравнивать с напрямую для точной эквивалентности; они оба подвержены ошибкам / неопределенности, которые необходимо учитывать.2a1a2
Если мы думаем об этом со статистической точки зрения, и мы можем каким-то осмысленным образом объединить данные по и для обоих наборов данных (т. Е. и в обоих наборах взяты из двух групп населения с одинаковыми диапазонами для двух Переменные это просто отношения между ними, которые различаются в двух популяциях), тогда мы можем подогнать следующие две модели:у х уИксYИксY
Y^= б0+ б1х + б2г
а также
Y^= б0+ б1х + б2г+ б3х г
Где - коэффициенты модели, а - переменная / коэффициент группировки, указывающая, к какому набору данных относится каждое наблюдение. гбяг
Мы можем использовать таблицу ANOVA или F-коэффициент, чтобы проверить, соответствует ли вторая, более сложная модель данным лучше, чем более простая модель. Более простая модель утверждает, что наклоны двух линий одинаковы ( ), но линии смещены относительно друг друга на величину .б 2б1б2
Более сложная модель включает взаимодействие между уклоном линии и переменной группировки. Если коэффициент для этого члена взаимодействия значительно отличается от нуля или отношение ANOVA / F указывает на то, что более сложная модель лучше соответствует данным, то мы должны отвергнуть нулевую гипотезу о том, что две линии параллельны.
Вот пример в R с использованием фиктивных данных. Во-первых, данные с равными уклонами:
set.seed(2)
samp <- factor(sample(rep(c("A","B"), each = 50)))
d1 <- data.frame(y = c(2,5)[as.numeric(samp)] + (0.5 * (1:100)) + rnorm(100),
x = 1:100,
g = samp)
m1 <- lm(y ~ x * g, data = d1)
m1.null <- lm(y ~ x + g, data = d1)
anova(m1.null, m1)
Который дает
> anova(m1.null, m1)
Analysis of Variance Table
Model 1: y ~ x + g
Model 2: y ~ x * g
Res.Df RSS Df Sum of Sq F Pr(>F)
1 97 122.29
2 96 122.13 1 0.15918 0.1251 0.7243
Указывая на то, что мы не можем отвергнуть нулевую гипотезу равных наклонов в этой выборке данных. Конечно, мы хотели бы убедиться, что у нас достаточно мощности для обнаружения разницы, если она действительно существует, чтобы мы не могли ошибочно отклонить ноль, поскольку размер нашей выборки был слишком мал для ожидаемого эффекта.
Теперь с разных склонов.
set.seed(42)
x <- seq(1, 100, by = 2)
d2 <- data.frame(y = c(2 + (0.5 * x) + rnorm(50),
5 + (1.5 * x) + rnorm(50)),
x = x,
g = rep(c("A","B"), each = 50))
m2 <- lm(y ~ x * g, data = d2)
m2.null <- lm(y ~ x + g, data = d2)
anova(m2.null, m2)
Который дает:
> anova(m2.null, m2)
Analysis of Variance Table
Model 1: y ~ x + g
Model 2: y ~ x * g
Res.Df RSS Df Sum of Sq F Pr(>F)
1 97 21132.0
2 96 103.8 1 21028 19439 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Здесь у нас есть существенные доказательства против нулевой гипотезы и, таким образом, мы можем отклонить ее в пользу альтернативы (другими словами, мы отвергаем гипотезу о том, что наклоны двух линий равны).
Члены взаимодействия в двух моделях, которые я установил ( ), дают оценочную разницу в наклонах для двух групп. Для первой модели оценка разности уклонов мала (~ 0,003)б3х г
> coef(m1)
(Intercept) x gB x:gB
2.100068977 0.500596394 2.659509181 0.002846393
и тест по этому не сможет отвергнуть нулевую гипотезу, что эта разница в наклонах равна 0:T
> summary(m1)
Call:
lm(formula = y ~ x * g, data = d1)
Residuals:
Min 1Q Median 3Q Max
-2.32886 -0.81224 -0.01569 0.93010 2.29984
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.100069 0.334669 6.275 1.01e-08 ***
x 0.500596 0.005256 95.249 < 2e-16 ***
gB 2.659509 0.461191 5.767 9.82e-08 ***
x:gB 0.002846 0.008047 0.354 0.724
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.128 on 96 degrees of freedom
Multiple R-squared: 0.9941, Adjusted R-squared: 0.9939
F-statistic: 5347 on 3 and 96 DF, p-value: < 2.2e-16
Если мы обратимся к модели, подобранной ко второму набору данных, где мы сделали различия для уклонов для двух групп, мы увидим, что оценочная разница в наклонах двух линий составляет ~ 1 единицу.
> coef(m2)
(Intercept) x gB x:gB
2.3627432 0.4920317 2.8931074 1.0048653
Наклон для группы «A» составляет ~ 0,49 ( x
в приведенном выше выводе), в то время как для получения откоса для группы «B» нам нужно добавить разностные наклоны (заданные с помощью запоминаемого термина взаимодействия) к наклону группы «A» ; ~ 0,49 + ~ 1 = ~ 1,49. Это довольно близко к заявленному уклону для группы "B" 1,5. -test на этой разнице склонов также указывает , что оценка разности отделена от 0:T
> summary(m2)
Call:
lm(formula = y ~ x * g, data = d2)
Residuals:
Min 1Q Median 3Q Max
-3.1962 -0.5389 0.0373 0.6952 2.1072
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.362743 0.294220 8.031 2.45e-12 ***
x 0.492032 0.005096 96.547 < 2e-16 ***
gB 2.893107 0.416090 6.953 4.33e-10 ***
x:gB 1.004865 0.007207 139.424 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.04 on 96 degrees of freedom
Multiple R-squared: 0.9994, Adjusted R-squared: 0.9994
F-statistic: 5.362e+04 on 3 and 96 DF, p-value: < 2.2e-16
Первый вопрос на самом деле от геометрии. Если у вас есть две строки формы:
atan
Пример кода R:
Последняя строка - градусы.
Запись. Хотя мне было приятно вспомнить тригонометрию средней школы, по-настоящему полезным является ответ Гевина Симпсона. Поскольку наклоны линий регрессии являются случайными величинами, для их сравнения следует использовать статистическую гипотезу.
источник
... следуя ответу @mpiktas, вот как можно извлечь наклон из
lm
объекта и применить приведенную выше формулу.источник