R语言学习-添加回归模型最优拟合线(二)

上一期给大家讲述了如何给简单散点图添加回归模型拟合线,今天给大家讲一下如何给散点图添加最优拟合曲线,以及在图上添加拟合的函数。

使用的函数包: gcookbook,ggplot2,ggpubr,dplyr,scales,reshape2,grid,plyr,AICmodavg,stringr.(必须安装了这些包)。

今天使用的是R语言自带数据集:mpg

一,加载R包以及重构数据

library(dplyr)
library(scales)
library(reshape2)
library(grid)
library(gcookbook)
library(ggplot2)
library(ggpubr)
library(AICcmodavg)
library(plyr)
library(stringr)
mpg1<-data.frame(mpg$hwy,mpg$displ)#重构数据,选取了mpg数据集中的两变量 colnames(mpg1)[1]<-"x" #将mpg1中的第一列数据名称改为x,第二列为y colnames(mpg1)[2]<-"y" head(mpg1) #查看前六行数据< code></-data.frame(mpg$hwy,mpg$displ)#重构数据,选取了mpg数据集中的两变量>

R语言学习-添加回归模型最优拟合线(二)

二,绘制基础散点图

p1<-ggplot(mpg1,aes(x,y))+geom_point()+stat_smooth(method="loess",formula=y~x,level=0.95,colour="red",alpha=0.3,span=0.6)+stat_cor(method="pearson",label.x=35)+scale_x_continuous(limits=c(10,50))+scale_y_continuous(limits=c(0,8)) p1< code></-ggplot(mpg1,aes(x,y))+geom_point()+stat_smooth(method="loess",formula=y~x,level=0.95,colour="red",alpha=0.3,span=0.6)+stat_cor(method="pearson",label.x=35)+scale_x_continuous(limits=c(10,50))+scale_y_continuous(limits=c(0,8))>

这里使用了loess(局部加权回归),同时使用了Pearson相关性分析,label(放置相关系数的位置),使用scale_x_continuous和scale_y_continuous限制横纵坐标的范围。

R语言学习-添加回归模型最优拟合线(二)

三,设定拟合模型,简单绘制图形

这里以线性模型为例子,选出其中最适合的模型

models<-list(lm(y~x,data=mpg1),lm(y~i(1 x),data="mpg1))" #构造了二个线性模型,其中i()函数,避免函数模型的错误。< code></-list(lm(y~x,data=mpg1),lm(y~i(1>

查看所有模型的参数

models

R语言学习-添加回归模型最优拟合线(二)

绘制散点图二个模型拟合线

p2<-ggplot(mpg1, aes(x, y)) +geom_point()+stat_smooth(method="lm" , formula="as.formula(models[[1]])," size="2.5," se="FALSE," colour="red" ) +stat_smooth(method="lm" p2< code></-ggplot(mpg1,>

R语言学习-添加回归模型最优拟合线(二)

四,通过逐步回归计算AIC值,选出最优模型。

ldply(models, function(mod){data.frame(AICc=AICc(mod), AIC=AIC(mod), model=deparse(formula(mod))) })

AIC值越小,拟合效果越好。

R语言学习-添加回归模型最优拟合线(二)

所以我们选定了模型一,对模型一进一步进行回归分析。

tlm<-lm(y~x,data=mpg1) summary(tlm)< code></-lm(y~x,data=mpg1)>

R语言学习-添加回归模型最优拟合线(二)

可以从结果看出,拟合效果是显著的。

五,将拟合的模型函数加到图中

p3<-ggplot(mpg1, aes(x, y)) +geom_point(shape="19,alpha=0.3,stroke=0,size=mpg1$y)+stat_smooth(method="lm",formula=y~x,se=TRUE,colour="yellow",fill="black",alpha=0.2)" +scale_x_continuous(limits="c(10,50))+scale_y_continuous(limits=c(0,8))" +theme_bw() +theme(panel.border="element_blank(),panel.grid=element_blank(),axis.line=element_line(colour="black"))" +theme(axis.text="element_text(colour='black',size=12),axis.title=element_text(size=14,colour='black'))" +annotate("text",x="20,y=7.5,label="y==-0.166x+7.368(R^2==0.59)",hjust=0,size=6,parse=TRUE)" p3< code></-ggplot(mpg1,>
p4<-p3+labs(x="自变量",y="因变量") p4< code></-p3+labs(x="自变量",y="因变量")>

R语言学习-添加回归模型最优拟合线(二)

end~

对于模型的选取,不仅仅有线性模型,还有非线性模型,对此的要根据自己的数据,相应的变化函数。

Original: https://blog.csdn.net/m0_61206827/article/details/121989926
Author: 吹哨子的喇叭花
Title: R语言学习-添加回归模型最优拟合线(二)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/630919/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球