自定义意大利面图
customizing spaghetti plot
我正在尝试创建自定义意大利面条图
假设这是我的数据集
data(package = "geepack")
data("dietox")
head(dietox)
head(dietox, n =20)
Pig Evit Cu Litter Start Weight Feed Time
4601 Evit000 Cu000 1 26.50000 26.50000 NA 1
4601 Evit000 Cu000 1 26.50000 27.59999 5.200005 2
4601 Evit000 Cu000 1 26.50000 36.50000 17.600000 3
4601 Evit000 Cu000 1 26.50000 40.29999 28.500000 4
4601 Evit000 Cu000 1 26.50000 49.09998 45.200001 5
4601 Evit000 Cu000 1 26.50000 55.39999 56.900002 6
4601 Evit000 Cu000 1 26.50000 59.59998 71.700005 7
4601 Evit000 Cu000 1 26.50000 67.00000 86.800001 8
4601 Evit000 Cu000 1 26.50000 76.59998 104.900002 9
4601 Evit000 Cu000 1 26.50000 86.50000 123.000000 10
4601 Evit000 Cu000 1 26.50000 91.59998 140.900002 11
4601 Evit000 Cu000 1 26.50000 98.59998 160.000000 12
4602 Evit000 Cu035 1 28.29999 28.29999 NA 1
4602 Evit000 Cu035 1 28.29999 30.09999 3.300003 2
4602 Evit000 Cu035 1 28.29999 38.29999 13.200001 3
4602 Evit000 Cu035 1 28.29999 44.50000 26.100000 4
4602 Evit000 Cu035 1 28.29999 51.59998 43.600002 5
4602 Evit000 Cu035 1 28.29999 57.59998 55.200001 6
ggplot(data = dietox, aes(x = Time, y = Weight, group = Pig)) +
geom_line()
这会创建一个这样的情节
我感兴趣的是在两个时间点创建一条 gee 预测回归线,
1)0-6, 2)6-12。预期的情节应该是这样的。
mf <- formula(Weight ~ Cu * (Time + I(Time^2) + I(Time^3)))
gee1 <- geeglm(mf, data=dietox, id=Pig, family="gaussian", corstr="ar1")
gee1
非常感谢您的帮助。
您的模型将变量 Cu
考虑在内,因此您的每个时期都会有 3 条不同的线 - 一条线对应 Cu
的每个级别。由于这只是从包中提取的示例数据,而您正在寻找每个周期的单行,因此我假设您的实际数据是单个变量的函数。
绘制此图的方法是手动预测两个独立时期的线并绘制它们:
library(geepack)
library(ggplot2)
library(hrbrthemes)
data("dietox")
mf <- formula(Weight ~ Time + I(Time^2) + I(Time^3))
gee1 <- geeglm(mf, data = dietox[dietox$Time <= 6,],
id = Pig, family = "gaussian", corstr ="ar1")
gee2 <- geeglm(mf, data = dietox[dietox$Time >= 6,],
id = Pig, family = "gaussian", corstr ="ar1")
dietox$predictions <- numeric(1)
dietox$period <- "A"
dietox$predictions[dietox$Time <= 6] <- predict(gee1)
dietox$predictions[dietox$Time >= 6] <- predict(gee2)
dietox$period[dietox$Time >= 6] <- "B"
ggplot(data = dietox, aes(x = Time, y = Weight, group = Pig)) +
geom_line(aes(group = Pig), size = 2, alpha = 0.2) +
geom_line(aes(y = predictions, group = interaction(Pig, period),
colour = period), size = 2) +
theme_ipsum()
由 reprex package (v2.0.1)
于 2022-03-09 创建
我正在尝试创建自定义意大利面条图
假设这是我的数据集
data(package = "geepack")
data("dietox")
head(dietox)
head(dietox, n =20)
Pig Evit Cu Litter Start Weight Feed Time
4601 Evit000 Cu000 1 26.50000 26.50000 NA 1
4601 Evit000 Cu000 1 26.50000 27.59999 5.200005 2
4601 Evit000 Cu000 1 26.50000 36.50000 17.600000 3
4601 Evit000 Cu000 1 26.50000 40.29999 28.500000 4
4601 Evit000 Cu000 1 26.50000 49.09998 45.200001 5
4601 Evit000 Cu000 1 26.50000 55.39999 56.900002 6
4601 Evit000 Cu000 1 26.50000 59.59998 71.700005 7
4601 Evit000 Cu000 1 26.50000 67.00000 86.800001 8
4601 Evit000 Cu000 1 26.50000 76.59998 104.900002 9
4601 Evit000 Cu000 1 26.50000 86.50000 123.000000 10
4601 Evit000 Cu000 1 26.50000 91.59998 140.900002 11
4601 Evit000 Cu000 1 26.50000 98.59998 160.000000 12
4602 Evit000 Cu035 1 28.29999 28.29999 NA 1
4602 Evit000 Cu035 1 28.29999 30.09999 3.300003 2
4602 Evit000 Cu035 1 28.29999 38.29999 13.200001 3
4602 Evit000 Cu035 1 28.29999 44.50000 26.100000 4
4602 Evit000 Cu035 1 28.29999 51.59998 43.600002 5
4602 Evit000 Cu035 1 28.29999 57.59998 55.200001 6
ggplot(data = dietox, aes(x = Time, y = Weight, group = Pig)) +
geom_line()
这会创建一个这样的情节
我感兴趣的是在两个时间点创建一条 gee 预测回归线, 1)0-6, 2)6-12。预期的情节应该是这样的。
mf <- formula(Weight ~ Cu * (Time + I(Time^2) + I(Time^3)))
gee1 <- geeglm(mf, data=dietox, id=Pig, family="gaussian", corstr="ar1")
gee1
非常感谢您的帮助。
您的模型将变量 Cu
考虑在内,因此您的每个时期都会有 3 条不同的线 - 一条线对应 Cu
的每个级别。由于这只是从包中提取的示例数据,而您正在寻找每个周期的单行,因此我假设您的实际数据是单个变量的函数。
绘制此图的方法是手动预测两个独立时期的线并绘制它们:
library(geepack)
library(ggplot2)
library(hrbrthemes)
data("dietox")
mf <- formula(Weight ~ Time + I(Time^2) + I(Time^3))
gee1 <- geeglm(mf, data = dietox[dietox$Time <= 6,],
id = Pig, family = "gaussian", corstr ="ar1")
gee2 <- geeglm(mf, data = dietox[dietox$Time >= 6,],
id = Pig, family = "gaussian", corstr ="ar1")
dietox$predictions <- numeric(1)
dietox$period <- "A"
dietox$predictions[dietox$Time <= 6] <- predict(gee1)
dietox$predictions[dietox$Time >= 6] <- predict(gee2)
dietox$period[dietox$Time >= 6] <- "B"
ggplot(data = dietox, aes(x = Time, y = Weight, group = Pig)) +
geom_line(aes(group = Pig), size = 2, alpha = 0.2) +
geom_line(aes(y = predictions, group = interaction(Pig, period),
colour = period), size = 2) +
theme_ipsum()
由 reprex package (v2.0.1)
于 2022-03-09 创建