使用geom_smooth函数拟合数据点之间(以lm方法为基础)

38 篇文章 ¥59.90 ¥99.00
本文介绍了如何利用R语言的ggplot2包中的geom_smooth函数结合lm方法,来拟合数据点之间的趋势。通过创建散点图、添加趋势线,并探讨了使用loess等其他拟合方法的可能性,以增强数据可视化效果,帮助理解数据关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用geom_smooth函数拟合数据点之间(以lm方法为基础)

在R语言中,我们可以使用ggplot2包来创建精美的数据可视化图形。其中,geom_smooth函数是一个非常有用的函数,它可以帮助我们通过应用回归模型来拟合数据点之间的趋势。在本文中,我们将介绍如何使用geom_smooth函数基于lm方法来拟合数据点。

首先,我们需要安装并加载ggplot2包。

install.packages("ggplot2")
library(ggplot2)

接下来,我们将生成一些示例数据,以便我们可以对其进行拟合。

# 生成示例数据
x <- 1:10
y <- c(5, 6, 7, 9, 10, 11, 13, 15, 16, 18)
data <- data.frame(x, y)

现在,我们可以使用ggplot函数创建一个基本的散点图,其中x轴表示自变量,y轴表示因变量。

# 创建散点图
scatter_plot <- ggplot(data, aes(x = x, y = y)) +
  geom_point() +
  labs(x = "x", y =
x1=c(101,119,143,162,98,122,135,144,141,180,135,130,154,88,107,125,114,157,142,155,100,168,143,122,111,167,189,147,99,156,131,101,118,176,133,100,157,97,103,109) x2=c(25,27,33,35,25,29,32,33,33,42,32,32,34,23,26,27,27,34,33,34,25,37,33,30,28,38,43,33,23,38,30,25,27,40,32,25,36,24,25,26) x3=c("女","女","男","男","女","男","男","男","男","男","男","女","男","女","女","男","女","男","男","男","女","男","男","男","女","男","男","男","女","男","男","女","女","男","男","女","男","女","女","女") x4=c("A","A","C","B","A","B","B","B","A","B","C","A","B","A","A","B","A","C","A","C","A","A","B","B","C","B","C","B","C","B","C","C","B","C","C","B","C","A","A","C") data1=data.frame(x1,x2) data2=data.frame(x3,x1) data3=data.frame(x3,x2) data4=data.frame(x1) data5=data.frame(x2) data6=data.frame(x3) data7=data.frame(x3,x4) install.packages("ggplot2") library(ggplot2) p1=ggplot(DATA4,aes(x=x1,y=density..))+ geom_histogram(binwidth=20,fill="lightblue")+ geom_density() p1 p2=ggplot(DATA5,aes(x=x2))+ stat_ecdf(aes(x2)) p2 p3=ggplot(DATA6,aes(x=x3))+ geom_bar(stat="count") p3 p4=ggplot(DATA1,aes(x1,x2))+ geom_point()+ geom_smooth(method="lm") p4 p5=ggplot(DATA1,aes(x=x1,y=x2))+ geom_point()+stat_density2d() p5 m=ggplot(scale(x1),scale(x2), xlab="x1",ylab="x2") x1=m$x x2=m$y p6=ggplot()+stat_qq(aes(sample=x2))+ stat_qq_line(aes(sample=x2)) p6=p6+xlab("x1")+ylab("x2") p6 p7=ggplot(data=DATA7,mapping=aes(x=x4,fill=x3))+ geom_bar(stat="count",width=0.5,position="dodge")+ geom_text(stat="count",aes(label=..count..), color="black",size=3.5,position=position_dodge(0.5), vjust=-0.5)+ scale_fill_manual(values=c("#999999","black")) p7 p8=ggplot(DATA2,aes(x=x3,y=x1))+ geom_boxplot(aes(x=x3,group=x3),width=.25, fill="cornsilk",colour="grey60")+ geom_dotplot(aes(x=x3,group=x3), binaxis="y",binwidth= .5,stackdir="center", fill="red") p8 p9=ggplot(DATA2,aes(x=x4,y=x2))+ geom_boxplot(aes(x=x4,group=x4),width=.25, fill="cornsilk",colour="grey60")+ geom_dotplot(aes(x=x4,group=x4), binaxis="y",binwidth= .5,stackdir="center", fill="red") p9 library("gridExtra") grid.arrange(p1,p2,p3,p4,p5,p6,p7,p8,p9,ncol=3,nrow=3) 分析上述代码
最新发布
03-17
上述代码是一个基于R语言的数据分析和可视化脚本,主要利用了`ggplot2`库以及一些基础数据操作函数。以下是对其功能和结构的详细解析: ### 数据部分 1. **创建向量** - `x1`, `x2`: 数值型变量。 - `x1`: 包含一组数值,可能是某种测量结果(如身高、体重等)。 - `x2`: 另一组数值,同样可能是某种测量结果(如年龄或其他指标)。 - `x3`: 字符串分类变量("男"/"女"),表示性别信息。 - `x4`: 分类标签("A", "B", "C"),可能是分组类别。 2. **组合成数据框** 使用`data.frame()`将不同类型的变量组合起来: - `data1`: 含有`x1`和`x2`的二维表。 - `data2`: 含有`x3`和`x1`的二维表。 - 其他类似构造用于后续绘图。 --- ### 图形绘制部分 #### p1: 历史密度图 (Histogram + Density Plot) ```r p1 = ggplot(data4, aes(x = x1, y = density..)) + geom_histogram(binwidth = 20, fill = "lightblue") + geom_density() ``` - 绘制`x1`分布的历史图,并叠加平滑曲线展示其概率密度。 - 参数解释: - `binwidth=20`: 每个柱体宽度为20单位。 - `fill="lightblue"`: 设置直方图为浅蓝色填充。 --- #### p2: 累积经验分布函数 (ECDF) 图 ```r p2 = ggplot(data5, aes(x = x2)) + stat_ecdf(aes(x2)) ``` - 展示`x2`累积分布情况。 - 特点:显示每个观测值的概率累计过程。 --- #### p3: 条形图 (Bar Chart) ```r p3 = ggplot(data6, aes(x = x3)) + geom_bar(stat = "count") ``` - 对分类变量`x3`计数并生成条形图。 - 显示“男性”、“女性”的数量对比。 --- #### p4: 散点回归图 (Scatter Plot with Regression Line) ```r p4 = ggplot(data1, aes(x = x1, y = x2)) + geom_point() + geom_smooth(method = "lm") ``` - 描述两个连续变量的关系。 - 添加线性拟合趋势线(`method='lm'`代表普通最小二乘法)。 --- #### p5: 密度轮廓图 (Density Contour Plot) ```r p5 = ggplot(data1, aes(x = x1, y = x2)) + geom_point() + stat_density2d() ``` - 结合散点图与二维密度估计展现两变量联合分布特征。 - 轮廓越密集区域说明样本集中程度越高。 --- #### p6: Q-Q 图 (Quantile-Quantile Plot) ```r p6 = ggplot() + stat_qq(aes(sample = x2)) + stat_qq_line(aes(sample = x2)) ``` - 验证`x2`是否服从正态分布。 - 如果所有点接近直线,则表明该变量近似于标准正态分布;反之则偏离明显。 --- #### p7: 列联统计图表 (Stacked Bar Chart w/ Counts Labels) ```r p7 = ggplot(DATA7, mapping = aes(x = x4, fill = x3)) + geom_bar(stat = "count", width = 0.5, position = "dodge") + geom_text(stat = "count", aes(label = ..count..), color = "black", size = 3.5, position = position_dodge(0.5), vjust = -0.5) + scale_fill_manual(values = c("#999999", "black")) ``` - 表达`x4`各水平下按`x3`分组的数量比较。 - 自定义颜色映射方案(`#999999`,`black`)让视觉效果更清晰直观。 --- #### p8 & p9: 盒状须 whisker + Dot Plot 图 ```r p8 = ... # 类似处理逻辑略去冗余描述... p9 = ... ``` 通过箱线+点阵形式分别呈现针对分类别属性下的具体响应值波动状况及其内部个体位置细节信息. 最后借助gridExtra包实现多张图像整合排版: ``` r library(gridExtra) grid.arrange(p1,p2,... , ncol=3,nrow=3 ) ``` 即把之前制作好的九幅小画拼接成为统一整体布局样式输出查看! --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值