【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)
在R语言中,非线性回归曲线绘制通常涉及到对数据的非线性关系进行建模。非线性回归可以使用多种方法和函数,其中比较常见的是使用`nls`函数(nonlinear least squares)进行非线性最小二乘拟合。以下是使用`nls`函数进行非线性回归的一般步骤: 1. 准备数据:首先,你需要准备一个数据框(data frame),其中包含了你要分析的自变量(通常表示为x)和因变量(通常表示为y)的数据。 2. 确定模型:根据研究问题或数据的特性,选择合适的非线性模型公式。非线性模型通常是关于参数的非线性函数。 3. 拟合模型:使用`nls`函数对模型进行拟合。你需要指定模型公式、开始参数的猜测值以及可能需要的其他参数,如控制算法行为的选项。 4. 检查拟合结果:拟合完成后,需要检查模型的拟合效果和参数的估计值是否合理。可以使用摘要函数`summary`来获取详细的拟合结果。 5. 绘制曲线:使用拟合得到的模型,结合形函数如`plot`和`lines`或`curve`函数,将非线性回归曲线绘制在散点上。 下面是一个简单的例子: ```r # 加载数据 data <- data.frame(x = c(1, 2, 3, 4, 5), y = c(1.5, 3.2, 4.1, 5.5, 6.8)) # 非线性模型公式,例如指数模型 y = a * exp(b * x) model <- nls(y ~ a * exp(b * x), data = data, start = list(a = 1, b = 0.1)) # 查看模型摘要 summary(model) # 绘制数据点 plot(data$x, data$y, main = "非线性回归曲线", xlab = "自变量", ylab = "因变量") # 添加拟合的非线性回归曲线 curve(coef(model)['a'] * exp(coef(model)['b'] * x), add = TRUE, col = "blue") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值