主成分估计采用的方法是将原来的回归自变量变换到另一组变量,即主成分,选择其中一部分重要的主成分作为新的自变量(此时丢弃了一部分,影响不大的自变量,这实际达到了降维的目的),然后用最小二乘法对选取主成分后的模型参数进行估计,最后再变换回原来的模型求出参数的估计。
例:有一组水泥热量值数据:
降维:(判断标准很多,但有些是相关性很高的,在相关性高的标准中选一即可,即为降维)
Spss软件 分析-降维-因子分析得到初方差解释表,特征值在此处;
成分矩阵表中,成分矩阵中的值,除以该成分的特征值的平方根,才得到该特征值的特征向量(双击可复制表,到主表中。转换-计算变量)
将标准化后数据和特征向量复制至excel表格中,matlab分别读取,记做X0和X1,则主成分表X2即为X0*X1。在工作区打开X2,复制至spss中。
线性回归方程:F即为主成分表X2系数矩阵,y为因变量。在分析-回归-线性中。
再把三个F的表达式带入Y中,形成y与x的主成分回归方程。
此外,还可利用matlab进行计算
syms x1 x2 x3 x4
XX=[x1 x2 x3 x4];
tzxl=xlsread('特征向量.xlsx','A1:C4');
yssj=xlsread('原始数据.xlsx','A1:D13');
qw=[mean(yssj(:,1)) mean(yssj(:,2)) mean(yssj(:,3)) mean(yssj(:,4))];
bzc=[std(yssj(:,1)) std(yssj(:,2)) std(yssj(:,3)) std(yssj(:,4))];
F1=(XX-qw)./bzc*tzxl(:,1);
F2=(XX-qw)./bzc*tzxl(:,2);
F3=(XX-qw)./bzc*tzxl(:,3);
Y=95.423+F1*9.884+0.125*F2+4.56*F3;
digits(5)
vpa(Y)
matlab控制运算精度用的是digits和vpa这两个函数。
digits用于规定运算精度,比如:
digits(20);
这个语句就规定了运算精度是20位有效数字。但并不是规定了就可以使用,因为实际编程中,我们可能有些运算需要控制精度,而有些不需要控制。vpa就用于解决这个问题,凡是用需要控制精度的,我们都对运算表达式使用vpa函数。例如:
digits(5);
a=vpa(sqrt(2));
这样a的值就是1.4142,而不是准确的1.4142135623730950488016887242097…
matlab运行结果