R語言中的資料探勘演算法/包/FactoMineR
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的目標非常相似:獲得行和列的型別,並研究這兩種型別之間的聯絡。但是,行或列之間相似性的概念是不同的。在這裡,兩行或兩列之間的相似性是完全對稱的。如果兩行(或兩列)以相同的方式與列(或行)關聯,則它們將彼此靠近。
我們正在尋找與總體分佈最不同的行(或列)。那些看起來最相似或最不相似。每一組行(或列)的特徵在於它過度或不足地關聯的列(或行)。
我們將使用前三列(對應於第二個問題的答案)作為活動變數,並將最後四列(對應於第三個問題)作為補充變數。
- 僅活動行和列
要分別檢視行和列的散點圖,請鍵入
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
“完全同意”和“相當同意”(對於“不工作的女性會感到與世隔絕”)靠近支援女性工作的類別。“相當不同意”和“完全不同意”靠近反對女性工作的類別。