矩阵里剔除某些因子
有一个矩阵(有5个因子,9个对象(每一列为一个对象))X =
77.0058 71.2988 87.6185 81.3091 79.8293 74.6359 82.3153 68.1548 94.1657
0.1037 0.0995 0.0992 0.0916 0.0982 0.1006 0.1028 0.0873 0.0837
0.2056 0.1970 0.1994 0.1846 0.1966 0.2000 0.1989 0.1772 0.1688
0.2423 0.2329 0.2333 0.2161 0.2312 0.2336 0.2357 0.2089 0.2014
0.1029 0.0982 0.0973 0.0887 0.0975 0.0971 0.1004 0.0849 0.0788
在matlab里算出标准差STX、平均值MX 和方差C,
STX =
8.0473
0.0070
0.0123
0.0139
0.0080
MX =
79.5926
0.0963
0.1920
0.2261
0.0940
C =
64.7596
0.0000
0.0002
0.0002
0.0001
经过标准化,得出矩阵SX
SX =
-0.3215 -1.0306 0.9973 0.2133 0.0294 -0.6159 0.3383 -1.4213 1.8109
1.0525 0.4548 0.4073 -0.6664 0.2668 0.6155 0.9190 -1.2685 -1.7810
1.1046 0.4075 0.6000 -0.6029 0.3756 0.6491 0.5596 -1.2073 -1.8861
1.1638 0.4856 0.5137 -0.7270 0.3660 0.5362 0.6879 -1.2449 -1.7813
1.1173 0.5258 0.4102 -0.6528 0.4433 0.3913 0.7991 -1.1370 -1.8973
进而算出相关矩阵COR
COR =
1.0000
-0.2532
-0.2755
-0.2576
-0.3011
-0.2532
1.0000
0.9873
0.9938
0.9915
-0.2755
0.9873
1.0000
0.9954
0.9884
-0.2576
0.9938
0.9954
1.0000
0.9947
-0.3011
0.9915
0.9884
0.9947
1.0000
现在我想进行因子剔除,根据两个原则1.相关矩阵COR 里R>=0.9
2.第i因子的方差Si >第j因子的方差Sj,进而剔除j因子。
请各路高手帮忙看看我的代码有没有什么不对的地方,同时我要进行剔除因子的话,应该如何继续写代码?
我的一部分代码为
X=
STX=std(X)
MX=mean(X)
C=var(X)
=size(X);
for i=1:m
SX(:,i)=(X(:,i)-MX(i))./STX(i)
end
COR=corr(SX)
[ 本帖最后由 friendchj 于 2009-7-14 17:55 编辑 ]
回复 楼主 lanxiaod 的帖子
我也是刚入门,但是我觉的你这个就用for,在for里面进行比较不就行了吗?删除的话就设那个因子为空就行了吧回复 沙发 huali 的帖子
我现在不懂得怎么在for里表述那两个剔除原则?你知道吗?
页:
[1]