R-基本统计分析--描述性统计分析

描述性统计分析主要包括

  • 基本信息:样本数、总和
  • 集中趋势:均值、中位数、众数
  • 离散趋势:方差(标准差)、变异系数、全距(最小值、最大值)、内四分位距(25%分位数、75%分位数)
  • 分布描述:峰度系数、偏度系数

不分组描述性统计

该数据采用R自带数据集mtcars进行分析,可在R编辑器直接输入得到该数据集内容

1.1、自带summary函数

myvars <- c("mpg", "hp", "wt")
summary(mtcars[myvars])    #给出集中趋势汇总
      mpg              hp              wt       
Min.   :10.40   Min.   : 52.0   Min.   :1.513  
1st Qu.:15.43   1st Qu.: 96.5   1st Qu.:2.581  
Median :19.20   Median :123.0   Median :3.325  
Mean   :20.09   Mean   :146.7   Mean   :3.217  
3rd Qu.:22.80   3rd Qu.:180.0   3rd Qu.:3.610  
Max.   :33.90   Max.   :335.0   Max.   :5.424

1.2、pastecs包的stat.sesc函数

install.packages("pastecs")
library(pastecs)
myvars <- c("mpg", "hp", "wt")
stat.desc(mtcars[myvars],basic = TRUE,desc=TRUE,norm=TRUE,p=0.95)  #给出基本信息,集中趋势,离散趋势,偏度系数,峰度系数--基本覆盖所有描述性统计分析要求
                     mpg            hp           wt
nbr.val       32.0000000   32.00000000  32.00000000
nbr.null       0.0000000    0.00000000   0.00000000
nbr.na         0.0000000    0.00000000   0.00000000
min           10.4000000   52.00000000   1.51300000
max           33.9000000  335.00000000   5.42400000
range         23.5000000  283.00000000   3.91100000
sum          642.9000000 4694.00000000 102.95200000
median        19.2000000  123.00000000   3.32500000
mean          20.0906250  146.68750000   3.21725000
SE.mean        1.0654240   12.12031731   0.17296847
CI.mean.0.95   2.1729465   24.71955013   0.35277153
var           36.3241028 4700.86693548   0.95737897
std.dev        6.0269481   68.56286849   0.97845744
coef.var       0.2999881    0.46740771   0.30412851
skewness       0.6106550    0.72602366   0.42314646
skew.2SE       0.7366922    0.87587259   0.51048252
kurtosis      -0.3727660   -0.13555112  -0.02271075
kurt.2SE      -0.2302812   -0.08373853  -0.01402987
normtest.W     0.9475647    0.93341934   0.94325772
normtest.p     0.1228814    0.04880824   0.09265499
 
  • 参数basic为T时将给出以下统计量:
总数值个数(NBR.VAL),空值的数目(NBR. NULL),
数目缺失值(NBR.NA),最小值(min),最大值(max),
范围(范围,即max min)和所有非缺失值之和(和)
 
  • 参数desc为T时将给出以下统计量:
中位数(median),平均值(mean),
标准误差平均(SE.mean),P水平均值(CI.mean)的置信区间,
方差(Var)、标准差(std.dev)
和变异系数(coef.var)定义为标准差除以平均值。
 
  • 参数norm为T时将给出以下统计量:
偏度系数G1(skeness),其显著判据(skew.2SE),即
是,G1/2.SEG1;如果SkW.2SE>1,则偏度显著不同于
零)峰度系数G2(kurtosis)及其显著判据(Kurt.2SE)
以及夏皮罗的Wikk检验的两个统计量
标准检验.W(normtest.W)及其相关概率标准检验p(normtest.p)
2018/10/27 16:28 
 

分组描述性统计分析

2.1、单一分组

vars<-c("mpg","hp","wt")
aggregate(mtcars[vars],by=list(am=mtcars$am),mean)    #采用aggregate侧重于计算某个统计量
aggregate(mtcars[vars],by=list(am=mtcars$am),sd)
> aggregate(mtcars[vars],by=list(am=mtcars$am),mean)
  am      mpg       hp       wt
1  0 17.14737 160.2632 3.768895
2  1 24.39231 126.8462 2.411000
> aggregate(mtcars[vars],by=list(am=mtcars$am),sd)
  am      mpg       hp        wt
1  0 3.833966 53.90820 0.7774001
2  1 6.166504 84.06232 0.6169816

2.2、自动分组(14个统计指标)

library(psych)
describeBy(mtcars[vars],mtcars$am,mat=T,digits = 3)    #psych包中的describeBy函数能给出14个分组计算指标
describeBy(mtcars[vars],mtcars$am,mat=F)               #describeBy函数给出特定输出结果便于分析
> describeBy(mtcars[vars],mtcars$am,mat=T,digits = 3)
     item group1 vars  n    mean     sd median trimmed    mad    min     max   range   skew kurtosis     se
