如何绘制具有分类变量的多项式回归图?
How can a graph of a polynomial regression with a categorical variable be plotted?
在R统计包中,有没有办法绘制一个连续变量和一个分类变量的二阶多项式回归图?
要生成具有一个分类变量的线性回归图:
library(ggplot2)
library(ggthemes) ## theme_few()
set.seed(1)
df <- data.frame(minutes = runif(60, 5, 15), endtime=60, category="a")
df$category = df$category=letters[seq( from = 1, to = 2 )]
df$endtime = df$endtime + df$minutes^3/180 + df$minutes*runif(60, 1, 2)
ggplot(df, aes(y=endtime, x=minutes, col = category)) +
geom_point() +
geom_smooth(method=lm) +
theme_few()
绘制一个连续变量为一的多项式图:
ggplot(df, aes(x=minutes, y=endtime)) +
geom_point() +
stat_smooth(method='lm', formula = y ~ poly(x,2), size = 1) +
xlab('Minutes of warm up') +
ylab('End time')
但是我不知道如何绘制具有一个连续变量和一个分类变量的多项式图。
只需添加一个 colour
或 group
映射。这将使 ggplot 拟合并显示每个类别的 separate 多项式回归。 (1) 无法显示 additive 混合多项式回归(即 lm(y ~ poly(x,2) + category)
); (2) 这里显示的与交互模型 lm(y ~ poly(x,2)*col)
的结果 完全 不等同,因为残差(以及置信带的宽度)是单独估计的每组。
ggplot(df, aes(x=minutes, y=endtime, col = category)) +
geom_point() +
stat_smooth(method='lm', formula = y ~ poly(x,2)) +
labs(x = 'Minutes of warm up', y = 'End time') +
theme_few()
在R统计包中,有没有办法绘制一个连续变量和一个分类变量的二阶多项式回归图?
要生成具有一个分类变量的线性回归图:
library(ggplot2)
library(ggthemes) ## theme_few()
set.seed(1)
df <- data.frame(minutes = runif(60, 5, 15), endtime=60, category="a")
df$category = df$category=letters[seq( from = 1, to = 2 )]
df$endtime = df$endtime + df$minutes^3/180 + df$minutes*runif(60, 1, 2)
ggplot(df, aes(y=endtime, x=minutes, col = category)) +
geom_point() +
geom_smooth(method=lm) +
theme_few()
绘制一个连续变量为一的多项式图:
ggplot(df, aes(x=minutes, y=endtime)) +
geom_point() +
stat_smooth(method='lm', formula = y ~ poly(x,2), size = 1) +
xlab('Minutes of warm up') +
ylab('End time')
但是我不知道如何绘制具有一个连续变量和一个分类变量的多项式图。
只需添加一个 colour
或 group
映射。这将使 ggplot 拟合并显示每个类别的 separate 多项式回归。 (1) 无法显示 additive 混合多项式回归(即 lm(y ~ poly(x,2) + category)
); (2) 这里显示的与交互模型 lm(y ~ poly(x,2)*col)
的结果 完全 不等同,因为残差(以及置信带的宽度)是单独估计的每组。
ggplot(df, aes(x=minutes, y=endtime, col = category)) +
geom_point() +
stat_smooth(method='lm', formula = y ~ poly(x,2)) +
labs(x = 'Minutes of warm up', y = 'End time') +
theme_few()