社會科學統計方法

機率、描述統計(v1.0)

蔡佳泓

4/16/2019

課程目標

統計是從母體中抽出若干樣本,加以描述,以認識母體。我們收集到的資料都是看不見的母體根據某種機率分佈所產生的,例如擲一枚硬幣1,000次,雖然很多次,但是只佔可能的無限次非常小的一部分,不過根據這1,000次的結果,我們可以計算平均值、標準差,並且推導出\(C_{x}^{n}P^x\cdot(1-P)^{n-x}\),其中\(n\)為總次數,\(x\)為成功的次數(例如硬幣的有圖案的那一面朝上),\(P\)為理論上的成功機率,例如0.5。

本週課程將介紹機率的基本概念,然後介紹描述統計,包括中央趨勢以及離散,也就是平均數、最小值、最大值、標準差等等,我們以mtcars為例:

Statistic N Mean St. Dev. Min Max
mpg 32 20.091 6.027 10.400 33.900
cyl 32 6.188 1.786 4 8
disp 32 230.722 123.939 71.100 472.000
hp 32 146.688 68.563 52 335
drat 32 3.597 0.535 2.760 4.930
wt 32 3.217 0.978 1.513 5.424
qsec 32 17.849 1.787 14.500 22.900
vs 32 0.438 0.504 0 1
am 32 0.406 0.499 0 1
gear 32 3.688 0.738 3 5
carb 32 2.812 1.615 1 8

機率

樣本空間

機率公設

實例

聯合機率 (Joint probability)

獨立事件 (Independent Events)

互斥事件 (Disjoint Events)

實例

邊際機率(Marginal Probability)

councilor<-read.csv('councilor.csv', sep=',',header=TRUE, fileEncoding = 'BIG5')

tu<-table(councilor$Year, councilor$unit)
tu
##       
##        公園處 水利處 新建工程處
##   2015      1      1          0
##   2016      0      0          8
margin.table(tu,1)/sum(tu)
## 
## 2015 2016 
##  0.2  0.8

計算得知,2015年與2016年的邊際機率分別為0.2及0.8。

條件機率(Conditional Probability)

互賴事件 (Dependent Events)

描述統計

例如我們想知道26名學生的性別以及學系分佈?

students<-read.table('studentsfull.txt', sep='', header=TRUE)
df <- data.frame(students)
library(knitr)
table(df$Gender)
## 
##  F  M 
## 13 13
kable(table(df$Gender))
Var1 Freq
F 13
M 13
kable(100*table(df$Department)/nrow(df))
Var1 Freq
Aerospace 15.38462
Chemistry 11.53846
Economics 15.38462
English 11.53846
Journalism 15.38462
Mechanics 19.23077
Physics 11.53846

中央趨勢

用一個統計值描述資料的分佈:

眾數

中位數(Median, Md)

百分位數及中位數

A<-c(1:10); B<-c(0:10)
median(A); median(B)
## [1] 5.5
## [1] 5

百分位數

\[i=\frac{np_{i}}{100}\]

X <- c(1, 1001, 1002, 1003)
quantile(X, c(.25, .5, .75), type=1)
##  25%  50%  75% 
##    1 1001 1002

比較SPSS與R的輸出

scores<-c(15, 22, 26, 32, 33,36, 36, 41, 42, 44,
44, 45, 47, 48, 61,63, 63, 65, 65, 65,
66, 66, 68, 69, 70,71, 74, 74, 76, 77,
78, 78, 79, 85)
quantile(scores, c(.25,.5,.75,.9), type=6)
##   25%   50%   75%   90% 
## 41.75 64.00 71.75 78.00

平均數

簡單平均數:

分組平均數

A<-list(station1=c(25, 33, 44), station2=c(43, 66, 78, 81), station3=c(90, 76, 105, 110, 121))
A
## $station1
## [1] 25 33 44
## 
## $station2
## [1] 43 66 78 81
## 
## $station3
## [1]  90  76 105 110 121
groupn=sapply(A, length); groupn
## station1 station2 station3 
##        3        4        5
Totaln=sum(sapply(A, length)); Totaln
## [1] 12
Total=sum(sapply(A, sum)); Total
## [1] 872
Total/Totaln
## [1] 72.66667

sapply()函數可套用函數在列表的每一個向量。
以分組平均數計算總平均數:

mn=sapply(A, mean); mn
## station1 station2 station3 
##     34.0     67.0    100.4
mn*groupn
## station1 station2 station3 
##      102      268      502
sum(mn*groupn)/Totaln
## [1] 72.66667

偏態(skewness)

偏態型態

R與Stata比較

library(foreign)
hsb2<-read.dta('hsb2.dta')
library(e1071)
## 
## Attaching package: 'e1071'
## The following object is masked from 'package:Hmisc':
## 
##     impute
skewness(hsb2$write, type=1)
## [1] -0.4784158

R與SPSS比較

skewness(hsb2$write, type=2)
## [1] -0.4820386

峰度 (kurtosis)

使用語法計算峰度

s4=sum((hsb2$write-mean(hsb2$write))^4)
s4
## [1] 3577773
m4=s4/200
s2=sum((hsb2$write-mean(hsb2$write))^2)
m2=s2/200
(m4/m2^2)
## [1] 2.238527

比較R與SPSS

kurtosis(hsb2$write, type=2)
## [1] -0.7502476

離散

範圍

range(hsb2$write)
## [1] 31 67
range(hsb2$math)
## [1] 33 75

樣本變異數:母體變異數的無偏估計

\[\sqrt{\frac{np(1-p)}{n-1}}\] \(p\) 是事件發生的機率。

樣本標準差

var(hsb2$write)
## [1] 89.84359
std = function(x) sqrt(var(x))
std(hsb2$write)
## [1] 9.478586
sd<-function(V)sqrt( sum((V - mean(V))^2 /(length(V)-1)))
sd(hsb2$write)
## [1] 9.478586

近似常態分佈圖形

set.seed(02138)
g<-rnorm(1000, 0, 1)
library(ggplot2)
gnorm<-data.frame(g)
testplot<-ggplot(aes(x=g, y=..density..), data=gnorm) +
   geom_histogram(bins=20,  fill='lightblue') +
   geom_density(aes(y=..density..), col='darkgreen') +
   theme_bw()
testplot 

Z值或分數

標準差的特性

H<-c(15000,7000,19000,3000,15000,19000,4000,12000,
       17000,  9000)
h<-c(15,7,19,3,15,19, 4,12,17, 9)
sd(H); sd(h)
## [1] 5962.848
## [1] 5.962848

作業

  1. 請計算studentsfull.txt這筆資料中的score中位數、90百分位數以及男性跟女性的平均數:

  2. 請計算studentsfull.txt這筆資料中男性跟女性的score平均數以及標準差:

  3. 請使用UsingR套件中的faithful資料,請問要看噴泉最少要等幾分鐘?平均要等幾分鐘?最多跟最少等的時間差距多少分鐘?

  4. 請用airquality這筆資料的Wind這個變數,計算前後兩個資料點的差異,以分析兩天之間風速的差異。例如:

A <- c(35, 61, 69)
d.A <- c(26, 8)
  1. 請問airquality這筆資料的Wind的偏態為何?峰度是多少?

  2. 請問在studentsfull.txt這筆資料中,性別的樣本標準差是多少?

  3. councilor這筆資料中,請問平均工程預算是多少?樣本標準差多少?

  4. 使用2008Election這筆資料,請問馬英九的得票數的25分位數、中位數、75分位數分別是多少?請問25與75分位數之間差別多少?