我有以下
RMSE Model fold
1 0.4164260 lm 1
2 0.5412474 lm 2
3 0.3496156 lm 3
4 0.4431751 lm 4
5 0.4082882 lm 5
6 0.4398985 lm 6
7 0.4506528 lm 7
8 0.4236024 lm 8
9 0.4346417 lm 9
10 0.4982427 lm 10
11 0.3993842 MARS 1
12 0.5684007 MARS 2
13 0.3487462 MARS 3
14 0.4174607 MARS 4
15 0.3930033 MARS 5
16 0.4456201 MARS 6
17 0.4373339 MARS 7
18 0.4110089 MARS 8
19 0.4249311 MARS 9
20 0.4295155 MARS 10
我的情节如下:
ggplot(df, aes(x=factor(fold), y=RMSE, group=Model, colour=Model)) + geom_line()
我想为两个模型做平均线。我怎样才能做到这一点?
答案 0 :(得分:4)
一种方法是创建一个包含手段的单独数据框:
library(ggplot2)
library(plyr)
df_means <- ddply(df, "Model", summarise, mean_RMSE = mean(RMSE))
# Model mean_RMSE
# 1 lm 0.4405790
# 2 MARS 0.4275405
ggplot(df, aes(x=factor(fold), y=RMSE, group=Model, colour=Model)) +
geom_line() +
geom_hline(data=df_means, aes(yintercept=mean_RMSE, color=Model),
linetype="dashed")
你也可以使用geom_line()
和“stat”来绘制群体审美的意思(尽管你会有更少的控制权):
ggplot(df, aes(x=factor(fold), y=RMSE, group=Model, colour=Model)) +
geom_line() +
geom_line(stat="hline", yintercept="mean", linetype="dashed")
这使得该行不会“延伸”: