跳轉到內容

R語言中的資料探勘演算法/包/FactoMineR

來自Wikibooks,開放世界中的開放書籍

FactoMineR 是一個專門用於多元資料分析的 R 包。該包的主要特點是可以考慮不同型別的變數(定量或分類)、資料上的不同型別結構(變數上的分割槽、變數上的層次結構、個體上的分割槽)以及補充資訊(補充個體和變數)。此外,不同探索性資料分析產生的維度可以透過定量和/或分類變數自動描述。還提供了許多具有各種選項的圖形。最後,在Rcmdr環境中實現了圖形使用者介面,以提供使用者友好的包。

該包中實現的方法在概念上與其主要目標相似,例如,透過降低資料集的維度來合併和簡化資料。這些方法的使用取決於可用資料以及變數是定量(眾多)還是定性(分類或名義)。

實現了多種方法,包括最經典的方法(PCA、對應分析、多對應分析、多因子分析)以及一些高階方法(層次多因子分析、混合資料分析、雙重多因子分析)。

對於經典方法,我們有以下情況使用解決方案

  • 當個體由定量變數描述時,使用主成分分析 (PCA);
  • ˆ 當個體由兩個分類變數描述導致列聯表時,使用對應分析 (CA);
  • ˆ 當個體由分類變數描述時,使用多對應分析 (MCA)。

對於高階方法

  • MFA(多因子分析),其中同一組的變數可以是數值型或分型別。
  • HMFA(層次多因子分析),MFA 的擴充套件,其中變數根據層次結構進行組織。
  • GPA(廣義普羅克拉斯提斯分析),其中變數必須是連續的。


令 X 為感興趣的資料表。為了降低維度,透過正交線性變換將 X 變換到新的座標系。令 Fs(分別為 Gs)表示行(分別為列)在等級為 s 的軸上的座標向量。這兩個向量透過所謂的“轉移公式”相關聯。在 PCA 的情況下,它們可以寫成

其中 Fs (i) 表示個體 i 在軸 s 上的座標,Gs (k) 表示變數 k 在軸 s 上的座標,λs 是與軸 s 相關的特徵值,mk 是與變數 k 相關的權重,pi 是與個體 i 相關的權重,xik 是資料表的一般項(行 i,列 k)。

轉移公式奠定了我們的觀點基礎,並因此將圖形輸出置於我們實踐的根源。從這些公式來看,分析個體和變數的散點圖至關重要:個體與取高值的變數位於同一側,與取低值的變數位於相對側。

補充元素

[編輯 | 編輯原始碼]

轉移公式的另一個重要特徵是,它們可以應用於補充個體和/或變數,以便在散點圖上新增補充資訊,以便更好地理解資料。在 PCA 框架中,令 i' 為一個新個體,它在等級為 s 的軸上的座標可以很容易地得到如下

同樣,當前者為定量時,計算補充變數的座標也很容易;在這種情況下,補充變數位於變數的散點圖中。當變數為分類時,其模態透過每個模態的“平均個體”的方式表示。對於每個模態,與每個“平均個體”相關的數值是具有該模態的個體上每個變數的平均值;在這種情況下,補充變數位於個體的散點圖中。

在您的 R 會話中編寫以下程式碼行載入 FactoMineR

    library(FactoMineR)

要在您的 R 會話中下載 FactoMineR 的圖形介面,請編寫以下程式碼行(您必須連線到網際網路)

    source("http://factominer.free.fr/install-facto.r")

載入和使用

[編輯 | 編輯原始碼]

透過鍵入以下程式碼行在每個新的 R 會話中載入 FactoMineR

    library(FactoMineR)

或者透過鍵入以下程式碼行在每個新的 R 會話中載入 FactoMineR 及其 GUI

    library(Rcmdr)

函式參考

[編輯 | 編輯原始碼]

所有50個FactoMineR函式的完整實現參考,包括描述、用法、引數和值,可以在這裡找到。

視覺化

[編輯 | 編輯原始碼]

使用plot函式,可以繪製圖形和結果。用法

    R> plot(<method>,<what variable to color individuals from>)

使用FactoMineR的圖形介面,可以輕鬆直觀地執行任務。例如,我們有PCA函式的介面:主視窗允許選擇活動變數(預設情況下所有變數都處於活動狀態,可以執行PCA)。幾個按鈕允許選擇補充定量或分類變數、補充個體、要顯示的輸出或要繪製的圖形。

例如,這裡我們使用一個來自1974年關於法國女性工作的問卷調查的資料集。你可以在這裡載入資料集。

資料介紹

[編輯 | 編輯原始碼]

1724名女性回答了關於女性工作的一些問題,其中包括

   * What do you think the perfect family is ?
         o Both husband and wife work
         o Husband works more than wife
         o Only husband works
   * Which activity is the best for a mother when children go to school?
         o Stay at home
         o Part-time work
         o Full-time work
   * What do you think of the following sentence: women who do not work feel cut off from the world?
         o Totally agree
         o Quite agree
         o Quite disagree
         o Totally disagree

資料集是兩個列聯表,將第一個問題的答案與另外兩個問題交叉。對於每個交叉點,給出的值是給出這兩個答案的女性人數。

要載入軟體包和資料集,請編寫以下程式碼行

    library(FactoMineR) 
    women_work=read.table("http://factominer.free.fr/classical-methods/datasets/women_work.txt", header=TRUE, row.names=1, sep="\t")

CA的目標與PCA的目標非常相似:獲得行和列的型別,並研究這兩種型別之間的聯絡。但是,行或列之間相似性的概念是不同的。在這裡,兩行或兩列之間的相似性是完全對稱的。如果兩行(或兩列)以相同的方式與列(或行)關聯,則它們將彼此靠近。

我們正在尋找與總體分佈最不同的行(或列)。那些看起來最相似或最不相似。每一組行(或列)的特徵在於它過度或不足地關聯的列(或行)。

對應分析(CA)

[編輯 | 編輯原始碼]

我們將使用前三列(對應於第二個問題的答案)作為活動變數,並將最後四列(對應於第三個問題)作為補充變數。

僅活動行和列

要分別檢視行和列的散點圖,請鍵入

    res.ca.rows = CA(women_work[,1:3], invisible="col")
    res.ca.col = CA(women_work[,1:3], invisible="row") 
    #women_work: the data set used
    #invisible: elements we do not want to be plotted

在列的散點圖上,我們可以看到第一軸對立“在家待業”和“全職工作”,這意味著它對立著兩種女性的特徵。回答“在家待業”的女性比總體更經常回答“只有丈夫工作”,並且比總體更少經常回答“丈夫和妻子都工作”。同樣,回答“全職工作”的女性比總體更少經常回答“只有丈夫工作”,並且比總體更經常回答“丈夫和妻子都工作”。第一軸根據女性工作意願程度對第二個問題的類別進行排序。

我們可以對行散點圖的第一軸進行相同的解釋。這些類別按女性工作意願程度從低到高排序(從“只有丈夫工作”到“丈夫和妻子都工作”)。

要獲得行和列的表示,請鍵入

    res.ca = CA(women_work[,1:3]) 
    #women_work: the data set used

“在家待業”與“只有丈夫工作”高度相關,與其他兩個類別關聯較少。

“丈夫和妻子都工作”與“全職工作”相關,與“在家待業”相反。

新增補充列

我們現在將對應於第三個問題的列作為補充變數新增。鍵入

    res.ca = CA(women_work, col.sup=4:ncol(women_work)) 
    #women_work: the data set used
    #col.sup: vector of the indexes of the supplementary columns

“完全同意”和“相當同意”(對於“不工作的女性會感到與世隔絕”)靠近支援女性工作的類別。“相當不同意”和“完全不同意”靠近反對女性工作的類別。

參考文獻

[編輯 | 編輯原始碼]
  1. FactoMineR官方網站 [1]
  2. FactoMineR:用於多元分析的R軟體包 [2]
  3. 綜合R檔案網路 [3]
華夏公益教科書