標籤:ken 相關 array 自訂函數 mit 最大值 UNC eric attr
描述性統計分析主要包括
- 基本資料:樣本數、總和
- 集中趨勢:均值、中位元、眾數
- 離散趨勢:方差(標準差)、變異係數、全距(最小值、最大值)、內四分位距(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.4241.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 wtnbr.val 32.0000000 32.00000000 32.00000000nbr.null 0.0000000 0.00000000 0.00000000nbr.na 0.0000000 0.00000000 0.00000000min 10.4000000 52.00000000 1.51300000max 33.9000000 335.00000000 5.42400000range 23.5000000 283.00000000 3.91100000sum 642.9000000 4694.00000000 102.95200000median 19.2000000 123.00000000 3.32500000mean 20.0906250 146.68750000 3.21725000SE.mean 1.0654240 12.12031731 0.17296847CI.mean.0.95 2.1729465 24.71955013 0.35277153var 36.3241028 4700.86693548 0.95737897std.dev 6.0269481 68.56286849 0.97845744coef.var 0.2999881 0.46740771 0.30412851skewness 0.6106550 0.72602366 0.42314646skew.2SE 0.7366922 0.87587259 0.51048252kurtosis -0.3727660 -0.13555112 -0.02271075kurt.2SE -0.2302812 -0.08373853 -0.01402987normtest.W 0.9475647 0.93341934 0.94325772normtest.p 0.1228814 0.04880824 0.09265499
總數值個數(NBR.VAL),空值的數目(NBR. NULL),數目缺失值(NBR.NA),最小值(min),最大值(max),範圍(範圍,即max min)和所有非缺失值之和(和)
中位元(median),平均值(mean),標準誤差平均(SE.mean),P水平均值(CI.mean)的信賴區間,方差(Var)、標準差(std.dev)和變異係數(coef.var)定義為標準差除以平均值。
偏度係數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 wt1 0 17.14737 160.2632 3.7688952 1 24.39231 126.8462 2.411000> aggregate(mtcars[vars],by=list(am=mtcars$am),sd) am mpg hp wt1 0 3.833966 53.90820 0.77740012 1 6.166504 84.06232 0.61698162.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 sempg1 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.880mpg2 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.710hp1 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.367hp2 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.315wt1 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.178wt2 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 groupgroup: 0 vars n mean sd median trimmed mad min max range skew kurtosis sempg 1 19 17.15 3.83 17.30 17.12 3.11 10.40 24.40 14.00 0.01 -0.80 0.88hp 2 19 160.26 53.91 175.00 161.06 77.10 62.00 245.00 183.00 -0.01 -1.21 12.37wt 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 sempg 1 13 24.39 6.17 22.80 24.38 6.67 15.00 33.90 18.90 0.05 -1.46 1.71hp 2 13 126.85 84.06 109.00 114.73 63.75 52.00 335.00 283.00 1.36 0.56 23.31wt 3 13 2.41 0.62 2.32 2.39 0.68 1.51 3.57 2.06 0.21 -1.17 0.17 UsagedescribeBy(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 wtn 19.00000000 19.00000000 19.0000000mean 17.14736842 160.26315789 3.7688947stdev 3.83396639 53.90819573 0.7774001skew 0.01395038 -0.01422519 0.9759294kurtosis -0.80317826 -1.20969733 0.1415676-------------------------------------------------------------mtcars$am: 1 mpg hp wtn 13.00000000 13.0000000 13.0000000mean 24.39230769 126.8461538 2.4110000stdev 6.16650381 84.0623243 0.6169816skew 0.05256118 1.3598859 0.2103128kurtosis -1.45535200 0.5634635 -1.1737358Usageby(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 wtMazda RX4 21.0 110 2.620Mazda RX4 Wag 21.0 110 2.875Datsun 710 22.8 93 2.320Hornet 4 Drive 21.4 110 3.215Hornet Sportabout 18.7 175 3.440Valiant 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
R-基本統計分析--描述性統計分析