【发布时间】:2017-04-29 20:25:12
【问题描述】:
我是多级分析的初学者,并尝试了解如何使用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")
编辑:Predict est <- predict(fit, newx = t) 给出与 fit 相同的结果,但我仍然不知道“如何聚类”。
编辑 2 @Keith:公式 y ~ t * p1 读取为 y = (a + c * p1) + (b + d * p1) * t。对于“第一条蓝线”c, d 都是零。
【问题讨论】:
-
t和y总是一样吗?你会一直有一个单因素列吗? -
获得拟合值的更好方法是通过
predict()。以newdata的形式传递一个data.frame,以供预测和惊讶。 -
@KeithHughitt 不,我真正的问题会复杂得多,请看here 的简化示例。这个问题的主要目的实际上是“如何获得具有正确线数的图形”。即使在这种简单的情况下(
p1只有 2 个级别!)我失败了;-) -
@RomanLuštrik 查看我的编辑。我知道
predict(虽然我不明白为什么它比lm好),但这里的问题是如何获得“正确的行数”。另请参阅上面的评论。这可能是一个愚蠢的问题,但我想不通。 -
什么是“集群”?没有像
newx这样的论点。我不明白这里的行数有什么问题?行数应该与p1中的因子级别一样多,对吗?