这位心脏病学教授写了一个R包,解释置信区间到底是怎么回事!

学术   科学   2024-04-30 10:42   浙江  
这篇文章介绍一个R包,名为{interpretCI},可用于画出均数以及均数差值的置信区间,并且还可以一键出文档,进一步帮助解释统计结果。相信对于了解置信区间这一统计核心概念会非常有帮助。

首先安装和载入R包:

install.packages("interpretCI")
install.packages("PairedData")

library(interpretCI)
library(PairedData)
R包get!

下一步,查看数据集mtcars的概况: 

summary(mtcars)

使用meanCI函数(这个R包的核心函数)计算一个均数的置信区间,以mpg变量为例,代码如下:

meanCI(mtcars$mpg)

结果中的lower和upper为置信区间的下限和上限。

下一步,画出置信区间的估计图,代码如下:

meanCI(mtcars$mpg) |>
  plot()

上图左侧画出了mpg的原始数据散点,右侧部分为均数的95%置信区间。

如果希望更加详细的了解上述统计结果的解释,还可以使用代码查看详细的解释(这个功能很赞!),代码如下:

interpret(meanCI(mtcars$mpg))

右侧Viewer会出一个详细的文档,各位可以进一步拿去学习! 

下一个例子,比较两个均数。 

首先查看使用到的数据集iris概况:

summary(iris)

假如希望比较第一个变量(Sepal.Length)和第二个变量(Sepal.Width)的均数,那该怎么做?代码如下:

meanCI(iris$Sepal.Length, iris$Sepal.Width)

上述的结果其实与独立样本t检验的结果是一样的,代码如下:

t.test(iris$Sepal.Length, iris$Sepal.Width)

可以比较上面两种方法得到的均数差值,以及置信区间,发现结果是一样的。

还可以将上述的结果进行作图,会更加的直观,代码如下:

meanCI(iris$Sepal.Length, iris$Sepal.Width) |>
  plot(ref = "control", side = FALSE)

图片的上半部分为两个变量的数据点,以蜂群图(swarmplot)的形式呈现。散点的右侧为对应的置信区间。

图片的下半部分为均数差值(y-x),以及对应的置信区间。

下一个例子,为配对样本的均数差值。

查看下数据集Anorexia的概况,代码如下:

data(Anorexia)
summary(Anorexia)

下一步,比较两个时间点(Prior和Post)的均数,并且直接画图,代码如下:

meanCI(Anorexia, Prior, Post, paired = TRUE) |>
  plot(ref = "test", side = FALSE)

上述两个时间点的作图非常的直观漂亮,同时非常的实用!

同样,也使用R自己的函数进行配对t检验,查看结果是否一致,代码如下:

t.test(Anorexia$Prior, Anorexia$Post, paired = TRUE)

发现结果是一样的!

再举几个例子,比如,比较三个或者更多组别的均数。 

回到iris数据集,将比较不同Species(三个组)的Sepal.Length水平。

代码如下:

meanCI(iris, Species, Sepal.Length)

将上述的结果作图:

meanCI(iris, Species, Sepal.Length) |> plot()

与两个组别的比较类似,上半部分展示了三个组别数据点以及置信区间;下半部分展示了其他两个组别与setosa(作为参照组)的比较。

为了让下半部分的差值比较更清晰,最好添加上一个横线0,代码如下:

meanCI(iris, Species, Sepal.Length,
       mu = 0) |> plot()


从上图的下半部分结果可知,差值以及置信区间距离0较远,没有交集,提示上述的组别比较存在统计学差异。

再举一个例子,这个R包还可以处理多个配对样本的比较。 

查看数据集anscombe2:

data(anscombe2)
anscombe2

假设现在希望将X1-Y1,X2-Y2,以及X3-Y3之间三个配对比较同时展示在一张图上,那可以这么做,代码如下:

meanCI(anscombe2,
       idx = list(c("X1","Y1"),
                  c("X2","Y2"),
                  c("X3","Y3")),
       paired = TRUE, mu = 0) |>
  plot()

非常漂亮!对于需要这种类型的比较来说,将会非常实用!

最后一个例子,这个R包还可以处理以下这种情况,即含有一个分类变量,但包含多个连续变量。

查看下数据集acs的概况:

summary(acs)

现在假设研究者希望比较sex组别的TC, TG以及HDLC,那可以这么做,代码如下:

acs |>
  subset(select = c(sex, TC, TG, HDLC)) |>
  meanCI(sex, mu = 0)

还可以直接出图: 

acs |>
  subset(select = c(sex, TC, TG, HDLC)) |>
  meanCI(sex, mu = 0) |>
  plot()

图太美了!虽然上述比较都没有统计学差异


好啦,今天的内容就到这里。如果有帮助,记得分享给需要的人


参考文献

https://cran.r-project.org/web/packages/interpretCI/index.html


公众号的线上课程
1. 《R语言和统计新手课程》
2. 《回归:从入门到进阶》
【通过公众号菜单栏--线上课程--新手课程/回归课程】

统计咨询
《服务介绍和经典合作案例》

公众号核心成员的成果发表
《SCI医学1区影响因子9分论文》

公众号核心成员担任SCI杂志Associate Editor!
《JAD杂志Associate editor》
《Frontiers in Neuroscience, Frontiers in Neurology and Frontiers in Psychiatry杂志的神经退行性病变板块》


▌本文由R语言和统计首发
▌课程相关咨询可添加R师妹微信: kefu_rstats
▌编辑:June
▌邮箱:contact@rstats.cn
▌网站:www.rstats.cn
我们致力于让R语言和统计变得简单!




R语言和统计
我们定期更新与R有关的内容,比如R编程基础,作图,实用R包的解读,统计学基础知识,前沿的统计方法,机器学习等等。
 最新文章