R語言中的多元統(tǒng)計_第1頁
R語言中的多元統(tǒng)計_第2頁
R語言中的多元統(tǒng)計_第3頁
R語言中的多元統(tǒng)計_第4頁
R語言中的多元統(tǒng)計_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、前言判別分析(discriminant analysis)是多元統(tǒng)計分析中較為成熟的一種分類方法,它的核心思想是“分類與判斷”,即根據已知類別的樣本 所提供的信息,總結出分類的規(guī)律性,并建立好判別公式和判別準則, 在此基礎上,新的樣本點將按照此準則判斷其所屬類型。例如,根據 一年甚至更長時間的每天的濕度差及壓差,我們可以建立一個用于判 別是否會下雨的模型,當我們獲取到某一天(建立模型以外的數(shù)據) 的濕度差及壓差后,使用已建立好的模型,就可以得出這一天是否會 下雨的判斷。根據判別的組數(shù)來區(qū)分,判別分析可以分為兩組判別和多組判別。接 下來,我們將學習三種常見的判別分析方法,分別是:距離判別Baye

2、s判別Fisher判別一、距離判別基本理論假設存在兩個總體和-,另有:為一個,,維的樣本值,計算得到該樣 本到兩個總體的距離和:丄一如果 大于,則認為樣本屬于總體,反之樣本則屬于總體;若 等于,則該樣本待判。這就是距離判別法的基本思想。在距離判別法中,最核心的問題在于距離的計算,般情況下我們最 常用的是歐式距離,但由于該方法在計算多個總體之間的距離時并不 考慮方差的影響,而馬氏距離不受指標量綱及指標間相關性的影響, 彌補了歐式距離在這方面的缺點,其計算公式如下:,J . . ,一:為總體之間的協(xié)方差矩陣二、二、距離判別的R實現(xiàn)(訓練樣本)首先我們導入數(shù)據#讀取SAS數(shù)據Iibrary(sas7

3、bdat)datal - read.sas7bdat(disl01.sas7bdat)#截取所需列數(shù)據,用于計算馬氏距離testdata - data12:5head(testdata,3)X1 X2 X3 X4-0.45 -0.41 1.09 0.45-0.56 -0.31 1.51 0.160.06 0.02 1.01 0.40#計算列均值colM - colMeans(testdata)colMX1X2X30.096304348 -0.006956522 2.033478261 #計算矩陣的協(xié)方差cov_test - cov(testdata)cov_testX1X2X3X1 0.068

4、183816 0.027767053 0.14996870X40.431739130X4X40.431739130X4-0.002566763X3 0.149968696 0.058782512 1.01309874 0.028607150X4 -0.002566763 0.001252367 0.02860715 0.033912464#樣本的馬氏距離計算distance - mahalanobis(testdata,colM,cov_test)head(distance,5)1 12.726465 11.224681 1.692702 1.347885 2.369820這樣,我們得到了距離

5、判別中最關鍵的馬氏距離值,在此基礎上就可以進行進一步的判別分析了。不過我們介紹一個R的第三方包WMDB,該包的wmd()函數(shù)可以簡化我們的距離判別過程,函數(shù)將輸出樣本的分類判別結果、錯判的樣本信息以及判別分析的準確度。library(WMDB)head(data1,3)A X1 X2 X3 X41 -0.45 -0.41 1.09 0.451 -0.56 -0.31 1.51 0.161 0.06 0.02 1.01 0.40#提取原始數(shù)據集的A列生成樣品的已知類別testdata_group - data1$A#轉換為因子變量,用于wmd()函數(shù)中testdata_group - as.fa

6、ctor(testdata_group)wmd(testdata,testdata_group)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2627blong 1 1 1 1 1 1 1 1 11111122111211112 2 228 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46blong 22222212221111121221 num of wrong judgement1 15 16 20 22 23 24 34 38 39 40 41

7、 42 441 samples divided to1 2 2 2 1 1 1 1 1 1 1 1 1 11 samples actually belongs to1 1 1 1 2 2 2 2 2 2 2 2 2 2Levels: 1 21 percent of right judgement1 0.7173913由分析結果可知,根據已知分類的訓練樣品建立的判別規(guī)則,重新應用于訓練樣品后,出現(xiàn)了 13個錯判樣品,擁有71.7%的準確度。三、距離判別的R實現(xiàn)(測試樣本)接著,當我們獲取到未分類的新樣本數(shù)據時,使用wmd()函數(shù),在訓練樣本的基礎上進行這些數(shù)據的距離判別#導入數(shù)據,-共10個樣本

8、data2 - read.sas7bdat(disldp01.sas7bdat)#截取所需列數(shù)據newtestdata - data21:4#進行判別分析wmd(testdata,testdata_group,TstX = newtestdata)1 2 3 4 5 6 7 8 9 10blong 1 1 1 1 1 1 2 2 2 1根據馬氏距離判別分析得到的結果,10個待判樣品中,第一類7個, 第二類3個。距離判別方法簡單實用,它只要求知道總體的數(shù)字特征,而不涉及總 體的分布,當總體均值和協(xié)方差未知時,就用樣本的均值和協(xié)方差矩 陣來估計,因此距離判別沒有考慮到每個總體出現(xiàn)的機會大小,即先

