【R语言】简单线性回归图的绘制

1. 打开文件

#读取scatter_plot2.csv
data<-read.csv("G:/scatter_plot2.csv",row.names = 1)
#画一个散点图大致看看mcode于degree的关系
data

2. 用ggplot2画散点图

library(ggplot2) #加载ggplot2包
ggplot(data,aes(x=Degree,y=MCODE_Score)) + geom_point(size=3,shape=19)

散点图
分组散点图

#以颜色区分
ggplot(data,aes(x=Degree,y=MCODE_Score,colour=sex)) + geom_point(size=3,shape=19)
#以形状区分
ggplot(data,aes(x=Degree,y=MCODE_Score,shape=sex)) + geom_point(size=3)

以颜色区分
以形状区分
解决点覆盖
当点的密度大时,我们可以改变点的透明度来区分各个点。当然我们可以使用bin的方法来区分,这种方法是把点的形状设定为长方形,密度越大的长方形区域越透明。

ggplot(data,aes(x=Degree,y=MCODE_Score,colour=sex)) +geom_point(alpha=.1)
ggplot(data,aes(x=Degree,y=MCODE_Score,colour=sex)) + geom_point(alpha=.01)
ggplot(data,aes(x=Degree,y=MCODE_Score,colour=sex)) + stat_bin2d()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当其中的一个或者两个变量为离散型数据时,也会导致覆盖的问题。我们可以使用jitter方法和box的方法。

ggplot(data,aes(x=Degree,y=MCODE_Score))+geom_point()
ggplot(data,aes(x=Degree,y=MCODE_Score))+geom_point(position="jitter")
#position="jitter"等价于geom_jitter,即下面的方法
ggplot(data,aes(x=Degree,y=MCODE_Score))+geom_point(position=position_jitter(width=.5, height=0))
ggplot(data,aes(x=Degree,y=MCODE_Score))+ geom_boxplot(aes(group=Time))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.增加拟合的回归线

#利用ggplot函数画图
#添加拟合直线必须定义method=lm否则就会默认是method=loss了
#默认的method是loess
p <- ggplot(data,aes(x=Degree,y=MCODE_Score)) + geom_point(shape=19) + xlab("Degree") + ylab("MCODE_Score")+geom_smooth(method = lm)

#该回归直线的置信区间默认的置信度是95%,也可以对其进行修改,99%的置信度
p0.99 <- ggplot(data,aes(x=Degree,y=MCODE_Score)) + geom_point(shape=19) + xlab("Degree") + ylab("MCODE_Score")+geom_smooth(method = lm,level=0.99)

#也可以不显示置信区间
p0 <- ggplot(data,aes(x=Degree,y=MCODE_Score)) + geom_point(shape=19) + xlab("Degree") + ylab("MCODE_Score")+geom_smooth(method = lm,se=FALSE)

示例为95%置信区间的线性回归图,99%置信区间的线性回归图和不加置信区间的线性回归图
95%置信区间
99%置信区间
不加置信区间
4. 计算method=lm的简单线性回归相关参数k值,b值,以及r平方值

#计算method=lm的简单线性回归
#线线回归分析
data.lm<-lm(data$MCODE_Score~data$Degree,data=data)
#线性回归表达式编辑,截距是coef(data.lm)[1],斜率是coef(data.lm)[2])
#此处预先定义是为后续画图需要添加回归曲线公式文本
formula <- sprintf("italic(y) == %.2f %+.2f * italic(x)", #这个就是y=b+kx的表达式的写法
                   round(coef(data.lm)[1],4),round(coef(data.lm)[2],4)) #这个就是对截距和斜率取近似值。
r2 <- sprintf("italic(R^2) == %.2f",summary(data.lm)$r.squared)
labels <- data.frame(formula=formula,r2=r2,stringsAsFactors = FALSE)
  • 6
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值