前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据分析|R-描述性统计

数据分析|R-描述性统计

作者头像
生信补给站
发布2020-08-06 10:53:05
发布2020-08-06 10:53:05
1.6K00
代码可运行
举报
文章被收录于专栏:生信补给站生信补给站
运行总次数:0
代码可运行

前文介绍了脏数据中缺失值数据分析|R-缺失值处理和异常值数据分析|R-异常值处理的常规处理方法,之后就可以对数据进行简单的描述性统计,方便我们对数据有一个整体的认识。

常见描述性统计可以通过最小值、下四分位数、中位数、上四分位数和最大值,均值、众数、标准差、极差等查看数据的分布和离散程度;通过偏度(数据分布形态呈现左偏或右偏)和峰度(分布形态呈现尖瘦或矮胖)等查看数据的正态与否。

下面简单的介绍如何使用R实现数值型变量的上述统计量。

1 基础包中summary()函数

可得到数值型变量的最小值、下四分位数、中位数、上四分位数和最大值。

代码语言:javascript
代码运行次数:0
运行
复制
#使用自带的mtcars数据集,选择mpg,disp和hp三个数值型变量进行分析。
head(mtcars)
data <- mtcars[c("mpg","disp","hp")]
summary(data)
      mpg             disp             hp       
 Min.   :10.40   Min.   : 71.1   Min.   : 52.0  
 1st Qu.:15.43   1st Qu.:120.8   1st Qu.: 96.5  
 Median :19.20   Median :196.3   Median :123.0  
 Mean   :20.09   Mean   :230.7   Mean   :146.7  
 3rd Qu.:22.80   3rd Qu.:326.0   3rd Qu.:180.0  
 Max.   :33.90   Max.   :472.0   Max.   :335.0

2 psych包中describe()函数

可得到非缺失值的个数、均值、标准差、中位数、截尾平均数、绝对中位差、最小值、最大值、极差、偏度、丰度和平均值的标准误

代码语言:javascript
代码运行次数:0
运行
复制
#install.packages("psych")
library(psych)
describe(data)
 vars  n  mean     sd median trimmed    mad  min   max range skew kurtosis    se
mpg     1 32  20.1   6.03   19.2    19.7   5.41 10.4  33.9  23.5 0.61    -0.37  1.07
disp    2 32 230.7 123.94  196.3   222.5 140.48 71.1 472.0 400.9 0.38    -1.21 21.91
hp      3 32 146.7  68.56  123.0   141.2  77.10 52.0 335.0 283.0 0.73    -0.14 12.12

3 pastecs包中stat.desc()函数

当设置norm=TRUE(非默认)时,可以返回偏度和丰度(统计显著程度)和Shapiro-Wilk正态检验的结果。

其中p=0.05表示计算平均数的置信区间默认置信度为0.95.

代码语言:javascript
代码运行次数:0
运行
复制
#install.packages("pastecs")
library(pastecs)
options(digits=3) #设定三位小数
stat.desc(data,norm = TRUE)
                mpg      disp        hp
nbr.val       32.000  3.20e+01   32.0000
nbr.null       0.000  0.00e+00    0.0000
nbr.na         0.000  0.00e+00    0.0000
min           10.400  7.11e+01   52.0000
max           33.900  4.72e+02  335.0000
range         23.500  4.01e+02  283.0000
sum          642.900  7.38e+03 4694.0000
median        19.200  1.96e+02  123.0000
mean          20.091  2.31e+02  146.6875
SE.mean        1.065  2.19e+01   12.1203
CI.mean.0.95   2.173  4.47e+01   24.7196
var           36.324  1.54e+04 4700.8669
std.dev        6.027  1.24e+02   68.5629
coef.var       0.300  5.37e-01    0.4674
skewness       0.611  3.82e-01    0.7260
skew.2SE       0.737  4.60e-01    0.8759
kurtosis      -0.373 -1.21e+00   -0.1356
kurt.2SE      -0.230 -7.46e-01   -0.0837
normtest.W     0.948  9.20e-01    0.9334
normtest.p     0.123  2.08e-02    0.0488

4 自定义函数

除了上述函数包外,还可以自定义函数可以只返回需要的值。

代码语言:javascript
代码运行次数:0
运行
复制
my_describe <- function(x){
  options(digits = 3)
  N = length(x);
  Nmiss = sum(is.na(x));
  Min = min(x, na.rm = TRUE);
  Q1 = quantile(x, probs = 0.25, na.rm = TRUE);
  Median = median(x, na.rm = TRUE);
  Q3 = quantile(x, probs = 0.75, na.rm = TRUE);
  Max = max(x, na.rm = TRUE);
  Mean = mean(x, na.rm = TRUE);
  Sd = sd(x, na.rm = TRUE);
  Range = abs(diff(range(x)));
  skew <- sum((x-Mean)^3/Sd^3)/N
  kurt <- sum((x-Mean)^4/Sd^4)/N-3
  #返回结果
  return(data.frame(N = N, Nmiss = Nmiss, Min = Min, Q1 = Q1, Median = Median, Q3 = Q3, Max = Max, Mean = Mean, Sd = Sd, Range = Range, Skewness = skew, Kurtosis = kurt))
}
sapply(data, my_describe)
        mpg    disp  hp    
N        32     32    32    
Nmiss    0      0     0     
Min      10.4   71.1  52    
Q1       15.4   121   96.5  
Median   19.2   196   123   
Q3       22.8   326   180   
Max      33.9   472   335   
Mean     20.1   231   147     
Sd       6.03   124   68.6  
Range    23.5   401   283   
Skewness 0.611  0.382 0.726 
Kurtosis -0.373 -1.21 -0.136

可以看出自定义函数的结果与上述R包的结果一致,而且可以根据自己的需求选择返回值。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档