應用多元統計分析(9)第八章 因子分析

2021-10-16 13:13:18 字數 3018 閱讀 7986

import numpy as np

import pandas as pd

from sklearn.preprocessing import standardscaler

# 主因子法

dat = pd.read_excel(

"f:\\基礎數學課\\應用多元統計分析\\exec6.5.xlsx"

,index_col=0)

r = dat.corr(

)ri = np.linalg.inv(r)

h0sq =1-

1/np.diag(ri)

phi0 = np.diag(

1- h0sq)

phi0=pd.dataframe(phi0,index=r.index,columns=r.index)

r_star = r-phi0

l,u = np.linalg.eig(r_star)

# 與課本一致u[:

,:2]

l[:2]

a0 = u[:,

:2].dot(np.diag(l[:2

]**0.5)

)h1sq = np.

sum(a0**

2,axis=1)

phi1 = np.diag(

1-h1sq)

## 判斷最後有沒有達到穩定

sum(np.diag(phi1-phi0)**2

)**0.5phi1=pd.dataframe(phi1,index=r.index,columns=r.index)

r_star1 = r-phi1

l,u = np.linalg.eig(r_star1)

a1 = u[:,

:4].dot(np.diag(l[:4

]**0.5)

)h2sq = np.

sum(a1**

2,axis=1)

phi2 = np.diag(

1-h2sq)

sum(np.diag(phi2-phi1)**2

)**0.5phi2=pd.dataframe(phi2,index=r.index,columns=r.index)

r_star2 = r-phi2

l,u = np.linalg.eig(r_star2)

a2 = u[:,

:4].dot(np.diag(l[:4

]**0.5)

)h3sq = np.

sum(a2**

2,axis=1)

phi3 = np.diag(

1-h3sq)

sum(np.diag(phi3-phi2)**2

)**0.5##

deffa

(r,m,e=

0.001

,n=1000):

h0sq =1-

1/np.diag(np.linalg.inv(r)

) phi0 = np.diag(

1- h0sq)

l,u = np.linalg.eig(r-phi0)

# 與課本一致 取兩個

a0 = u[:,

:2].dot(np.diag(l[:2

]**0.5)

)for i in

range

(n):

lambda x:

sum(x**2)

,1,a0)

phi1 = np.diag(

1-h1sq)

## 判斷最後有沒有達到穩定

e1 =

sum(np.diag(phi1-phi0)**2

)**0.5if e1 < e :

break

else

: l,u = np.linalg.eig(r-phi1)

phi0 = phi1

a0 = u[:,

:2].dot(np.diag(l[:2

]**0.5)

)return

(a0,e1,i)

a = fa(r,2)

[0]lambda x : x/

(sum

(x**2)

)**0.05,1

,a)u = a1[:,

0]**2

- a1[:,

1]**2

v =2

*a1[:,

0]*a1[:,

1]a =sum

(u)b =

sum(v)

c =sum

(u**

2-v**2)

d =2

*sum

(u*v)

p =8

t**alue =

(d-2

*a*b/p)

/(c-

(a**

2-b**

2/p)

)np.arctan(t**alue)

phi = np.arctan(t**alue)

+np.pi/

4t = np.array(

[[np.cos(phi)

,np.sin(phi)],

[-np.sin(phi)

,np.cos(phi)]]

)b = a.dot(t)

## thompson factor score

# 主成分法

dat = pd.read_excel(

"f:\\基礎數學課\\應用多元統計分析\\exec6.5.xlsx"

,index_col=0)

r = dat.corr(

)l,u = np.linalg.eig(r)

a = u[:,

:2].dot(np.diag(l[:2

]**0.5)

)c = u[:,

2:].dot(np.diag(l[2:

]**0.5)

)pd.dataframe(c.dot(c.t)

)#是否近似乙個對角陣

讀《白話統計》筆記 第八章

引數估計,主要有兩種方式 區間估計 8.1 點估計 計算樣本的均值作為總體的均值。根據中心極限定理可知,多次重複抽樣得出的統計量圍繞總體引數波動,多個統計量的均值應該等於總體引數。所以,樣本統計量理論上是總體引數的無偏估計 8.2 最小二乘估計 最小二乘估計 least square estimat...

應用多元統計分析(1)Python基礎

import math dir math 檢視函式dir 建立物件 list 列表 tuple 元組 dict 字典 set example a1 1,4,9 type a1 a2 2,5,8 type a2 a3 type a3 注 tuple中的元素不能更改,list中的元素可以更改。方法 是特...

第八章 座標軸的高階應用

1 向畫布當中的任意位置新增任意數量的座標軸 1 import matplotlib.pyplot as plt 2import numpy as np34 左 下分別表示座標軸的左側邊緣和底部邊緣距離畫布的距離5 寬 高分別表示座標軸的寬度和高度 6 plt.axes 0.05,0.7,3,3 左...