1  定量数据的统计描述

Modified

August 23, 2026

1.1 频数分布

  • 极差(Range) : \(R=X_{max}-X_{min}\)

  • 组数 (Number of Bins) \(k\) : 通常选择 \(8\)\(15\) 之间的值。

  • 组距 (Bin Width) : \(interval=\frac{R}{k}\)

  • 频数 (Frequency) : \(Frequency = count\)

  • 频率 (Relative Frequency): \(Relative\ Frequency = \frac{count}{n} \times 100\%\)

1.2 集中趋势(central tendency)

总体方差除以 n

样本方差除以(n-1),R 计算的是样本方差

Show the code

x <- 1:19


#算术均值  sum/n
mean(x)
#> [1] 10
sum(x)/length(x)
#> [1] 10

# 截尾均值   10%,则只有 80% 的中心数据将用于计算平均值。
mean(x,trim = 0.1)
#> [1] 10

# 众数
y <- c(3, 5, 3, 3, 5, 6, 5)
rstatix::get_mode(y)
#> [1] 3 5

注意:函数rstatix::get_mode() 可能返回多个众数,如果存在多个众数,请检查其处理方式。

1.3 离散趋势(dispersion tendency)

Show the code
# 值域
range(x)  
#> [1]  1 19
# 极差 or 全距
diff(range(x))  
#> [1] 18

# 标准差 standard deviation
sd(x)    
#> [1] 5.627314
# 方差 variance
var(x)       
#> [1] 31.66667
# 绝对中位差 median absolute deviation
mad(x,constant = 1.4826)
#> [1] 7.413
median(abs(x-median(x)))*1.4826
#> [1] 7.413

# 变异系数 Coefficient of Variation
CV <- function(x, na.rm = TRUE) {  
    if (na.rm) x <- x[!is.na(x)]
    CV = sd(x) / abs(mean(x)) * 100
    sprintf("%.8f%%", CV)
}
CV(x)
#> [1] "56.27314339%"

说明:mad() 计算时乘以比例因子 constant = 1.4826 以实现渐进正态一致性。

1.4 位置度量

Show the code
# 分位数
quantile(x,probs = c(0,0.1,0.25,0.5,0.75,1))    
#>   0%  10%  25%  50%  75% 100% 
#>  1.0  2.8  5.5 10.0 14.5 19.0

# 四分位数间距
IQR(x)   
#> [1] 9

1.5 分布形态

1.5.1 偏度系数

1.5.1.1 总体偏度(Population Skewness)

表示随机变量概率分布的不对称性。

https://www.macroption.com/skewness-formula/

三阶中心矩。二阶中心矩即方差。

\[ Population\ Skewness (X) = \frac{E(X_i-E(X))^3}{Var(X)^{\frac{3}{2}}} =E [(\frac{X_i-\mu}{\sigma})^3]= \frac{1}{n} \sum_{i=1}^{n} (\frac{X_i-\mu}{\sigma} )^3 \]

偏度的取值范围: \((-\infty,+\infty)\)

  1. Skew>0,正偏态分布,右偏 = 尾部向右延伸。Mode < Median < Mean;

  2. Skew=0,数据相对均匀的分布在均值两侧;

  3. Skew<0,负偏态分布,左偏 = 尾部向左延伸;Mode > Median > Mean。

Show the code
skewness <- function(x,na.rm=TRUE){
    if(na.rm) x <- x[!is.na(x)]
    n=length(x)
    μ=mean(x)
    SD=sd(x)
    
    return(c(population_sknewness = mean(((x-μ)/SD)^3),
             sample_sknewness = sum(((x-μ)/SD)^3)*n/(n-1)/(n-2)))
}
skewness(x)
#> population_sknewness     sample_sknewness 
#>                    0                    0


e1071::skewness(x,type = 2)  # 样本偏度
#> [1] 0
e1071::skewness(x,type = 3)  # 总体偏度
#> [1] 0


# 无偏偏度
e1071::skewness(x,type = 1)   
#> [1] 0
moments::skewness(x)
#> [1] 0

1.5.1.2 样本偏度(Sample Skewness)

\[ Sample\ Skewness(X) = \frac{n}{(n-1)(n-2)} \sum_{i=1}^{n} \left [\frac{X_i-\bar X}{S} \right ]^3 \]

1.5.2 峰度系数

1.5.2.1 总体峰度(Population Kurtosis)

表示随机变量概率分布的尖峭程度。四阶中心矩与方差平方的比值。

https://www.macroption.com/kurtosis-formula/

超额峰度 excess kurtosis :四阶中心矩与方差平方的比值减3。

https://www.macroption.com/excess-kurtosis/

\[ Population\ Kurtosis(X) = \frac{E(X_i-E(X))^4}{Var(X)^{2}}-3= E [(\frac{X_i-\mu}{\sigma})^4] - 3= \frac{1}{n} \sum_{i=1}^{n} (\frac{X_i-\mu}{\sigma} )^4-3 \]

超额峰度的取值范围:\([-2,+\infty)\)

  1. 超额峰度<0,数据分布与正态分布相比较为扁平;

  2. 超额峰度=0,正态分布;

  3. 超额峰度>0,数据分布与正态分布相比较为高尖。

Show the code

kurtosis<-function(x,na.rm=TRUE){
    if(na.rm) x<-x[!is.na(x)]
    n=length(x)
    μ=mean(x)
    SD=sd(x)
    return(c(population_kurtosis= mean(((x-μ)/SD)^4)-3,
             sample_kurtosis = sum(((x-μ)/SD)^4)*n*(n+1)/(n-1)/(n-2)/(n-3)-3*(n-1)^2/(n-2)/(n-3)))
}
kurtosis(x)
#> population_kurtosis     sample_kurtosis 
#>           -1.390471           -1.200000
e1071::kurtosis(x,type = 3)# 默认 总体峰度
#> [1] -1.390471
e1071::kurtosis(x,type = 2) # 样本偏度
#> [1] -1.2

1.5.2.2 样本峰度(Sample Kurtosis)

\[ Sample \ Kurtosis(X) = \frac{n(n+1)}{(n-1)(n-2)(n-3)} \sum_{i=1}^{n} \left [\frac{X_i-\bar X}{S} \right]^4-\frac{3(n-1)^2}{(n-2)(n-3)} \]

1.6 统计摘要

Show the code
summary(mtcars$mpg)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   10.40   15.43   19.20   20.09   22.80   33.90
report::report(mtcars$mpg) |> as.data.frame()
#> Mean  |   SD | Median |  MAD |   Min |   Max | n_Obs | Skewness | Kurtosis | n_Missing
#> --------------------------------------------------------------------------------------
#> 20.09 | 6.03 |  19.20 | 5.41 | 10.40 | 33.90 |    32 |     0.67 |    -0.02 |         0
rstatix::get_summary_stats(mtcars,mpg,type = "full")
#> # A tibble: 1 × 13
#>   variable     n   min   max median    q1    q3   iqr   mad  mean    sd    se
#>   <fct>    <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 mpg         32  10.4  33.9   19.2  15.4  22.8  7.38  5.41  20.1  6.03  1.06
#> # ℹ 1 more variable: ci <dbl>
psych::describeBy(mtcars$mpg,group =NULL)
#>    vars  n  mean   sd median trimmed  mad  min  max range skew kurtosis   se
#> X1    1 32 20.09 6.03   19.2    19.7 5.41 10.4 33.9  23.5 0.61    -0.37 1.07