R语言描述统计


连续变量

连续变量的描述统计包括集中趋势、离散趋势、分布特征

集中趋势

集中趋势表示的是数据分布的中心位置,它在一定水平上可以有效反映整体的情况。常见的指标有平均值、中位数等。

  • 平均值(Mean)

平均值(均数)是最常用的描述数据分布集中趋势的统计指标。
它需要考虑所有个案的数据情况,容易受到极端值的影响,统计上不适用描述严重偏态分布的变量。
均数分为总体均数和样本均数,日常搜集的数据描述的都是样本均数。
样本均数是各数据相加再除以样本数量n得来,即:
x ˉ = X / n \bar{x}={\sum X/n}

  • 中位数(Median)

中位数是将全体数据按大小顺序排列,处于数列中间位置的值。它考虑的是大小顺序位置,不受极端值影响。又因为它只考虑顺序位置,所以对信息利用不充分。根据样本数量n的奇偶不同而不同。

n为奇数时:
M = X ( n + 1 ) / 2 M=X_{(n+1)/2}
n为偶数时:
M = ( X n / 2 + X n / 2 + 1 ) / 2 M=(X_{n/2}+X_{n/2+1})/2

离散趋势

离散趋势反映的数据的波动范围。常见指标z有标准差、四分位数间距等。

  • 标准差(sd)

数据的离散程度的大小就是与平均值的差值,简称离均差。总体方差由离均差平方和除以观察例数n得到。标准差就是方差的开平方。它要求正态分布的数据,以准确反映。标准差越大,说明内部差异越大,平均值的整体代表性越差。样本标准差的公式为:
S = ( x x ˉ ) 2 / ( n 1 ) S= \sqrt{\sum (x-\bar{x})^2/(n-1)}

  • 四分位距(IQR)

四分位数(Quartile)是统计学中分位数的一种,即把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。第三四分位数与第一四分位数的差距又称四分位距(InterQuartile Range, IQR)四分位距可以排除极小和极大两端极端值影响,又尽可能利用数据反映离散情况。
四分位位置公式为:
L p = ( n ) ( P 100 ) L_p=(n)\left(\frac{P}{100}\right)
其中,P为百分比(取值25,50,75,100),n为样本总量,L为分位数位置。
求出分位数位置L,L如果是不是整数则取第L和第L+1的平均值。以此可以求出Q3、Q1的值。
I Q R = Q 3 Q 1 IQR= Q3-Q1

分布特征

随着统计学发展,研究者开始假设数据所在总体应当服从某种分布。每一种分布,都有一系列指标可以描述数据偏离分布的程度。如常见正态分布的相关指标偏度与峰度。

  • 偏度(Skewness)

偏度是用来描述变量取值分布形态的统计量,指分布不对称的方向和程度。偏度系数记为g1:
g 1 = 1 n i = 1 n ( x i x ˉ ) 3 g1=\frac{1}{n}{\sum^n_{i=1} (x_i-\bar{x})^3}
当g1>0时分布为正偏或右偏,g1<0是分布为负偏或左偏。g1=0时对称分布。

  • 峰度(Kurtosis)

峰度是描述变量取值分布形态陡缓程度的统计量,反映分布图形的峰凸程度。记作g2:
g 2 = 1 n i = 1 n ( x i x ˉ ) 4 / s 4 3 g2=\frac{1}{n}{\sum^n_{i=1} (x_i-\bar{x})^4/s^4}-3
当g2>0时峰形尖锐,g2<0是峰形平坦,g2=0时为正态峰。

R操作

R操作比较简单,直接调用函数即可。常见函数及功能如下:

函数 功能
mean() 平均数
median() 中位数
sd() 标准差
var() 方差
quantile(x,probs) 求分位数。其中x为待求分位数的数值型向量,probs为一个由[0,1]之间的概率值组成的数值向量
range() 值域
sum() 求和
diff(x,lag=n) 滞后差分。lag用以指定滞后几项,默认为1
min() 求最小值
max() 求最大值

也有一步到位求出常用值的函数如:
summary()函数
Hmisc包:describe()函数(不再演示)
Psysh包:describe()函数(不再演示)

#生成20个随机数
x <- rnorm(20)
#summary函数
summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-0.9533 -0.5187 -0.1645  0.1239  0.8248  1.6144 

分类变量

分类变量的描述统计指标一般就是频率和百分比。单个分类变量的描述用频率,多个分类变量的描述用列联表表示。
常用函数如下:

函数 功能
table(var1,var2,…varN) 使用N个分类变量创建一个N维列联表
xtabs(formula,data) 根据一个公式和一个矩阵或数据框创建一个N维列联表
prop.table(table,margins) 依margins定义的边际列表将表中条目表示为分数形式
margin.table(table,margins) 依margins定义的边际列表计算表中条目的和
addmargin(table,margins) 将概述边margins(默认求和结果)放入表中
ftable(table) 创建一个紧凑平铺的列联表

单分类变量

示例:

#自行安装vcd包
#使用vcd包Arthritis数据集。
#载入vcd包
library(vcd)
#显示Arthritis数据集前5行
head(Arthritis)
  ID Treatment  Sex Age Improved
1 57   Treated Male  27     Some
2 46   Treated Male  29     None
3 77   Treated Male  30     None
4 17   Treated Male  32   Marked
5 36   Treated Male  46   Marked
6 23   Treated Male  58   Marked
#单分类变量描述统计
mytable <- table(Arthritis$Improved)
mytable

  None   Some Marked 
    42     14     28 
#可以用prop.table将这些频数转化为比例值
prop.table(mytable)

     None      Some    Marked 
0.5000000 0.1666667 0.3333333 
#prop.table*100转化为百分比
prop.table(mytable)*100

    None     Some   Marked 
50.00000 16.66667 33.33333 

双分类变量

双分类变量描述统计的table格式为:

mytable<-table(A,B)

其中A为行变量,B为列变量。

xtable函数可以使用公式风格的输入创建列联表,格式为:

mytable<-xtable(~A+B,data=mydata)

示例:

mytable <- xtabs(~Treatment+Improved,data=Arthritis)
mytable
         Improved
Treatment None Some Marked
  Placebo   29    7      7
  Treated   13    7     21

SPSS格式

还可以使用gmodels包中CrossTable()函数创建二维列联表。返回的结果类似SPSS和SAS软件中的列联表格式。

#载入gmodels包
library(gmodels)
#调用CrosTable函数
CrossTable(Arthritis$Treatment,Arthritis$Improved)
#结果太大,不再展示

R 微信公众号:R语言小白速通
R 懂点R语言
欢迎分享收藏关注

发布了38 篇原创文章 · 获赞 13 · 访问量 3299

猜你喜欢

转载自blog.csdn.net/renewallee/article/details/102963433