gpt4 book ai didi

r - 如何在多层次分析中用不同颜色显示不同层次

转载 作者:行者123 更新时间:2023-12-04 12:25:57 26 4
gpt4 key购买 nike

我是多级分析的初学者,并试图了解如何使用 base-R 中的绘图函数绘制图形。 .我理解 fit 的输出下面,但我正在努力进行可视化。 df只是一些简单的测试数据:

t <- seq(0, 10, 1)
df <- data.frame(t = t,
y = 1.5+0.5*(-1)^t + (1.5+0.5*(-1)^t) * t,
p1 = as.factor(rep(c("p1", "p2"), 10)[1:11]))

fit <- lm(y ~ t * p1, data = df)

# I am looking for an automated version of that:
plot(df$t, df$y)
lines(df$t[df$p1 == "p1"],
fit$coefficients[1] + fit$coefficients[2] * df$t[df$p1 == "p1"], col = "blue")
lines(df$t[df$p1 == "p2"],
fit$coefficients[1] + fit$coefficients[2] * df$t[df$p1 == "p2"] +
+ fit$coefficients[3] + fit$coefficients[4] * df$t[df$p1 == "p2"], col = "red")

它应该知道它必须包含 p1并且有两条线。
结果应如下所示:
Fit with two levels (interactions needs to be included)

编辑 : 预测 est <- predict(fit, newx = t)给出与 fit 相同的结果,但我仍然不知道“如何聚类”。

编辑 2 @Keith : 公式 y ~ t * p1阅读 y = (a + c * p1) + (b + d * p1) * t .对于“第一条蓝线” c, d都是零。

最佳答案

这就是我要做的。我包括一个 ggplot2情节的版本也是如此,因为我发现它更适合我思考情节的方式。
这个版本会占p1中的级别数.如果您想补偿模型参数的数量,您只需调整构建方式 xy包括所有相关变量。我应该指出,如果你省略了 newdata参数,将在提供给 lm 的数据集上进行拟合.

t <- seq(0, 10, 1)
df <- data.frame(t = t,
y = 1.5+0.5*(-1)^t + (1.5+0.5*(-1)^t) * t,
p1 = as.factor(rep(c("p1", "p2"), 10)[1:11]))

fit <- lm(y ~ t * p1, data = df)

xy <- data.frame(t = t, p1 = rep(levels(df$p1), each = length(t)))
xy$fitted <- predict(fit, newdata = xy)

library(RColorBrewer) # for colors, you can define your own
cols <- brewer.pal(n = length(levels(df$p1)), name = "Set1") # feel free to ignore the warning

plot(x = df$t, y = df$y)
for (i in 1:length(levels(xy$p1))) {
tmp <- xy[xy$p1 == levels(xy$p1)[i], ]
lines(x = tmp$t, y = tmp$fitted, col = cols[i])
}

enter image description here
library(ggplot2)
ggplot(xy, aes(x = t, y = fitted, color = p1)) +
theme_bw() +
geom_point(data = df, aes(x = t, y = y)) +
geom_line()

enter image description here

关于r - 如何在多层次分析中用不同颜色显示不同层次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41143746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com