数据的表述统计量
文章目录
数据的表述统计量
数据水平:反映数值大小
数据差异:反映离散程度
分布形状:反映偏度和峰度
一、描述水平的统计量
1、平均数与加权平均数
#平均数
> mean(table$分数)
[1] 80
#加权平均数
> weighted.mean(table$组中值,table$人数)
[1] 81
2、分位数
中位数
> median(table$分数)
[1] 85
median(x, na.rm = FALSE)
x是数值向量,na.rm是控制是否处理缺失数据的逻辑变量。
四分位数
> quantile(table$分数,probs = c(0.25,0.75),type = 6)
25% 75%
69.25 90.25
百分位数
> quantile(table$分数,probs = c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9),type = 6)
10% 20% 30% 40% 50% 60% 70% 80% 90%
55.6 66.2 72.9 81.4 85.0 86.0 89.7 91.0 94.7
3、众数
> library(rootSolve)
> library(DescTools)
> Mode(table$分数)
[1] 86
attr(,"freq")
[1] 3
二、描述差异的统计量
1、极差和四分位差
#极差
> range<-max(table$分数)-min(table$分数)
> range
[1] 47
#四分位差
> IQR(table$分数,type=6)
[1] 21
2、方差和标准差
#方差
> var(table$分数)
[1] 174.6207
#标准差
> sd(table$分数)
[1] 13.21441
3、变异系数
#变异系数
cv<-sd/mean
> mean<-apply(table,2,mean)
> sd<-apply(table,2,sd)
> cv<-sd/mean
> x<-data.frame("平均环数"=mean,"标准差"=sd,"变异系数"=cv)
> round(x,4)
平均环数 标准差 变异系数
选手1 9.81 0.6154 0.0627
选手2 10.23 0.4373 0.0427
选手3 9.26 0.7074 0.0764
选手4 10.14 0.5461 0.0539
选手5 9.80 0.6498 0.0663
选手6 9.73 0.7334 0.0754
选手7 9.69 0.3573 0.0369
选手8 9.65 0.4625 0.0479
#箱线图
> boxplot(table,notch=TRUE,col="lightblue",ylab="huanshu",xlab="yundongyuan")
apply(X, MARGIN, FUN)
Here:
-x: 一个数组或者矩阵
-MARGIN: 两种数值1或者2决定对哪一个维度进行函数计算
-MARGIN=1: 操作基于行
-MARGIN=2: 操作基于列
-MARGIN=c(1,2): 对行和列都进行操作
-FUN: 使用哪种操作,内置的函数有mean(平均值)、medium(中位数)、sum(求和)、min(最小值)、max(最大值),
4、标准分数与离群点
离群点:三个标准差外的数字
> as.vector(round(scale(table$分数),4))
[1] 0.3784 -1.8919 0.8324 -1.0594 -0.0757 1.2865 0.9081 -1.8919 0.5297 0.7567
[11] 0.2270 -0.7567 1.2108 -0.6054 0.7567 -1.4378 0.4540 0.4540 0.9081 0.3784
[21] -0.9838 0.0757 0.6811 -2.2702 1.1351 0.4540 -0.3784 0.8324 0.1513 -1.0594
三、描述分布形状的统计量
1、偏度系数
> library(e1071)
> skewness(table$分数,type=3)
[1] -0.7500727
2、峰度系数
小于零:比标准正态分布的峰值低
大于零:比标准正态分布的峰值高
> kurtosis(table$分数,type=3)
[1] -0.6537093
四、数据的综合描述
1、几个常用的R函数
一次输入多个描述统计量
> library(pastecs)
> round(stat.desc(table),4)
选手1 选手2 选手3 选手4 选手5 选手6 选手7 选手8
nbr.val 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000
nbr.null 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
nbr.na 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
min 8.5000 9.4000 8.3000 9.1000 8.6000 8.1000 9.1000 8.7000
max 10.6000 10.8000 10.7000 10.8000 10.5000 10.7000 10.2000 10.3000
range 2.1000 1.4000 2.4000 1.7000 1.9000 2.6000 1.1000 1.6000
sum 98.1000 102.3000 92.6000 101.4000 98.0000 97.3000 96.9000 96.5000
median 9.9000 10.3500 9.2000 10.2500 9.9500 9.8500 9.8000 9.7500
mean 9.8100 10.2300 9.2600 10.1400 9.8000 9.7300 9.6900 9.6500
SE.mean 0.1946 0.1383 0.2237 0.1727 0.2055 0.2319 0.1130 0.1462
CI.mean.0.95 0.4403 0.3128 0.5061 0.3907 0.4648 0.5246 0.2556 0.3308
var 0.3788 0.1912 0.5004 0.2982 0.4222 0.5379 0.1277 0.2139
std.dev 0.6154 0.4373 0.7074 0.5461 0.6498 0.7334 0.3573 0.4625
coef.var 0.0627 0.0427 0.0764 0.0539 0.0663 0.0754 0.0369 0.0479
library(psych)
> describe(table)
vars n mean sd median trimmed mad min max range skew kurtosis se
选手1 1 10 9.81 0.62 9.90 9.88 0.52 8.5 10.6 2.1 -0.65 -0.45 0.19
选手2 2 10 10.23 0.44 10.35 10.26 0.44 9.4 10.8 1.4 -0.50 -1.04 0.14
选手3 3 10 9.26 0.71 9.20 9.20 0.59 8.3 10.7 2.4 0.54 -0.65 0.22
选手4 4 10 10.14 0.55 10.25 10.19 0.59 9.1 10.8 1.7 -0.52 -1.10 0.17
选手5 5 10 9.80 0.65 9.95 9.86 0.82 8.6 10.5 1.9 -0.42 -1.35 0.21
选手6 6 10 9.73 0.73 9.85 9.81 0.67 8.1 10.7 2.6 -0.79 -0.12 0.23
选手7 7 10 9.69 0.36 9.80 9.70 0.30 9.1 10.2 1.1 -0.29 -1.46 0.11
选手8 8 10 9.65 0.46 9.75 9.69 0.30 8.7 10.3 1.6 -0.65 -0.66 0.15
2、一个综合描述的例子
从图表和统计量两个方面进行描述
> par(fig=c(0,0.8,0,0.8))
> hist(table$月生活费支出,xlab="yueshenghuofeizhichu",ylab="p",prob=TRUE,col="lightblue",main="") #条形图
> rug(jitter(table$月生活费支出)) #核密度图
> lines(density(table$月生活费支出),col="red") #曲线
> par(fig=c(0,0.8,0.35,1),new=TRUE)
> boxplot(table$月生活费支出,horizontal = TRUE,axes=FALSE)
> boxplot(table$月生活费支出~table$家庭所在地*table$性别,col=(2:3),ylab="zhichu")
> library(ggplot2)
> mytheme<-theme(plot.title = element_text(size=10),axis.title = element_text(size=9),axis.text = element_text(size=8),legend.position = "none")
> ggplot(table)+
+ geom_density(aes(x=table$月生活费支出,group=table$性别,color=table$性别,fill=table$家庭所在地),alpha=0.5)+
+ facet_grid(table$性别~table$家庭所在地)+
+ mytheme+
+ ggtitle(" ")
> summary(table)
性别 家庭所在地 月生活费支出
Length:60 Length:60 Min. :1100
Class :character Class :character 1st Qu.:1550
Mode :character Mode :character Median :1850
Mean :1812
3rd Qu.:2000
Max. :2800
> my_summary<-function(x){
+ with(x,data.frame(
+ n=length(table$月生活费支出),
+ "mean"=mean(table$月生活费支出),
+ "median"=median(table$月生活费支出),
+ "sd"=sd(table$月生活费支出),
+ "quanju"=max(table$月生活费支出)-min(table$月生活费支出),
+ "bianyixishu"=sd(table$月生活费支出)/mean(table$月生活费支出),
+ "pianduxishu"=e1071::skewness(table$月生活费支出)))}
> library(plyr)
> ddply(table,.(性别),my_summary)
性别 n mean median sd quanju bianyixishu pianduxishu
1 男 60 1812.333 1850 320.9962 1700 0.1771176 0.3002957
2 女 60 1812.333 1850 320.9962 1700 0.1771176 0.3002957
> ddply(table,.(家庭所在地),my_summary)
家庭所在地 n mean median sd quanju bianyixishu pianduxishu
1 大型城市 60 1812.333 1850 320.9962 1700 0.1771176 0.3002957
2 乡镇地区 60 1812.333 1850 320.9962 1700 0.1771176 0.3002957
3 中小城市 60 1812.333 1850 320.9962 1700 0.1771176 0.3002957
ddply(数据,分组的列,对列进行某种操作的函数)
> myfun<-function(x){
+ c(n=length(x),mean=mean(x),median=median(x),
+ sd=sd(x),CV=sd(x)/mean(x),R=(max(x)-min(x)),SK=e1071::skewness(x))}
> library(doBy)
> summaryBy(月生活费支出~性别+家庭所在地,data=table,FUN=myfun)
性别 家庭所在地 月生活费支出.n 月生活费支出.mean 月生活费支出.median
1 男 大型城市 15 1714.667 1780
2 男 乡镇地区 4 1712.500 1700
3 男 中小城市 6 1660.000 1725
4 女 大型城市 11 2031.818 2000
5 女 乡镇地区 6 1786.667 1860
6 女 中小城市 18 1841.111 1825
月生活费支出.sd 月生活费支出.CV 月生活费支出.R 月生活费支出.SK
1 293.4004 0.1711122 900 -0.61763658
2 246.2214 0.1437789 450 0.01334604
3 290.1724 0.1748026 700 -0.15348401
4 383.5836 0.1887883 1300 0.38347423
5 247.5210 0.1385379 700 -1.13491460
6 308.9430 0.1678025 960 0.29018033