本内容为【科研私家菜】R可视化之美之科研绘图系列课程
快来收藏关注【科研私家菜】
01 残差分析( residual analysis)
拟合的数值和实际数值就是残差(( residual )。残差分析( residual analysis)就是通过残差所提供的信息,分析出数据的可靠性、周期性或其他干扰。用于分析模型的假定正确与否的方法。所谓残差是指观测值与预测值(拟合值)之间的差,即实际观察值与回归估计值的差。
library(ggplot2)
mydata<-read.csv("Residual_Analysis_Data.csv",stringsAsFactors=FALSE)
fit <- lm(y2 ~ x, data = mydata)
mydata$predicted <- predict(fit) # Save the predicted values
mydata$residuals <- residuals(fit) # Save the residual values
mydata$Abs_Residuals<-abs(mydata$residuals) #
ggplot(mydata, aes(x = x, y = y2)) +
geom_point(aes(fill =Abs_Residuals, size = Abs_Residuals),shape=21,colour="black") + # size also mapped
scale_fill_continuous(low = "black", high = "red") +
geom_smooth(method = "lm", se = FALSE, color = "lightgrey") +
geom_point(aes(y = predicted), shape = 1) +
geom_segment(aes(xend = x, yend = predicted), alpha = .2) +# > Color AND size adjustments made here...
guides(fill = guide_legend((title="Rresidual")),
size = guide_legend((title="Rresidual")))+
ylim(c(0,150))+
xlab("X-Axis")+
ylab("Y-Axis")+
theme(text=element_text(size=15,face="plain",color="black"),
axis.title=element_text(size=10,face="plain",color="black"),
axis.text = element_text(size=10,face="plain",color="black"),
legend.position = "right",
legend.title = element_text(size=13,face="plain",color="black"),
legend.text = element_text(size=10,face="plain",color="black"),
legend.background = element_rect(fill=alpha("white",0)))
效果如下:
02 残差图绘制及比较
d<-mydata
fit <- lm(y5 ~ x+I(x^2), data = d)
# Obtain predicted and residual values
d$predicted <- predict(fit) # Save the predicted values
d$residuals0 <- residuals(fit) # Save the residual values
d$Residuals<-abs(d$residuals0 )
ggplot(d, aes(x = x, y = y5)) +
geom_smooth(method = "lm",formula = y ~ x+I(x^2), se = FALSE, color = "lightgrey") +
geom_segment(aes(xend = x, yend = predicted), alpha = .2) +
geom_point(aes(fill =Residuals, size = Residuals),shape=21,colour="black") + # size also mapped
scale_fill_continuous(low = "black", high = "red") +
#scale_color_gradient2(low = "blue", mid = "white", high = "red") +
geom_point(aes(y = predicted), shape = 1) + # Size legend also removed
#ylim(c(0,150))+
xlab("X-Axis")+
ylab("Y-Axis")+
geom_point(aes(y = predicted), shape = 1) +
guides(fill = guide_legend((title="Rresidual")),
size = guide_legend((title="Rresidual")))+
theme(text=element_text(size=15,face="plain",color="black"),
axis.title=element_text(size=10,face="plain",color="black"),
axis.text = element_text(size=10,face="plain",color="black"),
legend.position = "right",
legend.title = element_text(size=13,face="plain",color="black"),
legend.text = element_text(size=10,face="plain",color="black"),
legend.background = element_rect(fill=alpha("white",0)))
采用黑色到红色渐变颜色和气泡面积大小两个视觉暗示对应残差的绝对值大小,用于实际数据点的表示;而拟合数据点则用小空心圆圈表示,并放置在灰色的拟合曲线上。用直线连接实际数据点和拟合数据点。残差的绝对值越大,颜色越红、气泡也越大,连接直线越长,这样可以很清晰地观察数据的拟合效果。
效果如下:
参考资料
《R语言数据可视化之美》
关注R小盐,关注科研私家菜(溦❤工众號: SciPrivate),有问题请联系R小盐。让我们一起来学习 R可视化之美之科研绘图