R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI

标签: R统计分析 | 发布时间: 2024-09-26 20:46:18

大数据时代,统计分析成为一项必备技能,今天九数云带来的是R统计分析。

R统计分析是我们在数据分析变量时常用的方法,下面就让我们来看看具体有哪些操作吧!

R统计分析:做描述统计

基本上文章结果部分一上来首先展示的就是描述统计,就是你有多少样本,样本特征是啥样的----连续变量的均值标准差是多少,分类变量的频数百分比是多少等等,这些都是描述统计

做法1:

比如我现在拿到手的处理好的数据是这样:

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图图1

比如我想看看男女之间它们每个变量的均值是多少,我就可以写出如下代码:

data %>% 
  group_by(gend.f) %>%
  summarize(mean_figures=mean(figures),
            mean_cards=mean(cards),
            mean_words=mean(wordlist))

运行之后可以看到输出中就按照性别输出了三个变量的均值。

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图1

如果我们想要描述的变量很多,可以用summarize_at函数进一步简化代码如下:

data %>% 
  group_by(gend.f) %>%
  summarize_at(vars("figures","cards","wordlist"), mean)

运行后得到结果如下:

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图2

上面是均值的例子,其余的比如标准差只需要将mean函数一换就可以。

方法2:

方法1感觉还是有点呆哈,给大家介绍方法2:我们还可以直接用psych包中的describe函数也可以得到连续变量常用的描述统计量,比如运行下面的代码:

describe(data, fast = T)

就可以得到数据的描述统计,包括个数,均值,标准差,极值极差标准误,比方法1要方便一丢丢的:

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图3

如果将fast参数去掉,则偏度峰度,中位数等等也会出现:

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图4

以上两种方法都是针对连续变量的部分处理方法,适用性没有那么好,再接着看下面的做法

做法3:使用tableone包

做描述统计第三个方法就是用tableone包,依然是对于图1中的数据,我现在想做一个描述统计,连续变量用均值±标准差,分类变量用频数百分比表示,我就可以写出如下代码:

(tab_nhanes <- CreateTableOne(data = data))

运行后得到如下描述统计结果:

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图5

可以看到,sex变量是用频数百分比进行描述的,其余的连续变量都是以均值标准差呈现的。

在使用tableone包的时候如果你通过正态性检验发现某个变量不是正态分布的,这个时候需要用中位数和四分位数间距进行描述,此时在打印tableone对象的时候加上nonnormal = "变量名"参数就好了,比如我现在知道我的数据中年龄是不服从正态分布的,我就可以写出如下代码:

print(tab_nhanes, 
      showAllLevels = TRUE,
      nonnormal = "Age"
     )

大家肯定见过这样的表格展示的描述统计,就是分组描述统计:

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图6

比如干预实验中对照组和干预组的特征比较,两组随访数据的基线特征比较等等。

这样的表格用tableone也是非常容易实现的,比如我的原始数据长这样:

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图7图2

我现在想以Gender这个变量进行分组描述统计,我便可以写出如下代码:

strata <- CreateTableOne(data = data,
                         vars = c("Age", "Race", "Education"), 
                         factorVars = c("Race","Education"), 
                         strata = "Gender"
)
print(strata, 
      nonnormal = "Age", 
      cramVars = "Gender")

上面的代码中,strata参数设置分组变量,factorVars指定变量类型为因子,vars参数指定我们要进行统计描述的变量,运行后出来的结果如下:

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图8

可以看到既有所有变量的统计描述还有组间比较的p值,另外我们可以很方便地通过以下代码将做出来的tableone输出成csv:

tab_csv <- print(strata,
                 nonnormal = "Age",
                 printToggle = FALSE)
write.csv(tab_csv, file = "Summary.csv")

运行后即可在目录中找到相应的csv文件,然后直接复制粘贴到论文中。

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图9图3

方法4:gtsummary

最后要给大家介绍的方法就是使用gtsummary中的tbl_summary函数,比如依然是上面的数据(图1中的数据),我使用gtsummary函数写出代码如下:

data %>% tbl_summary(
  by=Gender,statistic = all_continuous() ~ "{mean} ({sd})",
) %>% add_p() %>% modify_caption("**Table 1. Please follow Wechat Channel--Codewar**")

可以看到,代码基本就1行,add_p是添加分组比较的p值(按需使用),modify_caption是更改表的标题,运行上面的代码,即可得到又一张出版级的表格如下(内容和图3也是一样的):

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图10图3

真棒!这个表格也可以通过write.csv输出为excel然后直接贴到你的论文中。

R统计分析:做相关分析

描述统计做完了之后我们有可能会需要做一下各个变量间的两两相关,期刊中常见的比较标准的相关结果表示方法如下,变量均值和标准差占两列,然后相关矩阵放后面:

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图11

这样的表格也有十分简单的做法,大家可以直接使用mlmCorrs这个包,比如对于图1中的数据,我想拉一个和上图一样布局的结果表格,我只需要直接运行下面的代码

data %>% 
  select(wordlist:occupats) %>% 
  mlmCorrs::corstars()

便可以得到结果如下,真的是很方便呀:

R统计分析:如何简洁高效地展示统计结果!1篇文章告诉你!——九数云BI插图12

其实在R语言中拉相关的方法很多,但是就是这个好用,最好用。其它的还有ggpairs,还有corrr::correlate()还有Hmisc::rcorr都可以,有兴趣的同学可以自己取探索一番!

小结

上述就是R统计分析的一些分析方法,如果你想要更简单的解决这一切,建议使用九数云,0代码的操作,适合大部分人,而且不仅功能丰富,价格也十分优惠,欢迎咨询!



上一篇:
下一篇:
相关内容