【R语言从0到精通】-3-R统计分析(列联表、独立性检验、相关性检验、t检验)

本文介绍了如何使用R语言进行统计分析,包括描述性统计、分组计算(如doBy和psych包)、频数表和列联表的制作,以及独立性检验(如卡方检验、Fisher精确检验和Cochran-Mantel-Haenszel检验),还涵盖了相关性检验(如Pearson、Spearman和Kendall相关)和T检验的应用。

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

上两次教程集中学习了R语言的基本知识,那么我们很多时候使用R语言是进行统计分析,因此对于生物信息学和统计科学来说,R语言提供了简单优雅的方式进行统计分析。教程参考《Rlearning》


3.1 描述性统计分析

3.1.1 载入数据集及summary函数

我们使用mtcars数据集,里面是一个不同信号汽车不同统计参数的矩阵:

data("mtcars")
coln <- c("mpg","hp","wt") #每加仑行驶数、马力、车重
mydata <- mtcars[coln]
head(mydata)

我们可以通过summary函数直接粗略查看一下各个列数据的统计值:

summary(mydata)

3.1.2 Hmisc包、pastect包、psych包

一些第三方包提供了优雅和快捷的统计分析,我们先安装及载入包:

install.packages("Hmisc")
install.packages("pastecs")
install.packages("psych")
library(Hmisc)
library(pastecs)
library(psych)

(1)Hmisc的describe函数计算描述性统计可以得到变量/观测值/缺失值/唯一值/及五个最大最小值/各分位数等详细信息

Hmisc::describe(mydata)

(2)pastecs包的stat.desc()函数计算复杂多样描述性统计量:

stat.desc(mydata)

(3)psych包的describe函数提供值域、偏度、峰度、标准误等信息:

psych::describe(mydata)

大家可以根据不同的需求选择不同的包实现简单统计计算。

3.1.3 分组统计计算 

在我们的很多统计分析中,变量是由很多不同组的数据组成的,因此不分组直接进行计算是不正确的,因此我们可以对不同组的描述性变量进行统计分析。我们的数据集中,有一个变量am是自动手动挡的分类变量,我们用这个变量进行演示:

(1)使用doBy包的summaryBy函数分组:

install.packages("doBy")
library(doBy)
doBy::summary_by(mpg+hp+wt~am,data = mtcars)

 (2)psych包分组计算:

psych::describeBy(mydata,list(am=mtcars$am))

这样得到的分组统计信息是更详细的

3.2 频数表和列联表

对于非连续型变量&#x

好的,以下是用R语言完成基本统计分析的步骤: 假设有一个名为data的数据集,其中包含了多个变量,我们将分别进行描述性统计分析、频数分析、列联分析相关性分析独立性检验和t检验。 1. 描述性统计分析 集中趋势:使用mean函数计算平均值;使用median函数计算中位数。 离散趋势:使用sd函数计算标准差;使用IQR函数计算四分位距。 分布形状:使用hist函数或density函数绘制直方图或密度曲线。 ```R # 计算平均值和中位数 mean_value <- mean(data$var1) median_value <- median(data$var1) # 计算标准差和四分位距 sd_value <- sd(data$var1) iqr_value <- IQR(data$var1) # 绘制直方图 hist(data$var1) # 绘制密度曲线 density_data <- density(data$var1) plot(density_data) ``` 2. 频数分析(分类变量:一维) 使用table函数生成频数表;使用barplot函数或pie函数绘制频数图。 ```R # 使用table函数生成频数表 freq_table <- table(data$var2) # 绘制频数图(柱状图) barplot(freq_table) # 绘制频数图(饼图) pie(freq_table) ``` 3. 列联分析(二维,三维:交叉频数(频率),边缘频数和频率,边缘频率及频数(和)) 使用table函数生成列联表;使用margin.table函数生成边缘频数表、边缘频率表和边缘频数和频率表。 ```R # 使用table函数生成列联表 cross_table <- table(data$var2, data$var3) # 使用margin.table函数生成边缘频数表、边缘频率表和边缘频数和频率表 margin_freq <- margin.table(cross_table) margin_prop <- prop.table(margin_freq) margin_sum <- addmargins(cross_table) ``` 4. 相关性分析(协方差、相关系数(两个变量,多个变量)及检验(两个变量,多个变量)) 使用cov函数计算协方差;使用cor函数计算相关系数;使用cor.test函数进行相关性检验。 ```R # 计算两个变量的协方差和相关系数 cov_value <- cov(data$var1, data$var2) cor_value <- cor(data$var1, data$var2) # 进行两个变量的相关性检验 cor_test <- cor.test(data$var1, data$var2) ``` 对于多个变量的相关性分析,可以使用corrplot包进行可视化展示。 ```R # 安装corrplot包 install.packages("corrplot") # 加载corrplot包 library(corrplot) # 计算所有变量之间的相关系数矩阵 cor_matrix <- cor(data) # 绘制相关系数矩阵的热力图 corrplot(cor_matrix, method = "color") ``` 5. 独立性检验(卡方检验,Fisher检验) 使用chisq.test函数进行卡方检验;使用fisher.test函数进行Fisher检验。 ```R # 进行卡方检验 chisq_test <- chisq.test(data$var2, data$var3) # 进行Fisher检验 fisher_test <- fisher.test(data$var2, data$var3) ``` 6. t检验(独立样本、非独立样本) 使用t.test函数进行t检验。 ```R # 进行独立样本t检验 t_test_ind <- t.test(data$var1 ~ data$var2) # 进行非独立样本t检验 t_test_dep <- t.test(data$var1, data$var2, paired = TRUE) ``` 以上是用R语言完成基本统计分析的步骤,其中的代码仅供参考,实际使用时需要根据具体数据集进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tRNA做科研

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值