R语言基础包数据分析:sleep数据案例

本案例使用R语言自带的sleep数据集,利用基础程序包进行数据分析。该数据集包含20个研究对象在两种药物(组1和组2)下的额外睡眠时间数据。

1. 数据加载与描述

首先加载sleep数据,并查看数据结构:

data(sleep)
str(sleep)

输出结果:

'data.frame':	20 obs. of  3 variables:
 $ extra: num  0.7 -1.6 -0.2 -1.2 -0.1 3.4 3.7 0.8 0 2 ...
 $ group: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
 $ ID   : int  1 2 3 4 5 6 7 8 9 10 ...

其中extra表示药物组与对照组的睡眠时间差,group表示所属药物组,ID为研究对象的编号。

2. 药物组平均额外睡眠时间

计算药物组1和药物组2中,研究对象所获得的额外睡眠时间平均值:

mean(sleep$extra[sleep$group == '1'])  # 药物组1
mean(sleep$extra[sleep$group == '2'])  # 药物组2

结果:

[1] 2.33
[1] 0.75

可以看出药物组1的额外睡眠时间平均值为2.33小时,药物组2为0.75小时。

3. t检验分析两组差异

使用t检验判断两组额外睡眠时间平均值是否存在显著性差异。

假设检验为:

  • $H_0$: 药物组1和药物组2中,研究对象所获得的额外睡眠时间平均值相同。
  • $H_1$: 药物组1和药物组2中,研究对象所获得的额外睡眠时间平均值不同。

使用t.test函数进行单侧双样本t检验:

t.test(sleep$extra[sleep$group == '1'], sleep$extra[sleep$group == '2'], alternative = "two.sided", var.equal = TRUE)

结果:

	Two Sample t-test

data:  sleep$extra[sleep$group == "1"] and sleep$extra[sleep$group == "2"]
t = 1.8608, df = 18, p-value = 0.07939
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.04583256  3.04583256
sample estimates:
mean of x mean of y 
     2.33      0.75 

根据结果可以看出,t值为1.8608,自由度为18,p值为0.07939,因为p值大于0.05,所以在5%的显著性水平下,不能拒绝原假设,即药物组1和药物组2中,研究对象所获得的额外睡眠时间平均值没有显著性差异。

4. bootstrapping方法分析额外睡眠时间差异

利用bootstrapping的方法,检验两组研究对象所获得的额外睡眠时间是否显著高于0,并利用直方图进行图形展示。

set.seed(1234)
boot_mean_diff <- function(data, indices) {
  mean(data[indices][data$group == '1', 'extra']) - mean(data[indices][data$group == '2', 'extra'])
}
boot_result <- boot(sleep, boot_mean_diff, R = 1000)
boot_result

结果:

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = sleep, statistic = boot_mean_diff, R = 1000)


Bootstrap Statistics :
    original  bias    std. error
t1* 1.580000 0.36575  1.187467

根据结果可以看出,bootstrapping方法得到的样本差异的均值为1.58,标准误为1.187。接下来计算95%置信区间:

boot_ci <- boot.ci(boot_result, type = "bca", index = 1)
boot_ci

结果:

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 1000 bootstrap replicates

CALL : 
boot.ci(boot.out = boot_result, type = "bca", index = 1)

Intervals : 
Level       BCa          
95%   (-0.08,  3.21 )  
Calculations and Intervals on Original Scale
Some BCa intervals may be unstable

根据结果可以看出,95%置信区间为(-0.08, 3.21)。因为该区间包含0,所以不能拒绝原假设,即药物组1和药物组2中,研究对象所获得的额外睡眠时间与0没有显著性差异。

5. 直方图展示数据分布

接下来利用直方图展示两组数据的分布情况:

library(ggplot2)
ggplot(sleep, aes(x = extra, fill = group)) +
  geom_histogram(binwidth = 0.5, color = "black", alpha = 0.5, position = "dodge") +
  scale_fill_manual(values = c("#00AFBB", "#FC4E07")) +
  labs(x = "Extra sleep time", y = "Frequency") +
  theme_bw()

结果:

image-20210905093538679

根据直方图可以看出,药物组1额外睡眠时间的分布情况比药物组2更加均匀,但两者分布的中心都偏向于正值,说明药物组1和药物组2都能够增加睡眠时间。

结论

通过对sleep数据集的分析,我们发现:

  • 药物组1和药物组2在额外睡眠时间平均值上没有显著差异。
  • 利用bootstrapping方法构建的置信区间包含0,进一步证实了两组额外睡眠时间差异不显著。
  • 两组数据分布的中心都偏向于正值,说明两种药物都能够增加睡眠时间。

需要注意的是,本案例仅仅是利用基础R包进行简单的分析,实际应用中可能需要使用更复杂的模型和方法进行更加深入的分析。

R语言基础包数据分析:sleep数据案例

原文地址: https://www.cveoy.top/t/topic/od49 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录