2011a-2模板** p10
因子分析的主要步驟如下:
資料標準化
由於不同重金屬元素的量綱可能不同, 因此為了消除量綱對資料的影響, 對所有的重金屬採用下面的公式對資料進行歸一化處理:
其中2.計算協方差矩陣s
因為已經對資料進行歸一化處理,協方差的大小在一定程度上表示了個元素之間的關係,記每個區有n個取樣點,則協方差表示式如下:
3. 計算初等載荷矩陣 a
計算矩陣s的特徵值
4. 主因子個數確定及因子旋轉
根據初等載荷矩陣,計算各個主因子的貢獻率。同時為了更好的解釋因子的現實意義,利用具有 kaiser 標準化的正交旋轉法,對提取的因子載荷矩陣進行旋轉,得到矩陣b,因子分析模型:
其中,
load data.txt %把原始資料儲存在純文字檔案data.txt中
data=reshape(data,[16,5]);
m=size(data,1);
x=data(:,5);data=data(:,1:4),num=2; %num 代表的因子的個數
data=zscore(data); %資料標準化
r=cov(data);
[vec,val,con]=pcacov(r); %進行主成分分析的相關計算
val,con
f1=repmat(sign(sum(vec)),size(vec,1),1);
vec=vec.*f1; %特徵向量正負號轉換
f2=repmat(sqrt(val)',size(vec,1),1);
a=vec.*f2%載荷矩陣
%求得載荷矩陣,該載荷矩陣是沒有進行旋轉變換的因子
%如果指標變數多,選取的主因子個數少,可以直接使用factoran進行因子
%分析
%本題中4個指標變數,選取2個主因子,factoran無法實現
%下面在因子旋轉中,由於num=2,所以只對前面兩個進行旋轉,換麵的保持布
%標。
[b,t]=rotatefactors(a(:,1:num),'method', 'varimax') %旋轉變換
bz=[b,a(:,num+1:end)] ;%旋轉後的載荷矩陣
gx=sum(bz.^2); %計算因子貢獻
gxv=gx/sum(gx); %計算因子貢獻率
dfxsh=inv(r)*b; %計算得分函式的係數
df=data*dfxsh ;%計算各個因子的得分
%後面是評價模型
zdf=df*gxv(1:num)'/sum(gxv(1:num)); %對各因子的得分進行
加權求和
[szdf,ind]=sort(zdf,'descend') %對企業進行排名
xianshi=[df(ind,:)';zdf(ind)';ind'] %顯示計算結果
[x_zdf_coef,p]=corrcoef([zdf,x]) %計算相關係數
[d1,d1int,d2,d2int,stats]=regress(zdf,[ones(m,1),x]) %回歸分析計算
函式說明reshape:
close all; clear; clc;
a = [1 2 3; 4 5 6; 7 8 9; 10 11 12] % 4 by 3
b = reshape(a, 2, 6) % 2 by 6
% c = reshape(a, 2, 4) % error
% d = reshape(a, 2, 10) % error
e = reshape(a, 2, 3, 2) % 2 by 3 by 2
注意:reshape
函式對原陣列的抽取是按照列抽取的(對原陣列按列抽取,抽取的元素填充為新陣列的列)
執行結果:
因子分析 因子得分
因子分析的最後一步了,悲傷 在因子分析中,人們一般關注的重點是估計因子模型的引數 載荷矩陣 有時公共因子的估計 即所謂的因子得分 也是需要的,因子得分可以用於模型診斷,也可以作為下一步分析的原始資料。需要指出的是,因子的得分計算並不是通常意義下的引數估計,他是對不可觀測的隨機變數 取值的估計 通常可...
因子分析原理
因子分析是根據相關性大小把原始變數進行分組,使得同組內的變數之間相關性較高,而不同組的變數間的相關性則較低。每組變數代表乙個基本結構,並用乙個不可觀測的綜合變數表示,這個基本結構就稱為公共因子。先介紹一下因子分析的數學模型,如下 因子模型 正交因子模型 1 確定待分析的原有若干變數是否適合進行因子分...
sklearn因子分析(python)
因子分析 factor analysis 是指研究從變數群中提取共性因子的統計技術,這裡的共性因子指的是不同變數之間內在的隱藏因子。例如,乙個學生的英語 資料 語文成績都很好,那麼潛在的共性因子可能是智力水平高。因此,因子分析的過程其實是尋找共性因子和個性因子並得到最優解釋的過程。因子分析有兩個核心...