9、驗概率,沒有考慮到錯判的損失。因此,我們進一步學習貝葉斯判別 法。一、貝葉斯判別基本理論貝葉斯判別法的前提是假定我們已經對所要分析的數(shù)據有所了解(比 如數(shù)據服從什么分別,各個類別的先驗概率等),根據各個類別的先 驗概率求得新樣本屬于某類的后驗概率。該算法應用到經典的貝葉斯 公式,該公式為:假設有兩個總體:和,分別具有概率密度函數(shù);:和:,并且根 據以往的統(tǒng)計分析,兩個總體各自出現(xiàn)的先驗概率為寸和,當一個樣 本::發(fā)生時,求該樣本屬于某一類的概率,計算公式為:響切)=這樣,我們得到了該樣本屬于兩類總體的概率,分別為和門,屬于哪一類總體的概率值大,我們則將樣本劃分到該類中。二、貝葉斯判別的R實在R

10、中,我們使用klaR包中的NaiveBayes()函數(shù)實現(xiàn)貝葉斯判別分析,函數(shù)調用公式如下:NaiveBayes(formula, data, subset, na.action = na.pass)formula指定參與模型計算的變量,以公式形式給出,類似于y=x1+x2+x3na.action指定缺失值的處理方法,默認情況下不將缺失值納入模型計算,也 不會發(fā)生報錯信息,當設為“na.omit”時則會刪除含有缺失值的樣本#數(shù)據準備,使用R內置數(shù)據集iris#通過抽樣建立訓練樣本(70%)和測試樣本(30%)index - sample(2,size = nrow(iris),replace

11、= TRUE,prob = c(0.7,0.3)train_data test data test data -irisindex = 2,#載入所用包library(klaR)#構建貝葉斯模型Bayes_model - NaiveBayes(Species data = train_data)#進行預測Bayes_model_pre sum(diag(table(test_data$Species,Bayes_model_pre$class)+ / sum(table(test_data$Species,Bayes_model_pre$class)1 0.9361702三、Fisher判別基

12、本理論Fisher判別法的基本思想是“投影”,將組;維的數(shù)據向低維空間投影, 使其投影的組與組之間的方差盡可能的大,組內的方差盡可能的小。 因此,Fisher判別法的重點就是選擇適當?shù)摹巴队拜S”。判別函數(shù)為 接下來我們以兩類總體舉例。首先我們將樣本點投影到一維空間,旋轉坐標軸至總體單位盡可能分 開的方向,此時分類變量被簡化為一個,判別函數(shù).=;如果劃分 的效果不理想,可以考慮投影到二維空間(- :),以此類推。上圖為二 維空間的Fisher判別,從圖中可以看到,無論我們把總體 和 投影 到 還是 軸,都不能很好的把兩類總體區(qū)分出來。為此,我們需要尋找一條合適的投影線,使得兩類總體向該線投影后

13、的區(qū)分程度達到最大,線性判別函數(shù),., .很卩為該投影線的表 達形式(這里我們僅介紹Fisher判別的基本原理,不涉及參數(shù)的具體 推導和求解,這些都可用R程序求得)。OV . OV . 能使總體單位 盡可能分開的方向覓不能使總體 .盡可能分開 Xj四、Fisher判別的R實現(xiàn)在R中,我們使用MASS包中的lda()函數(shù)實現(xiàn)Fisher判別分析,函數(shù) 調用公式如下: lda(formula, data, subset, na.action)formula:指定參與模型計算的變量,以公式形式給出,類似于y=x1+x2+x3na.action:指定缺失值的處理方法,默認情況下,缺失值的存在使算法無法

14、運 行,當設置為“na.omit”時則會刪除含有缺失值的樣本#數(shù)據準備,使用R內置數(shù)據集iris#通過抽樣建立訓練樣本(70%)和測試樣本(30%)index - sample(2,size = nrow(iris),replace = TRUE, prob = c(0.7,0.3)train_data - irisindex = 1,test_data - irisindex = 2,#載入所用包library(MASS)#構建Fisher判別模型fisher_model - lda(Species., data = train_data)#進行預測fisher_model_pre sum(

15、diag(table(test_data$Species,fisher_model_pre$class)+ / sum(table(test_data$Species,fisher_model_pre$class)1 0.9811321五、Fisher判別進階在判別分析的實際應用中,對復雜的數(shù)據使用線性判別可能無法得到 理想的效果。為此,我們需要使用類似于二次判別函數(shù)的非線性分類 方法,將樣本點投影到若干種二次曲面中,實現(xiàn)理想的判別效果。在R中,非線性判別使用MASS包的qda()函數(shù)來實現(xiàn),調用公式為:qda(formula, data, subset, na.action)#使用lda()函數(shù)同樣的數(shù)據集fisher_model_2 - qda(Species., data = train_data)fisher_model_pre_2 table(test_data$Species,fisher_model_pre_2$class)setosa versicolor virginicasetosa2000versicolor0141virginica0018 sum(diag(table(test_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論