#r #ggplot2 #linear-regression
#r #ggplot2 #линейная регрессия
Вопрос:
Я провожу анализ ковариации, моделируя, как непрерывная переменная (назовем ее contvar) влияет на реакцию для каждого из трех уровней категориального фактора (catfact).
Сначала я сделал графики с помощью ggplot2, которые показывали три линейные регрессии, либо граненые таким образом с тремя панелями, либо все на одной панели. Я использовал этот код для добавления строк регрессии:
geom_smooth(aes(x = contvar, y = response, colour = catfact), show.legend = FALSE, formula = 'y ~ x', method = "lm", se = FALSE)
Проанализировав полную модель, допускающую взаимодействие между contvar и catfact, я обнаружил, что термин взаимодействия не имеет значения, поэтому я удалил его, чтобы создать минимальную адекватную модель, как таковую:
minimal_adequate_model lt;- lm(response ~ contvar catfact, data = data)
Как мне теперь снова построить три линии регрессии, но на этот раз так, чтобы все они имели одинаковый градиент (градиент, извлеченный из minimal_adequate_model)?
Я нашел обходной путь (ниже), но это кажется действительно неуклюжим и не идеально подходит для контроля эстетики и т. Д.
#First I made the equations for each level of catfact as objects separately: lvl1_equation lt;- function(x){coef(minimal_adequate_model)[2] * x coef(minimal_adequate_model)[1]} lvl2_equation lt;- function(x){coef(minimal_adequate_model)[2] * x coef(minimal_adequate_model)[1] coef(minimal_adequate_model)[3]} lvl3_equation lt;- function(x){coef(minimal_adequate_model)[2] * x coef(minimal_adequate_model)[1] coef(minimal_adequate_model)[3] coef(minimal_adequate_model)[4]} #And then I included them in the ggplot2 like this: stat_function(fun = control_equation,geom="line", col = "#f0746e") stat_function(fun = low_equation,geom="line", col = "#dc3977") stat_function(fun = max_equation,geom="line", col = "#7c1d6f")
Я чувствую, что, возможно, упускаю здесь что-то очевидное, поэтому я был бы очень благодарен за любые мысли.