R 如何使用ggplot2中值的倒数来衡量stat_smooth
在ggplot2中给出了这样一个箱线图示例:R 如何使用ggplot2中值的倒数来衡量stat_smooth,r,ggplot2,boxplot,smoothing,R,Ggplot2,Boxplot,Smoothing,在ggplot2中给出了这样一个箱线图示例: ggplot(diamonds, aes(carat, price)) + geom_boxplot(aes(group = cut_width(carat, 0.25)), outlier.alpha = 0.1) + stat_smooth( method="lm", formula = y ~ poly(x,2), n= 40, se=TRUE, color="red", aes(group=1), size=1.5) 我得到的图像
ggplot(diamonds, aes(carat, price)) +
geom_boxplot(aes(group = cut_width(carat, 0.25)), outlier.alpha = 0.1) +
stat_smooth( method="lm", formula = y ~ poly(x,2), n= 40, se=TRUE, color="red", aes(group=1), size=1.5)
我得到的图像如下所示:
然而,stat_平滑线在很大程度上受每个克拉类别中点数的影响。我更愿意平等地对待每一个类别,在我看来,这意味着用一个特定的克拉值对每个点进行加权,用该值与总点数的倒数进行加权。(因此,在5时,点的权重为1,在1时,点的权重为1/aBigNumber。)我尝试了权重美学,但它打破了箱线图。我尝试将权重添加到平滑中,但出现了一个错误:
错误:ggplot2不知道如何处理类uneval的数据
那么,如何对平滑函数进行加权,以便对类别进行平等处理(与类别中的点数相反),并在输出中保持箱线图?您可以这样做
library(dplyr)
diamonds2 <- diamonds %>% mutate(cutcarat=cut_width(carat, 0.25)) %>%
group_by(cutcarat) %>%
summarise(carat=mean(carat), price=mean(price))
ggplot() +
geom_boxplot(data=diamonds,
aes(x=carat, y=price, group = cut_width(carat, 0.25)),
outlier.alpha = 0.1) +
geom_smooth(data=diamonds2,
aes(x=carat, y=price), method="lm",
formula = y ~ poly(x,2), n= 40, se=TRUE, color="red", size=1.5)
库(dplyr)
钻石2%变异(切割克拉=切割宽度(克拉,0.25))%>%
组别(cutcarat)%>%
汇总(克拉=平均值(克拉),价格=平均值(价格))
ggplot()+
geom_箱线图(数据=菱形,
aes(x=克拉,y=价格,组=切割宽度(克拉,0.25)),
离群值(α=0.1)+
几何光滑(数据=直径2,
aes(x=克拉,y=价格),method=“lm”,
公式=y~多边形(x,2),n=40,se=TRUE,color=“red”,size=1.5)
正如这里所做的解释:平滑函数被拟合到具有值范围和该值范围的平均输出的矩阵上,本质上给出了一条拟合到相等加权值的曲线,因为在区间的每个点上只有一条曲线。