mpg1    1      0    1 19  17.147  3.834  17.30  17.118  3.113 10.400  24.400  14.000  0.014   -0.803  0.880
mpg2    2      1    1 13  24.392  6.167  22.80  24.382  6.672 15.000  33.900  18.900  0.053   -1.455  1.710
hp1     3      0    2 19 160.263 53.908 175.00 161.059 77.095 62.000 245.000 183.000 -0.014   -1.210 12.367
hp2     4      1    2 13 126.846 84.062 109.00 114.727 63.752 52.000 335.000 283.000  1.360    0.563 23.315
wt1     5      0    3 19   3.769  0.777   3.52   3.748  0.452  2.465   5.424   2.959  0.976    0.142  0.178
wt2     6      1    3 13   2.411  0.617   2.32   2.387  0.682  1.513   3.570   2.057  0.210   -1.174  0.171
> describeBy(mtcars[vars],mtcars$am,mat=F)
 
Descriptive statistics by group
group: 0
    vars  n   mean    sd median trimmed   mad   min    max  range  skew kurtosis    se
mpg    1 19  17.15  3.83  17.30   17.12  3.11 10.40  24.40  14.00  0.01    -0.80  0.88
hp     2 19 160.26 53.91 175.00  161.06 77.10 62.00 245.00 183.00 -0.01    -1.21 12.37
wt     3 19   3.77  0.78   3.52    3.75  0.45  2.46   5.42   2.96  0.98     0.14  0.18
-----------------------------------------------------------------------------------------
group: 1
    vars  n   mean    sd median trimmed   mad   min    max  range skew kurtosis    se
mpg    1 13  24.39  6.17  22.80   24.38  6.67 15.00  33.90  18.90 0.05    -1.46  1.71
hp     2 13 126.85 84.06 109.00  114.73 63.75 52.00 335.00 283.00 1.36     0.56 23.31
wt     3 13   2.41  0.62   2.32    2.39  0.68  1.51   3.57   2.06 0.21    -1.17  0.17
 
Usage
describeBy(x, group=NULL,mat=FALSE,type=3,digits=15,...) 
describe.by(x, group=NULL,mat=FALSE,type=3,...) # deprecated
 
x表示数据集
group要进行的分组值
Mat是否采用矩阵输出(很有用)
digits仅在采用矩阵输出时可选默认保留15位小数
type 偏斜度和峰度类型(不用管)
 

2.3、自定义分组指标(自定义函数,多个分组指标)

mystats <- function(x, na.omit=FALSE){     #自定义计算所需特定统计值
  if (na.omit)
    x <- x[!is.na(x)]
  m <- mean(x)
  n <- length(x)
  s <- sd(x)
  skew <- sum((x-m)^3/s^3)/n
  kurt <- sum((x-m)^4/s^4)/n - 3
  return(c(n=n, mean=m, stdev=s, skew=skew, kurtosis=kurt))
}
 
dstats <- function(x)sapply(x, mystats)     
myvars <- c("mpg", "hp", "wt")          #给出特定数据框计算列的(标号),在by的data里作为下标
by(mtcars[myvars], mtcars$am, dstats)   #将data数据框按照indces进行分组,具体计算采用自定义函数dstats
> by(mtcars[myvars], mtcars$am, dstats)
mtcars$am: 0
                 mpg           hp         wt
n        19.00000000  19.00000000 19.0000000
mean     17.14736842 160.26315789  3.7688947
stdev     3.83396639  53.90819573  0.7774001
skew      0.01395038  -0.01422519  0.9759294
kurtosis -0.80317826  -1.20969733  0.1415676
-------------------------------------------------------------
mtcars$am: 1
                 mpg          hp         wt
n        13.00000000  13.0000000 13.0000000
mean     24.39230769 126.8461538  2.4110000
stdev     6.16650381  84.0623243  0.6169816
skew      0.05256118   1.3598859  0.2103128
kurtosis -1.45535200   0.5634635 -1.1737358

Usage

by(data, INDICES, FUN, ..., simplify = TRUE)
 
data: 一般是数据框或矩阵。an R object, normally a data frame, possibly a matrix.
INDICES:一个因子或一览表,每行长度n行。
FUN:应用于(通常是数据帧)数据子集的函数。
simplify:logical; if FALSE, tapply always returns an array of mode "list"; in other words, a list with a dim attribute. If TRUE (the default), then if FUN always returns a scalar, tapply returns an array with the mode of the scalar.(不常用)
 
> head(mtcars[myvars])
                   mpg  hp    wt
Mazda RX4         21.0 110 2.620
Mazda RX4 Wag     21.0 110 2.875
Datsun 710        22.8  93 2.320
Hornet 4 Drive    21.4 110 3.215
Hornet Sportabout 18.7 175 3.440
Valiant           18.1 105 3.460
> mtcars$am
[1] 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1
> class(mtcars[myvars])
[1] "data.frame"
> class(mtcars$am)
[1] "numeric"
 
关于R的描述性统计,这些包与函数基本覆盖所有的使用范围,还有几个包没有列入,笔者进行了适当筛选。
欢迎热心网友讨论,学习!
2018-10-28
 
具体统计函数指标及其含义可参看博友(传送门)

R提高篇(五): 描述性统计分析 - 天戈朱 - 博客园
https://www.cnblogs.com/tgzhu/p/5961176.html

posted @ 2018-10-28 12:59  lei656  阅读(4475)  评论(0编辑  收藏  举报