R軟體統計分析 常態分配與次數分配表 統計推論與各種檢定 羅吉斯迴歸和決策樹 4 2 3 1 迴歸分析和變異數分析
常態分配常用函數、亂數與隨機抽樣、常態機率圖和常態性檢定、各式次數分配表、敘述統計 一.常態分配與次數分配表 常態分配常用函數、亂數與隨機抽樣、常態機率圖和常態性檢定、各式次數分配表、敘述統計
常態分配常用函數 rnorm(n,0,1): 產生n個N(0,1)的隨機亂數 dnorm(x,0,1): 計算N(0,1)在x的機率密度函數值 pnorm(x,0,1): 計算p=P(Z<=x)的累積機率值 qnorm(p,0,1): 計算岀使P(Z<=x)=p的x值,是pnorm的反函數 以dnorm和pnorm分別計算機率密度函數值(pdf)和累積機率密度函數值(cdf) 同理以均等分配U(0,1)為例,相關的函數名稱為runif、dunif、punif、qunif
常態分配常用函數
pdf、cdf函數圖形 curve(dnorm(x),-3.5, 3.5,main="N(0,1) pdf") curve(pnorm(x),-3.5, 3.5,main="N(0,1) cdf") 95% Pr(Z<1.96)=0.975 Pr(Z<-1.96)=0.025
亂數與隨機抽樣
常態機率圖和常態性檢定 常態機率圖: qqnorm(Sepal.Length) 最佳斜線: qqline(Sepal.Length,col="red") Shapiro-Wilk檢定:基本套組stats的shapiro.test函數 Anderson-Darling檢定:套組nortest的ad.test函數 Kolmogorov-Smirnov檢定:基本套組stats的ks.test函數
範例height:檢查資料有否偏離值
範例height:以圖形呈現資料分佈
範例height:以機率密度畫直方圖和曲線
範例height:常態機率圖和常態性檢定
範例iris:直方圖和常態曲線
範例iris:常態機率圖和常態性檢定
各種次數分配表的函數 xtab 計算分組次數 tapply 、aggregate彙整函數 prop.table計算分組百分比 tabulate、table(2D) 、table(3D)函數 ftable(data.frame(gender,area,cards))分層 hist計算分組次數 library(xtable): print(xtable(dataframe, caption=“html table"),TYPE="HTML")
xtab 計算分組次數
自訂順序的次數分配表
tapply 、aggregate彙整函數
prop.table計算分組百分比
tabulate、table函數(2D)
Table函數(3D)
hist計算分組次數
brain範例:敘述統計一
brain範例:敘述統計二
brain範例: table和ftable分組次數
brain範例:分組次數 brain=read.csv("d:\\stella\\R\\brain.csv", header=T) attach(brain) Gender2=c("Male","Female")[Gender+1] index=1+(BrainSize>mean(BrainSize)) BrainSize2=c("Small","Big")[index] index2=1+(Weight>mean(Weight)) Weight2=c("Thin","Fat")[index2] (table3D=table(Gender2,Weight2,BrainSize2)) (ftable(data.frame(Gender2,Weight2,BrainSize2)))
brain範例: FSIQ頂高標 #FSIQ m:high standard and h:top standard summary(brain) bm=brain[brain$FSIQ>mean(brain$FSIQ),] (m=mean(bm$FSIQ)) bh=brain[brain$FSIQ>quantile(brain$FSIQ,0.75),] (h=mean(bh$FSIQ))
brain範例:三項IQ的頂高標 # 3 IQ m: high standard h:top standard mv=NULL;hv=NULL for (i in 2:4) #第 2 3 4欄位 {bm=brain[brain[,i]>mean(brain[,i]),] m=mean(bm[,i]) mv=c(mv,m) bh=brain[brain[,i]>quantile(brain[,i],0.75),] h=mean(bh[,i]) hv=c(hv,h)} cat("\tFSIQ\t VIQ\t PIQ\n") mv;hv
brain範例:程式迴圈執行結果
二. 統計推論與各種檢定 假設檢定概說、 Z檢定、單一樣本t檢定、兩組獨立樣本t檢定、配對樣本t檢定、 相關係數檢定、卡方檢定、Fisher正準檢定、單樣本、雙樣本、 多組樣本無母數檢定
假設檢定概說 在進行各種統計假設檢定時,我們通常將要否定(棄卻)之事實當作虛無假設(以H0代表)。既然希望它是不對,欲將其否定,那就表示會有一個希望它是對的對立假設(以H1代表)。 當檢定結果,得否定該虛無假設時,就等於接受對立假設。虛無假設與對立假設間必須是週延且互斥,其間絕無重疊的模糊地帶;也無任何無法涵蓋的真空地帶。
等於與不等於之雙尾檢定 H0:μ1=μ2 檢定統計量之觀察值落在左側或
右側單尾檢定 左側單尾檢定 H0:μ1≦μ2 H1:μ1>μ2 H0:μ1≧μ2 H1:μ1<μ2
檢定的步驟 設定虛無假設H0 設定對立假設H1 決定顯著水準(α) 選擇適當的檢定統計量(z、t、F、…),以及決定危險域(棄卻域之臨界點) 計算所選之檢定統計量的觀察值 結論:當檢定統計量的觀察值落入危險域,棄卻虛無假設H0;反之,無法棄卻虛無假設H0(接受虛無假設)
母體平均數μ的Z檢定 大樣本(n>30)時用Z檢定,若母體標準差σ未知,則可使用樣本標準差S來替代 母體平均數μ的95%信賴區間為樣本平均數加減可容忍誤差e
Z檢定函數one.sample.z(asbio) babies範例mean(bwt)=119.5769 sd(bwt)=18.23645 改成alternative=“two.sided” alternative=“less” conf=0.9
母體平均數的95%信賴區間
95%信賴區間的意義
t檢定函數t.test 單一樣本t檢定(mu=目標值) 兩組獨立樣本t檢定:先用var.test函數進行兩組變異數相同與否的F檢定。若變異數相同則(var.equal=TRUE),若變異數不相同則(var.equal= FALSE或省略) 配對樣本t檢定(paired=TRUE)
單一樣本t檢定 若樣本為抽自常態母體之小樣本(n≦30),且母體μ與σ均未知。其各項檢定所使用之檢定統計量為:(T分配之自由度為n-1) 由於t分配是取決於樣本大小(n);當樣本數超過30(n>30),t-分配就頗接近常態分佈。 且於同一個顯著水準下,t值大於等於z值,故其檢定結果會較為嚴格一點。
單一樣本t檢定
獨立樣本t檢定(變異數相同) 若兩母群體之變異數相同,是採用匯總變異數t檢定(pooled-variance t test)。其相關公式如下:
獨立樣本t檢定(變異數不相同) 若兩母群體之變異數不同,則將用個別變異數的t統計量(Cochran&Cox法)。其相關公式為: (此處公式計算之自由度可能會含小數。)
獨立樣本t檢定(變異數相同)
獨立樣本t檢定(變異數不相同)
練習:wdbc的t檢定 wdbc=read.csv("d:\\stella\\R\\wdbc.txt",header=T) for (i in 3:32) { f=var.test(wdbc[,i]~wdbc[,2]) # diagnosis p=f$p.value if (p<0.05) { t=t.test(wdbc[,i]~wdbc[,2],var.equal=F) } else { t=t.test(wdbc[,i]~wdbc[,2],var.equal=T) } cat(“c”,i-2,round(t$p.value,4), ifelse(t$p.value<0.05,"*"," "),"\n") }
自動化t檢定的程式碼(1 loop)
自動化t檢定的程式碼(2 loops)
配對樣本t檢定 若同組人,受訓後的打字速度是否高於受訓前。此類之例子,兩組受測樣本間為相依(同一個人),就要使用配對樣本的t檢定。相關公式為: (d即同一配對之兩資料相減之差。)
配對樣本t檢定
雙變數相關係數檢定
卡方檢定 適合度檢定(Chi-Square Goodness of Fit Test):檢查資料是否符合某比例或某個機率分配 齊一性檢定(Test of Homogeneity) :檢查一個分類變數底下各分類的比例關係是否一致 獨立性檢定(Test of Independence):檢查兩個分類變數之間是否互相獨立
期望值:欄合計×列合計/ 總樣本數 政黨傾向 北區 中區 南區 東區 合計 列百分比 1. 民進黨 個數 83 43 113 8 247 24.6% 期望數 111.8 49.9 73.2 12.0 2. 國民黨 203 87 92 25 407 40.5% 184.3 82.2 120.7 19.8 3. 新黨 11 9 2 30 3.0% 13.6 6.1 8.9 1.5 4. 台聯 7 6 3 27 2.7% 12.2 5.5 8.0 1.3 5. 無 147 57 79 294 29.3% 133.1 59.4 87.2 14.3 455 298 49 1005 100.0% 欄百分比 45.3% 20.2% 29.7% 4.9%
卡方檢定應注意事項 卡方值 自由度為(r-1)*(c-1) 卡方檢定僅適用於類別資料,如性別、政黨傾向、宗教信仰。 各細格之期望次數不應少於5。通常要有80%以上的期望次數≧5,否則會影響其卡方檢定的效果。 若自由度為1(2x2表格),會自動執行葉氏修正卡方檢定,或使用Fisher正準檢定,此時細格之期望次數不應少於10 。 若有期望次數小於5時,可將其合併或繼續收集資料
卡方適合度和齊一性檢定
卡方獨立性檢定和Fisher正準檢定
葉氏修正卡方檢定(2 x 2) 腦容量和IQ有顯著關連
葉氏修正卡方檢定(2 x 2) 體重和IQ無關
練習:鐵達尼號的卡方檢定
練習:鐵達尼號的卡方檢定
無母數檢定 無母數檢定(Non-parametric Tests)又稱為不考慮母體分配的檢定,在小樣本(n<30)、母體不呈常態分配、想推論的是中位數而非平均數時,都可以無母數檢定取代t檢定或ANOVA的F檢定,包括 單樣本:中位數符號檢定、Wilcoxon符號等級檢定、連檢定(檢定資料是否隨機) 雙樣本:雙獨立樣本Wilcoxon等級總合檢定、相依樣本Wilcoxon符號等級檢定、Kolmogorov-Smirnov雙樣本機率分配檢定 兩組或多組樣本:Kruskal等級總合檢定
單樣本無母數檢定 (UsingR套件) (TSA套件)
雙樣本無母數檢定 雙獨立樣本 相依樣本 雙樣本機率分配檢定
兩組或多組樣本無母數檢定 含各組資料的list變數 x為向量,g為分群變數
三.迴歸分析與變異數分析 簡單線性迴歸、模型的評比準則、複迴歸模型的變數篩選、殘差分析與共線性檢查、離群值與影響點偵測、根據模型預測新資料、變異數分析、多重比較、殘差分析、 無母數檢定
迴歸分析 迴歸分析是以一個或一組自變數(解釋變數、預測變項,Xi),來預測一個數值性的因變數(依變數、應變數、被預測變項,Y)。若只有一個自變數稱為簡單迴歸;若使用一組自變數則稱為多元迴歸或複迴歸。 主要函數為lm(Linear Model) model=lm(Y~X1+X2+…+Xk, data=…) model=lm(Y~ . , data=…)
簡單線性迴歸 SQRT(MSE) MSE
簡單線性迴歸的輸出說明 Residual standard error: 12.18 (root MSE,即根號148.37) on 21 degrees of freedom Multiple R-squared: 0.1963 (R2=SSM/SST) , Adjusted R-squared: 0.158 1-(1-R2)((N-1)/(N-p)) p為含截距的參數個數 F-statistic: 5.128 (MSM/MSE) on 1 and 21 DF, p-value: 0.03425 Df Sum Sq Mean Sq F value Pr(>F) model 1 760.77 SSM 760.77 MSM=SSM/Df 5.1277 F=MSM/MSE 0.034 error 21 3115.67 SSE 148.37 MSE=SSE/Df total 22 3876.435 SST SST=SSM+SSE
F檢定和t檢定 變異數分析檢定,判斷因變數Y與自變數X(於複迴歸中則為全部之自變數)間,是否有顯著之迴歸關係存在?如本例之顯著性0.03425<α=0.05,故其結果為棄卻因變數與自變數間無迴歸關係存在之虛無假設。 t檢定,判斷迴歸係數與常數項是否為0(為0即無直線關係存在)?其虛無假設為迴歸係數與常數項為0,如本例之常數項(截距)為-2.8601,其t統計量為-0.303,顯著性0.7650>α=0.05,故無法棄卻其為0之虛無假設,迴歸方程式之常數項應為0,故往後可將其省略。
判定係數R2和參數的95%信賴區間
模型的評比準則 此模型為: adoptedR=0.2576 X computerR - 2.8601 判斷模型適合度(Goodness of Fit),矯正後判定係數(adj R平方)越大越好,殘差的標準差(Root MSE,又稱預測標準誤)越小越好, F檢定和t檢定的p值越小越好
複迴歸模型的預處理 轉換各縣市研究所畢業人數為比例 先刪除city和unknownR兩變數 計算各變數之間的相關係數 用pairs函數畫出所有變數XY散佈圖 將所有候選的解釋變數放到lm模型,準備以step函數進行變數篩選
預處理的輸出
複迴歸模型的變數篩選 複迴歸模型常使用step函數來作變數篩選 summary(step( lm模型, direction=“both”, k=2)) both指加入或刪除變數 direction可為forward、backward、both k=2使用AIC作篩選標準,若k=log(n) ,n為樣本數,則改用BIC作篩選標準。 K:the penalty per parameter to be used; the default k = 2 is the classical AIC, Akaike's ‘An Information Criterion’, k=log(n) is BIC or SBC,Schwarz's Bayesian Criterion
step函數搭配AIC指標逐步迴歸
改用BIC指標挑選結果相同
挑出6個解釋變數確立模型
複迴歸模型分析的主要流程 解釋變數選取 確立模型架構 模型評估 殘差分析 離群值與影響點分析 共線性分析 根據模型來預測新的資料
殘差分析與共線性檢查 迴歸分析時,有四個與殘差有關的假設需驗證,後3個檢定的p值>0.05,表示符合基本假設。 殘差的平均值為0:最小誤差平方法中一定成立 殘差的常態性: >shapiro.test(model1$residuals) 殘差的變異數均齊性: car套件 >ncvTest(model1) 殘差的獨立性: car套件 >durbinWatsonTest(model1) 共線性(collinearity):一般判斷標準是變異數膨脹因素VIF值>10,則表示解釋變數之間可能有共線性問題。 car套件 >VIF(model1)
殘差與共線性的檢驗
殘差分析圖
離群值與影響點偵測指標 槓桿值(Leverages):可使用hatvalues函數算出槓桿值, 槓桿值若大於2p/n ,則可能是離群值或影響點,p是含截距的自變項個數 Cook’s D值:可使用cooks.distance函數算出,指標值若大於1 ,則可能是離群值,影響點通常以F0.5(p,n-p)當作門檻值 Student化殘差公式為:e/(sqrt(MSE)*sqrt(1-hii),Student化殘差絕對值若大於2.5 ,有可能是離群值(例如第15個觀察值) car的outlierTest可作Bonferroni離群值檢定 互動式influencePlot函數圈出影響點,觀察值編號15、20、22 ,即為相對於迴歸係數估計值變化的影響點
離群值與影響點
影響點圖形
iris迴歸分析程式檔 # preprocessing round(cor(iris[,-5]),2) pairs(iris) # Iris Multiple Regression model=lm(Sepal.Length ~ . ,data=iris) summary(step(model)) irisnew=read.csv("d:\\stella\\R\\iris_new.txt", header=T) predict(model,newdata=irisnew, level=0.95, interval="confidence") #原4.8 5.7 5.0 7.0 6.3 4.9 6.3 7.6 6.5 5.9
# Residuals and Variance Inflation Factor par(mai=c(0.5,0.5,0.5,0.5),mfrow=c(2,2)) plot(model) resid=model$residuals shapiro.test(resid) library(car) ncvTest(model) durbinWatsonTest(model) vif(model) mean(vif(model)) # Outliers (hii=hatvalues(model)) h=2*7/23 #槓桿值若大於2p/n ,則可能是離群值或影響點,p是含截距的自變項個數 (which(as.vector(hii)>h)) cooks.distance(model) which(as.vector(cooks.distance(model))>1) (q=qf(0.5,7,23-7)) #F0.5(p,n-p) which(as.vector(cooks.distance(model))>q) (student.residual=summary(model)$residuals/(summary(model)$sigma*sqrt(1-hii))) influencePlot(model)
新的10筆iris資料檔 4.8,3.4,1.6,0.2,setosa 5.7,3.8,1.7,0.3,setosa Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Species 4.8,3.4,1.6,0.2,setosa 5.7,3.8,1.7,0.3,setosa 5.0,3.5,1.6,0.6,setosa 7.0,3.2,4.7,1.4,versicolor 6.3,3.3,4.7,1.6,versicolor 4.9,2.4,3.3,1.0,versicolor 6.3,3.3,6.0,2.5,virginica 7.6,3.0,6.6,2.1,virginica 6.5,3.0,5.5,1.8,virginica 5.9,3.0,5.1,1.8,virginica
迴歸的目的是根據模型預測新資料
變異數分析(ANOVA) 單因子變異數分析(ANOVA,Analysis of Vairance)是用來檢定多組(>=3)母群平均數是否相等?亦即,Z與t檢定是用於兩組資料比較平均數差異時;而比較二組以上的平均數是否相等時,就須使用到變異數分析。其虛無假設與對立假設為: H0:μ1=μ2=…=μk(每組之均數相等) H1:至少有兩個平均數不相等
iris單因子變異數分析 H0:μSetosa=μVersicolor=μVirginica H1:至少有一種的平均數和其他品種不相等 Cofficient的Intercept是reference group(此為Setosa的平均),第二行是估計Versicolor平均和Setosa平均的差,第三行則是估計Virginica和Setosa平均的差,t檢定結果都顯著 H0:該品種與Setosa平均相同 如還要比較Versicolor和Virginica呢? R提供數種多重比較的工具,無論比較的組數多寡,都是一次性檢定
iris單因子變異數分析
多重比較
多重比較圖形 Versicolor-Setosa Virginica-Setosa Virginica-Versicolor
多重比較分組 * a b c表示不同組,即有顯著差異
etch單因子變異數分析
多重比較
多重比較圖形 180 200 220 200 220 220
多重比較分組
殘差分析和極端值檢查 *p值不顯著表示沒有可疑的極端值,最有可能的是第12筆
oneway.test kruskal.test無母數檢定 H0:A因子的各水準沒有顯著差異 殘差需常態但不需固定變異數的假設 殘差不需常態分配的假設
* asbio套件的bonfCI、tukeyCI、 lsdCI、 scheffeCI 多重比較信賴區間 * asbio套件的bonfCI、tukeyCI、 lsdCI、 scheffeCI
四.羅吉斯迴歸和決策樹 二元羅吉斯迴歸、訓練與測試樣本的混淆矩陣和預測正確率分析、多分類羅吉斯迴歸、順序型羅吉斯迴歸、資料探勘:決策樹、應變數為數值變數的分類迴歸樹、應變數為分類變數的分類迴歸樹、樹狀圖、混淆矩陣正確率分析
羅吉斯迴歸(Logistic Regression) 當應變數Y為分類變數時, 必須使用羅吉斯迴歸(Logistic Regression) Y為二元分類應變數, 可用glm函數來分析二元羅吉斯迴歸(Dichotomus Logistic): glm(Y~X1+X2+X3+…., data=資料框架變數, family=binomial(link=logit)) Y為多分類應變數,可用nnet套件的multinom函數分析多分類羅吉斯迴歸(Polytomous Logistic) : multinom(Y~X1+X2+X3.., data=資料框架變數) Y為順序型分類應變數時,可用MASS套件的polr函數分析順序型羅吉斯迴歸(Ordinal Logistic) : polr(Y~X1+X2+X3.., data=資料框架變數)
二元羅吉斯迴歸範例:新生兒體重 *體重少於25%則bwt2=1, 否則為0 *90%當訓練樣本, 10%當測試樣本 *一般常用的是分割成70%訓練組30%測試組
t檢定和勝算比Odds ratio *t檢定結果顯著表示對嬰兒體重過輕有影響 *若其他條件同,只有抽煙與否的差異,則勝算比是exp(1.225)=3.405倍
參數與exp(參數)的信賴區間
Wald與Likelihood Ratio檢定 *age weight檢定結果不顯著,表示對嬰兒體重過輕沒什麼影響
訓練與測試樣本預測正確率分析
二元羅吉斯迴歸程式碼 # babies (if bwt<25% then bwt2=1 else bwt2=0) babies=read.table("d:/stella/R/babies.txt",header=T) babies=na.exclude(babies) bwt2=(babies$bwt<quantile(babies$bwt,0.25))*1 babies$bwt2=as.factor(bwt2) #90% sample as train group(index=1), 10% sample as test group(index=2) p=0.9 index=sample(2,nrow(babies),replace=T,prob=c(p,1-p)) babies.train=babies[index==1,] babies.test=babies[index==2,]
分析結果 #glm function train.result=glm(bwt2~gestation+parity+age+height+weight+smoke,data=babies.train,family=binomial(link=logit)) summary(train.result) exp(train.result$coef) #exp(參數估計值)計算 odds ratio confint(train.result) #參數的 95%信賴區間 exp(confint(train.result)) #exp(參數)的95%信賴區間 #Wald and Likelihood-Ration檢定 library(epicalc) logistic.display(train.result)
訓練組混淆矩陣 #train confusion matrix pred=predict(train.result,newdata=babies.train,type="response") pred=round(pred) tab=table(Y=babies.train$bwt2,Ypred=pred) rownames(tab)=levels(babies.train$bwt2) colnames(tab)=levels(babies.train$bwt2) tab cat("Total records(train)=",nrow(babies.train),"\n") cat("Correct Classification Ratio(train)=",sum(diag(tab))/sum(tab)*100,"%\n")
測試組混淆矩陣 #test confusion matrix pred=predict(train.result,newdata=babies.test,type="response") pred=round(pred) tab=table(Y=babies.test$bwt2,Ypred=pred) rownames(tab)=levels(babies.test$bwt2) colnames(tab)=levels(babies.test$bwt2) tab cat("Total records(test)=",nrow(babies.test),"\n") cat("Correct Classification Ratio(test)=",sum(diag(tab))/sum(tab)*100,"%\n")
練習:wdbc的羅吉斯迴歸 wdbc=read.csv("d:\\stella\\R\\wdbc.txt", header=T) p=0.7 index=sample(2,nrow(wdbc),replace=T,prob= c(p,1-p)) wdbc.train=wdbc[index==1,] wdbc.test=wdbc[index==2,] train.result=glm(diagnosis~.,data=wdbc.train,family=binomial(link=logit))
#train confusion matrix pred=predict(train.result,newdata=wdbc.train, type="response") pred=round(pred) (tab=table(Y=wdbc.train$diagnosis,Ypred=pred)) cat(“Total records(train)=”,nrow(wdbc.train),"\n") cat(“Correct Classification Ratio(train)=”, sum(diag(tab))/sum(tab)*100,"%\n") #test confusion matrix pred=predict(train.result,newdata=wdbc.test, (tab=table(Y=wdbc.test$diagnosis,Ypred=pred)) cat("Total records(test)=",nrow(wdbc.test),"\n") cat(“Correct Classification Ratio(test)=”, sum(diag(tab))/sum(tab)*100,"%\n")
wdbc的混淆矩陣
多分類羅吉斯迴歸範例:鳶尾花
混淆矩陣及預測新資料的品種
計算分類機率
多分類羅吉斯迴歸程式碼 p=0.9 index=sample(2,nrow(iris),replace=T, prob=c(p,1-p)) iris.train=iris[index==1,] iris.test=iris[index==2,] #nnet library multinom function library(nnet) train.result=multinom(Species~ . , data=iris.train) train.result
混淆矩陣及預測程式碼 #train confusion matrix Y.pred=predict(train.result,iris.train[, -5]) (tab=table(iris.train$Species,Y.pred)) cat(“Correct Classification Ratio(train)=”, sum(diag(tab))/sum(tab)*100,"%\n") #test confusion matrix Y.pred=predict(train.result,iris.test[, -5]) (tab=table(iris.test$Species,Y.pred)) cat(“Correct Classification Ratio(test)=“,sum(diag(tab))/sum(tab)*100,"%\n")
預測及分析準備的程式碼 #new data prediction irisnew2=read.csv("d:/stella/R/iris_new2.txt",header=T) (Y.pred=predict(train.result,irisnew2)) #以第150朵花為例 train.result iris[150,] iris150=c(1,5.9,3,5.1,1.8) (beta.versicolor=c(18.02826,-6.899766,-7.981207,17.28076,-4.555761)) (beta.virginica=c( -26.91099,-8.362751,-13.544018,25.58417,12.981154))
計算分類機率程式碼 (exp1=exp(iris150 %*% beta.versicolor)) #setosa vs versicolor的機率比例 (exp2=exp(iris150 %*% beta.virginica)) #setosa vs virginica的機率比例 (exp1/exp2) #versicolor vs virginica的機率比例 # 預測為各品種的機率 (setosa=1/(1+exp1+exp2)) (versicolor=exp1/(1+exp1+exp2)) (virginica=exp2/(1+exp1+exp2))
順序型羅吉斯迴歸範例:關節炎 Improved必須是ordered factor變數. Treatment必須是factor變數.
分析結果與混淆矩陣
預測及計算分類機率 *A B其他條件相同,A新藥方 B安慰劑, 則勝算比為exp(1.7453)=5.7276 *A B其他條件相同,A大 B 5歲,且A新藥方 B安慰劑, 則勝算比(odds ratio)為exp(0.03816*5+1.7453)=6.93
順序型羅吉斯迴歸程式碼 *Ordinal logistic library(vcd) head(Arthritis) summary(Arthritis) library(MASS) result=polr(Improved~Treatment+Sex+Age, data=Arthritis,Hess=T) result summary(result)
預測及計算分類機率程式碼 #predict and analyze Pred=predict(result,newdata=Arthritis) (tab=table(Arthritis$Improved,Pred)) (beta=result$coeff) exp(beta) (new3=Arthritis[c(23,48,66),]) predict(result,newdata=new3,type="probs") predict(result,newdata=new3,type="class") # type="class"可省
資料探勘:決策樹 決策樹(decision tree)是常用的資料探勘技術,可視為迴歸分析的擴充 決策樹可用於分類預測,此類決策樹稱為分類樹(classification tree),有些決策樹演算法可達成類似迴歸分析的數值應變數預測功能,此類決策樹稱為迴歸樹(regression tree) 決策樹是將資料依照每一階段不同的條件作循環切割(recursive partition),跟迴歸分析最大的不同再於一個解釋變數可在不同的切割階段被重複使用
決策樹圖例
分類迴歸樹基本概念 分類迴歸樹(CART, Classification and Regression Tree)由Brieman在1984年提出(2001年提出Random Forest決策樹) CART以反覆運算的方式,由根部開始反覆建立二元分支樹,直到樹節點中的同質性達到某個標準,或觸發反覆運算終止條件為止 CART的應變數欄位既可以是數值型資料,也可以是類別型資料 R提供tree和rpart建構CART決策樹 tree(Y ~ X1+X2+X3+…+Xk,data=…) rpart(Y ~X1+X2+X3+…+Xk,data=…)
應變數為數值變數babies
tree樹狀圖babies
應變數為分類變數iris
rpart樹狀圖iris
rpart的混淆矩陣與預測正確率
tree樹狀圖iris
tree的混淆矩陣與預測正確率
SPSS Modeler決策樹模型
SPSS Modeler決策樹的矩陣分析