我正在尝试可视化 ANCOVA 的预测输出
型号为:
m1 <- lm(PD~SR*Type, data = df
(带交互项)
m2 <- lm(PD~SR+Type, data = df
(无交互项)
我的示例代码
library(broom)
library(purrr)
df <- data.frame(PD=c(10,20,30,40,50,10,20,33,12,52,21,43),
SR=c(5,10,20,24,6,21,59,22,1,11,12,3),
n=c("tree1", "tree1", "tree1",
"tree2", "tree2","tree2",
"tree3", "tree3", "tree3",
"tree4", "tree4","tree4"),
Type=c("a", "b",'c',
"a", "b",'c',
"a", "b",'c',
"a", "b",'c'))
x <- df %>%
nest(data = -n) %>%
mutate(fit = map(data, ~lm(PD~SR * Type, data= .x)))
# Plot
x %>% unnest(data) %>%
group_by(n) %>%
do(modelr::add_predictions(., first(.$fit))) #%>%
ggplot(aes(SR, PD)) +
geom_line(aes(y = pred, colour = n)) +
geom_point(aes(fill = Type), alpha = 0.05) +
facet_wrap(~Type) +
theme(legend.position = "none")
(例子)
我只想为所有行设置灰色,但上面的代码不起作用,因为我使用了geom_line
. 这就是为什么我想得到intercept
and slope
,然后用它geom_abline
来制作只用一种颜色填充的多条回归线。有人对此有任何建议吗?
或者如果我的理解有误,请指导我。让我们假设 ANCOVA 的交互项很重要,所以我期望在这种情况下每种类型 ( a
, b
, c
) 的截距/斜率是不同的。如果我在这里为每种类型提取模型的截距和斜率并构建它们的直方图以便从其他方法(即平均方法)评估我的结果是否有意义?