描述性統計分析主要包括
- 基本信息:樣本數、總和
- 集中趨勢:均值、中位數、眾數
- 離散趨勢:方差(標准差)、變異系數、全距(最小值、最大值)、內四分位距(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
