本篇是第十三章,內容是因子分析。 這篇博客的完整內容包含各種數學表達。能夠見我CSDN和hexo搭的我的博客。git
CSDN博客github
hexo的我的博客數據結構
因子分析是一種數據簡化的技術。它經過研究衆多變量之間的內部依賴關係,探求觀測數據中的基本結構,並用少數幾個假想變量來表示其基本的數據結構。這幾個假想變量可以反映原來衆多變量的主要信息。原始的變量是可觀測的顯在變量,而假想變量是不可觀測的潛在變量,稱爲因子。 即一種用來在衆多變量中辨別、分析和歸結出變量間的相互關係並用簡單的變量(因子)來描述這種關係的數據分析方法。 尋求基本結構hexo
- 經過因子分析,找出幾個較少的有實際意義的因子,反映出原來數據的基本結構。
- 一般找出的這組觀察不到的因子歸納了原始的變量的大多數信息。
數據簡化函數
- 強相關問題會對分析帶來困難。
- 經過因子分析,能夠用所找出的少數幾個因子代替原來的變量作迴歸分析、聚類分析、判別分析等。
因子分析的用途.net
- 產生新的、更少的變量以便爲後續的迴歸和其餘分析作基礎。
- 識別概念或產品的基本感知和特性。
- 改善市場研究領域多元測量的結構與方法。
數學模型 因子分析模型的性質設計
一、原始變量X的協方差矩陣的分解 A是因子模型的係數 D的主對角線上的元素值越小,則公共因子共享的成分越多。 二、模型不受計量單位的影響。 三、因子載荷不是唯一的:設T爲一個p×p的正交矩陣,令A*=AT, F*=T'F也是一個知足因子模型條件的因子載荷。code
因子載荷矩陣中的統計特徵blog
- 因子載荷是第i個變量與第j個公共因子的相關係數。
- 變量的共同度是因子載荷矩陣的第i行的元素的平方和。 全部的公共因子和特殊因子對變量的貢獻爲1。
- 因子載荷矩陣中各列元素的平方和對全部的的方差貢獻和。衡量的相對重要性。
- 主成分分析法 上式給出的Σ表達式是精確的,然而,它其實是毫無價值的,由於咱們的目的是尋求用少數幾個公共因子解釋,故略去後面的p-m項的貢獻。 上式有一個假定:模型中的特殊因子是不重要的,於是從Σ的分解中忽略了特殊因子的方差。 肯定因子個數(特徵根大於1所對應的特徵向量;碎石原則:把特徵根從大到小排列,把特徵根減少速度變緩的特徵根都刪掉)。
- 主因子法 主因子方法是對主成分方法的修正,假定咱們首先對變量進行標準化變換。則 在實際的應用中,個性方差矩陣通常都是未知的,能夠經過一組樣原本估計。估計的方法有以下多種:
- 極大似然估計法 若是假定公共因子F和特殊因子服從正態分佈,那麼能夠獲得因子載荷和特殊因子方差的極大似然估計。用數值極大化的方法能夠獲得極大似然估計。
旋轉因子的目的 因子分析的目的不只僅是要找出公共因子以及對變量進行分組,更重要的是要知道每一個公共因子的意義,以便進行進一步的分析。若是每一個公共因子的含義不清,則不便於進行實際背景的解釋。 初始因子的綜合性太強,難以找出因子的實際意義。因爲因子載荷陣是不惟一的,因此能夠對因子載荷陣進行旋轉,使因子載荷陣的結構簡化,使其每列或行的元素平方值向0和1兩極分化。 旋轉方法get
- 變換後各變量的共同度不會發生變化。
- 變換後各因子的貢獻會發生變化。
三種主要的正交旋轉法
- 方差最大法 方差最大法從簡化因子載荷矩陣的每一列出發,使和每一個因子有關的載荷的平方的方差最大。當只有少數幾個變量在某個因子上有較高的載荷時,對因子的解釋最簡單。 方差最大的直觀意義是但願經過因子旋轉後,使每一個因子上的載荷儘可能拉開距離,一部分的載荷趨於±1,另外一部分趨於0。
- 四次方最大法 四次方最大旋轉是從簡化載荷矩陣的行出發,經過旋轉初始因子,使每一個變量只在一個因子上有較高的載荷,而在其它的因子上儘量低的載荷。 若是每一個變量只在一個因子上有非零的載荷,這時的因子解釋是最簡單的。四次方最大法經過使因子載荷矩陣中每一行的因子載荷平方的方差達到最大。
- 等量最大法 等量最大法把四次方最大法和方差最大法結合起來求Q和V的加權平均最大。
當解決了用一組公共因子的線性組合來表示一組觀測變量後,有時咱們須要使用這些因子作其餘的研究。好比把獲得的因子做爲自變量來作迴歸分析,對樣本進行分類或評價,這就須要咱們對公共因子進行測度,即給出公共因子的值。 因子得分 因子分析的數學模型: 原變量被表示爲公共因子的線性組合,當載荷矩陣旋轉以後,公共因子能夠作出解釋,一般的狀況下,咱們還想反過來把公共因子表示爲原變量的線性組合。 因子得分函數。 可見,要求得每一個因子的得分,必須求得分函數的係數,而因爲p>m,因此不能獲得精確的得分,只能經過估計。 巴特萊特因子得分(加權最小二乘法) 迴歸方法 注:共須要解m次才能解出全部的得分函數的係數。
- 選擇分析的變量 用定性分析和定量分析的方法選擇變量,因子分析的前提條件是觀測變量間有較強的相關性,由於若是變量之間無相關性或相關性較小的話,他們不會有共享因子,因此原始變量間應該有較強的相關性。
- 計算所選原始變量的相關係數矩陣 相關係數矩陣描述了原始變量之間的相關關係。能夠幫助判斷原始變量之間是否存在相關關係,這對因子分析是很是重要的,由於若是所選變量之間無關係,作因子分析是不恰當的。而且相關係數矩陣是估計因子結構的基礎。
- 提取公共因子 這一步要肯定因子求解的方法和因子的個數。須要根據研究者的設計方案或有關的經驗或知識事先肯定。因子個數的肯定能夠根據因子方差的大小,只取方差大於1(或特徵值大於1)的那些因子,由於方差小於1的因子其貢獻可能很小。或者按照因子的累計方差貢獻率來肯定,通常認爲要達到60%才能符合要求。
- 因子旋轉 經過座標變換使每一個原始變量在儘量少的因子之間有密切的關係,這樣因子的實際意義更容易解釋,也更容易爲每一個潛在因子賦予有實際意義的名字。
- 計算因子得分 求出各樣本的因子得分,有了因子得分值,則能夠在許多分析中使用這些因子,例如以因子的得分作聚類分析的變量,作迴歸分析中的迴歸因子。
注
- 因子分析是十分主觀的,在許多出版的資料中,因子分析模型都用少數可命名因子提供了合理解釋。實際上,絕大多數因子分析並無產生如此明確的結果。不幸的是,評價因子分析質量的法則還沒有很好量化,質量問題只好依賴一個「哇!」準則若是在仔細檢查因子分析的時候,研究人員可以喊出「哇,我明白這些因子」的時候,就可認爲是成功地運用了因子分析方法。
主成分分析與因子分析 主成分分析與因子分析有所不一樣,主成分分析僅僅是變量變換。
- 主成分分析:原始變量的線性組合表示新的綜合變量,即主成分。
- 因子分析:潛在的假想變量和隨機影響變量的線性組合表示原始變量。因子模型除了公共因子外還有特殊因子。公共因子只解釋了原來變量的部分方差,而所有主成分解釋了原來變量的所有方差。
主成分和公共因子的位置不一樣。因子分析也有因子載荷( factor loading)的概念,表明了因子和原先變量的相關係數。可是在因子分析公式中的因子載荷位置和主成分分析不一樣。 在數學模型上,因子分析和主成分分析也有很多區別。並且因子分析的計算也複雜得多。根據因子分析模型的特色,它還多一道程序:因子旋轉( factor rotation);這個步驟可使結果更好。 旋轉後的公共因子通常沒有主成分那麼綜合,公共因子每每能夠找到實際意義,而主成分常找不到實際的含義。 能夠看出,因子分析和主成分分析都依賴於原始變量,也只能反映原始變量的信息。因此原始變量的選擇很重要。在獲得分析的結果時,並不必定會都獲得如咱們例子那樣清楚的結果。這與問題的性質,選取的原始變量以及數據的質量等都有關係。若是原始變量本質上獨立,就很難把不少獨立變量用少數綜合的變量歸納,降維就可能失敗。數據越相關,降維效果就越好。可用以下方法進行變量間的相關性檢驗:
- KMO樣本測度: KMO在0.9以上,很是適合; 0.8-0.9,很適合; 0.7-0.8,適合; 0.6-0.7,不太適合; 0.5-0.6;很勉強; 0.5如下,不適合;
- 巴特萊特球體檢驗: H0:相關係數矩陣R爲單位陣I。拒絕時H0可做因子分析
R語言作因子分析這裏主要介紹三個函數,一個是自帶的factanal函數。
factanal(x,factors,data=NULL,covmat=NUL,n.obs=NA,subset,na.action,start=NULL,score=c("none","regression","Bartlett"),rotation="varimax",control=NULL,…)
x是公式或者用於因子分析的數據,能夠是矩陣(每一行爲一個樣本)或數據框;factors表示要生成的因子個數;data指定數據集,當x爲公式的時候使用;covmat是樣本的協方差矩陣或者相關係數矩陣,使用這個參數的時候x能夠忽略;scores表示計算因子得分的方法;rotation表示因子旋轉的方法,默認爲"varimax",最大方差旋轉。這裏近介紹幾個經常使用的幾個參數,其餘參數說明可查詢R語言官方幫助。另外,這個函數事實上僅支持用極大似然估計方法作因子分析。 第二個函數就是自編函數實現的主成分分析方法作因子分析(具體函數代碼後面給出)。
factor.analysis(x,m)
x爲相關係數矩陣,m爲因子個數。 第三個函數是psych包裏的fa函數。
fa(r,nfactors=,n.obs=,rotate=,scores=,fm)
r是相關係數矩陣或原始數據矩陣;nfactors設定提取的因子數(默認爲1);n.obs是觀測數(輸入相關係數矩陣時須要填寫);rotate設定放置的方法(默認互變異數最小法);scores設定是否計算因子得分(默認不計算);fm設定因子化方法(默認極小殘差法)。 用上一章提供的數據再進行因子分析。比較不一樣函數結果的差別。 基於factnal函數,3個因子。
基於自編函數,3個因子。
基於fa函數,3個因子。