精华内容
下载资源
问答
  • 主成分回归

    2015-11-23 17:27:22
    主成分回归分析代码,主成分回归相比于传统的最小二乘回归,去除了自变量之间的耦合干扰,提高了回归的逼近能力
  • mathematica主成分回归例子
  • 主成分回归笔记

    千次阅读 2020-05-20 07:35:26
    主成分回归(PCR)是多元线性回归(MLR)的替代方法,相对于MLR具有许多优势。 1. 什么是主成分回归,为什么要使用它? 主成分回归最初是由肯德尔(Kendall,1957)提出的。前提是使用对回归变量执行的主成分分析...

    关于主成分分析,请参考我之前的文章。

    主成分回归(PCR)是多元线性回归(MLR)的替代方法,相对于MLR具有许多优势。

    1. 什么是主成分回归,为什么要使用它?
    主成分回归最初是由肯德尔(Kendall,1957)提出的。前提是使用对回归变量执行的主成分分析结果,并将输出用作新的回归变量。这样,自变量是正交的,并确保计算更容易,更稳定(Jolliffe(1982))。

    线性回归中的PCA已用于实现两个基本目标。第一个是在预测变量数量过多的数据集上执行的。它已成为减少维度和偏最小二乘回归的一种方法。另外,为了减小尺寸,还有一些方法,例如岭回归,套索和使用罚分法的剩余回归模型(H. Lee,Park和Lee(2015))。 PCR的第二个目标是消除变量之间的共线性。由于每个随后的主要成分都是正交的,因此已使用PCR来防止因回归中假设的独立变量之间的依赖性而引起的错误(Hadi和Ling(1998))。

    在选择合适的主要成分数量时,研究人员并非一致。一种方法是选择最佳主成分,就好像它们是常规变量一样。另一则指出,最好选择能够确定最大方差的第一个确定数量的PC(Hadi和Ling(1998))。这导致拒绝一些解释低方差的主要成分。然而,这种方法受到了批评,因为那些被拒绝的PC实际上可能是与因变量相关的PC(H。Lee,Park和Lee(2015))

    PCR的优势:

    因为PC,W1,…,Wm是正交的,多重共线性问题完全消失了,无论实际使用多少个PC,回归方程将始终包含X中的所有变量因为每个PC是X中变量的线性组合。由Z’Z的特征向量形成)。
    由于使用了正交PC,PCR可能会提高回归估计的数值准确性。

    PCR步骤:

    步骤1:执行PCA来创建PC作为我们的新输入.
    步骤2:使用这些PC作为输入功能来训练我们的线性回归模型。
    步骤3:现在,我们将这些PC转换回原始输入功能,以便对实际数据集进行预测。

    PCR基本上是使用PCA,然后在这些新PC上执行线性回归。 因此,PCR和PCA所使用的方法没有显着差异,它们实质上包含相同的概念。

    按照通常的表示法,假设我们的回归方程可以用矩阵形式写成
    Y = XB + e
    其中Y是因变量,X代表自变量,B是要回归的系数估计,e代表误差或残差。

    在普通最小二乘法中,回归系数使用以下公式估算
    B =(X’X)^− 1^ X’Y
    由于变量是标准化的,因此X’X = R,其中R是独立变量的相关矩阵变量。

    为了执行主成分(PC)回归,我们将自变量转换为其主成分。数学上,我们写
    X’X = PDP’= Z’Z

    其中D是X’X的特征值的对角矩阵,P是X’X的特征向量矩阵,Z是数据由主要成分组成的矩阵(结构与X相似)。 P是正交的,所以P’P =I。

    我们已经创建了新变量Z作为原始变量X的加权平均值。这对我们来说并不是什么新鲜事物,因为在执行回归计算之前,我们习惯对数据值使用对数和平方根之类的转换。由于这些新变量是主要成分,因此它们彼此之间的相关性均为零。如果我们以变量X1,X2和X3开头,则将以Z1,Z2和Z3结尾。

    为了消除多重共线性的数据,我们省略了与小特征值相关的分量(z)。通常,将仅获得一个或两个相对较小的特征值。例如,如果在一个具有三个自变量的问题上仅检测到一个小的特征值,我们将省略Z3(第三主成分)。

    当我们在Z1和Z2上回归Y时,多重共线性不再是问题。然后,我们可以将结果转换回X尺度,以获得B的估计值。这些估计值将带有偏差,但我们希望这种偏差的大小可以通过方差的减少而得到更多补偿。也就是说,我们希望这些估计的均方误差小于最小均方误差。

    在数学上,估计公式变为
    A =(Z’Z)^− 1^ Z’Y = D ^− 1 ^Z’Y
    因为主要成分的特殊性。注意,这是应用于不同自变量集的普通最小二乘回归。
    两组回归系数A和B使用公式A = P’B关联和B = PA

    省略主成分可以通过将A的对应元素设置为零来实现。

    因此,可以将主成分回归概述如下:
    1.完成X矩阵的主成分分析并将主成分保存在Z中。
    2.将Y的回归拟合到Z,以获得A的最小二乘估计。
    3.将A的最后一个元素设置为零。
    4.使用B = PA变换回原始系数。

    展开全文
  • MATLAB,可直接替换数据运行。主成分回归分析 Principal Component Regression(PCR)是一种多元回归分析方法,旨在解决自变量间存在多重共线性问题。
  • 主成分回归分析是将回归模型中有严重复共线性的变量进行因子提取,得到正交的因子变量,然后对因子变量进行回归模型的建立。通过具体实例介绍复共线性的判别方法以及如何利用主成分回归分析方法建立较理想的回归模型...
  • 主成分分析应用之主成分回归

    万次阅读 多人点赞 2018-05-27 23:16:42
    主成分回归分析 对于OXY数据集的变量解释如下: 对上述数据进行回归模型的拟合,得到模型:从模型的显著性检验结果看出:除了常数项以及β3显著,其他变量系数都不通过显著性检验。同时,从模型整体拟合效果来看,...

    主成分回归分析

     

    对于OXY数据集的变量解释如下:

     

    对上述数据进行回归模型的拟合,得到模型:


    从模型的显著性检验结果看出:除了常数项以及β3显著,其他变量系数都不通过显著性检验。同时,从模型整体拟合效果来看,R^20.8618,调整的R^20.7697,整体拟合效果可以通过。最后,p值为0.00198说明,拒绝原假设,即有理由认为回归模型从整体上拟合效果比较好。

    下面针对系数通不过检验进行分析。

     ##残差图,异方差,自相关检验


    plot(lm.sol$residuals,main = "the residuals of liner model",ylab = "re")


    abline(h=0,lty=2)


    #多重共线性检验


    kappa(qr(OXY))

    结果:


    借助残差图,其随机围绕着re=0波动,可以排除模型不存在自相关以及异方差问题。

    kappa(qr(OXY))
    [1] 264.2117

     由其条件数为264大于100,可认为,该模型存在较强的多重共线性。

    则采用主成分回归法,来消减模型存在多重共线性带来的影响,即系数通不过显著性检验。

     

     

     

    求主成分:


     

    cumulative proportion可以得到当主成分个数m等于3时,累计贡献率为83.526%大于80%,即可认为前三个主成分,就基本提取了原数据绝大部分的信息。所以,以前三个主成分的得分值作其观测值z1z2z3,并把它添加到数据集OXY中,建立回归模型:

     y =46.3800+2.0593*z1 -1.4782*z2 +0.6950*z3

     

    可从summarylm.sol.1)结果得到,除了z3的系数没通过显著性检验。同时模型的整体

     

    拟合效果得到提高,R^20.8676,调整的R^20.8345,同时p值远远小于0.05,说明

     

    模型整体拟合效果较佳。

    lm.sol.1<-lm(y~z1+z2+z3, data=OXY)
    summary(lm.sol.1)


    Call:
    lm(formula = y ~ z1 + z2 + z3, data = OXY)


    Residuals:
        Min      1Q  Median      3Q     Max 
    -2.3880 -1.5069  0.3160  0.7009  4.3672 


    Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
    (Intercept)  46.3800     0.4762  97.394  < 2e-16 ***
    z1            2.0593     0.2591   7.950 4.01e-06 ***
    z2           -1.4782     0.4093  -3.611  0.00357 ** 
    z3            0.6950     0.4512   1.540  0.14942    
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


    Residual standard error: 1.905 on 12 degrees of freedom
    Multiple R-squared:  0.8676, Adjusted R-squared:  0.8345 
    F-statistic:  26.2 on 3 and 12 DF,  p-value: 1.49e-05

    使用逆变换法,得到原始变量的回归方程:

    beta<-coef(lm.sol.1); A<-loadings(prin.oxy)
    x.bar<-prin.oxy$center; x.sd<-prin.oxy$scale
    coef<-(beta[2]*A[,1]+ beta[3]*A[,2])/x.sd
    beta0 <- beta[1]- sum(x.bar * coef)
    c(beta0, coef)
    (hntercept)          x1          x2          x3          x4          x5          x6           y 
    84.48047095 -0.19517781 -0.11688617 -1.04312708 -0.12361966 -0.03916300 -0.05573319  0.31272008 

     

     

    即可以得到原始变量的回归方程

    从其系数可以大致得到以下结论:

    即认为人体肺活量与年龄,体重,脉搏成负相关,与运动时最大脉搏成正比。


     

    展开全文
  • 混合半监督贝叶斯主成分回归用于软传感器建模
  • 本程序是主成分回归的一个详细举例,有注释,方便做主成分回归分析的人参考。
  • matlab实现主成分回归

    千次阅读 2019-09-22 15:30:18
    主成分回归就是先对数据进行主成分分析,再进行多元线性回归。 主成分分析参考上篇博客,蹦篇博客介绍多元线性回归及其MATLAB实现。 多元线性回归是一种常用的线性建模方法。如果有两个或两个以上的自变量,就称为...

    主成分回归就是先对数据进行主成分分析,再进行多元线性回归。
    主成分分析参考上篇博客,蹦篇博客介绍多元线性回归及其MATLAB实现。
    多元线性回归是一种常用的线性建模方法。如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。因此多元线性回归比一元线性回归的实用意义更大。
    以下是MATLAB的实现方式

    a = load('C:\Users\yxz\Desktop\pca_duoyuan\data.txt');%经过PCA分析之后的主成分
    U = load('C:\Users\yxz\Desktop\pca_duoyuan\U.txt');%这格式pca之前原数数据的特征向量
    a2=xlsread('C:\Users\yxz\Desktop\pca_duoyuan\testjieguo.csv');%读文件,测试数据
    a2=a2(:,2:513); %从第二列到最后
    PCA_a2=a2*U;
    x1=a(:, 1);
    x2=a(:, 2);
    x3=a(:, 3);
    x4=a(:, 4);
    x5=a(:, 5);
    x6=a(:, 6);
    x7=a(:, 7);
    x8=a(:, 8);
    y=a(:,9);
    X=[ones(length(y),1), x1,x2,x3,x4,x5,x6,x7,x8];
    [b,bint,r,rint,stats]=regress(y,X);
    b;bint;stats;
    b2=[b(2),b(3),b(4),b(5),b(6),b(7),b(8),b(9)];
    rcoplot(r,rint)%残差及其置信区间作图
    %b是方程的系数矩阵
    %bint是回归系数的区间
    %r残差
    %rint置信区间
    %stats用于检验回归模型是否正确,分别是R的平方,F值,概率P
    % 预测
    ty1=b(1)+b2*PCA_a2(1,:)';
    ty2=b(1)+b2*PCA_a2(2,:)';
    ty3=b(1)+b2*PCA_a2(3,:)';
    ty4=b(1)+b2*PCA_a2(4,:)';
    ty5=b(1)+b2*PCA_a2(5,:)';
    ty6=b(1)+b2*PCA_a2(6,:)';
    ty7=b(1)+b2*PCA_a2(7,:)';
    ty8=b(1)+b2*PCA_a2(8,:)';
    t=1:60;
    figure(1);
    y_fitting=X(t,:)*b;
    plot(t,y_fitting,'r-',t,y(t,:),'b-',t,abs(y_fitting-y(t,:)),'k-',5,ty1,'*',8,ty2,'*',18,ty3,'*',22,ty4,'*',35,ty5,'*',42,ty6,'*',50,ty7,'*',56,ty8,'*');% 绘制出Y实际值曲线t,y_fitting,和拟合值曲线Y(t,:),以及残差曲线abs(y_fitting-Y(t,:))
    legend('红--拟合值','蓝--实际值','黑--误差值');
    title('线性回归方程拟合结果');
    xlabel('样本点');ylabel('浓度');
    
    

    在这里插入图片描述

    展开全文
  • 主成分回归在一类水泥沙观测数据建模中的应用,张超,,本文首先介绍主成分回归分析是将回归模型中有严重复共线性的变量进行因子提取,得到正交的因子变量,然后对因子变量进行回归模型
  • 基于主成分回归分析的中国高技术产品出口影响因素分析,杨栋,,本文对2007年省际截面数据使用主成分回归分析方法实证研究了影响我国高技术产品出口的各种因素,克服了多元线性回归的多重共线性�
  • 采用主成分回归分析的方法,以43个典型观测站的实测数据作为样本,研究了概率积分法参数的计算方法.研究结果表明:通过主成分分析方法提取前5个主成分的累积方差贡献率已经达到91%,可用其代替原始的8个因素;该方法可以...
  • mathematica主成分回归的一个小例子,含有数据
  • 基于主成分回归分析法的粮食产量影响因素研究,蔡风琴,刘晓娥,为了研究影响粮食产量的因素,本文根据《中国统计年鉴》的统计数据,首先采用主成分分析法建立因子分析模型,提取几个主成分;接
  • 回归预测 | MATLAB实现PCR(主成分回归)多输入单输出(PCA Regression) MATLAB实现数据降维的PCA(主成分分析)函数有pca和pcacov两个。 pca函数可以直接利用原始数据进行主成分分析; pcacov函数针对原始数据的...

    回归预测 | MATLAB实现PCR(主成分回归)多输入单输出(PCA Regression)

    MATLAB实现数据降维的PCA(主成分分析)函数有pca和pcacov两个。
    pca函数可以直接利用原始数据进行主成分分析;
    pcacov函数针对原始数据的协方差矩阵进行主成分分析,本程序实现了两种分析方法的预测结果对比,可以直观看出不同处理方法的预测效果差异!

    预测结果一览

    预测效果
    主成分贡献率分析最大主成分显示

    主成分回归介绍

    当自变量存在高度共线性或一般回归分析所得到的回归系数不符合常理时,可以采用主成分回归法。通过变换将高度相关的变量的信息综合成相关性低的主成分,然后以主成分代换原变量参与回归。

    程序设计过程

    clc;clear;
    warning off;
    load data x y
    % 求因子维度
    [r,c]=size(x);
    % 求因子均值
    aver=mean(x);
    % 求因子标准差
    stdcov=std(x);
    % 求目标均值
    y_aver=mean(y);
    % 求目标方差
    y_stdcov=std(y);
    % 数据标准化
    stdarr=(x-aver(ones(r,1),:))./stdcov(ones(r,1),:); 
     std_y=(y-y_aver(ones(r,1)))./y_stdcov(ones(r,1));
    % 计算相关系数矩阵
    covArr=cov(stdarr);
    %% 相关系数矩阵进行主成分分析
    % pc1的列为covArr的特征向量 latent为covArr的特征值,explain各个主成分的贡献率
    [pc1,latent,explain]=pcacov(covArr);
    % 构造与pc1同维数的元素为±1的矩阵 
    d=repmat(sign(sum(pc1)),size(pc1,1),1);
    pc=pc1.*d;
    sumcontr=0;
    i=1;
    % 主成分筛选,选取贡献率大于90%的主成分
    er=90;
    while sumcontr<er
        sumcontr=sumcontr+explain(i);
        i=i+1;
    end
    % pcNum主成分数
    pcNum=i-1;
    % 计算各个主成分
    F=stdarr*pc(:,1:pcNum);
    %% 协方差主成分多元线性回归
    % 回归数据准备
    FF=[ones(r,1),F];
    % 多元线性回归分析
    Fcoeff=regress(std_y,FF);
    Recoeff=pc(:,1:pcNum)*Fcoeff(2:pcNum+1,:);
    result(1)=Fcoeff(1);
    result(2:c+1)=Recoeff;
    y_p=Fcoeff(1)+stdarr*Recoeff;
    y_p=y_p.*y_stdcov(ones(r,1))+y_aver(ones(r,1));
    %--------------------------------------------------------------------------
    %% 原数据主成分回归
    %PCALoadings特征向量,PCAScores主成分分数,PCAVar主成分方差
    [PCALoadings,PCAScores,PCAVar] = pca(x);
    % 回归模型
    k = pcNum;
    % 多元线性回归
    betaPCR = regress(y-mean(y),PCAScores(:,1:k));
    betaPCR = PCALoadings(:,1:k) * betaPCR;
    betaPCR = [mean(y)-mean(x) * betaPCR;betaPCR];
    % 预测拟合
    y_r = [ones(r,1) x] * betaPCR;
    %% 数据可视化
    %%
    %  主成分贡献率分析
    figure
    percent_explained = 100 * explain / sum(explain);
    [H,ax] =pareto(percent_explained);
    set(ax,'linewidth',2,'FontName','Times New Roman')
    set(H(1),'FaceColor',[180 60 0]./255)
    set(H(2),'linestyle','--','Marker','s','Color',[255 0 0]./255,'linewidth',2,'Markersize',6,'MarkerFaceColor',[255 0 0]./255)
    xlabel('主成分')
    ylabel('贡献率(%)')
    title('主成分贡献率')
    h = gca;
    h.FontName = '华文宋体';
    h.FontSize = 12;
    hold off
    %--------------------------------------------------------------------------
    figure
    plot(PCAScores(:,1),PCAScores(:,2),'o','Color',[250 180 60]./255,'linewidth',2,'Markersize',5,'MarkerFaceColor',[250 0 60]./255)
    xlabel('1st Principal Component')
    ylabel('2nd Principal Component')
    grid on;
    axis tight
    %--------------------------------------------------------------------------
    figure()
    plot(1:r,y,'k--','linewidth',2);
    hold on
    plot(1:r,y_p,'b:.','linewidth',2);
    hold on
    plot(1:r,y_r,'r:.','linewidth',2);
    title('结果比较');
    legend('原始数据','协方差主成分回归预测值','原数据主成分回归预测值');
    legend box off
    h = gca;
    set(h,'linewidth',2,'FontName','Times New Roman')
    h.FontName = '华文宋体';
    h.FontSize = 10;
    grid on;
    axis tight
    hold off
    

    程序参考链接

    原始数据的主成分分析:
    https://www.mathworks.com/help/stats/pca.html
    协方差矩阵的主成分分:
    https://www.mathworks.com/help/stats/pcacov.html

    程序设计备注

    • 建模不易,需要定制模型的话有偿咨询,需要的同学添加Q~Q【1153460737】交流,记得备注。
    • 数据下载地址参见本人主页资源。
    展开全文
  • 基于因子-主成分回归分析的股价技术分析研究,张鹏,董玲,本文介绍了回归分析的理论及应用方法,同时介绍了技术指标的定义及计算公式。并以股价技术指标为研究对象,利用spss统计分析软件�
  • 以邯郸钢铁公司 2 000 m 3高炉采集的数据为样本 ,采用主成分回归( PCR)方法研究了各运行参数对高炉铁水含硅量的贡献 ,实现了高维复杂数据的降维.考虑到偏最小二乘法(PLS)在处理多重共线性数据中的优势 ,利用 PLS对...
  • 以预测回采工作面瓦斯涌出量为目的,通过主成分分析方法得到了影响回采工作面瓦斯涌出量的主成分,并采用主成分分量进行...结果表明,采用的主成分回归分析方法减少了回归分析需要考虑的变量个数,结果具有较好的精确度。
  • 主成分回归代码matlab及示例Coursera机器学习 该存储库包含Andrew Ng课程中某些练习的python实现。 对于课程中的许多作业,系统会指导您创建某些算法的完整,独立的Octave / MATLAB实现(例如,线性回归和逻辑回归)...
  • 为此,提出用 DEA方法对数据进 行评价,剔除无效数据,将有效的数据用于主成分回归的建模方法。该方法能有效克服干扰数据对提取 成分的影响,弥补主成分分析的不足。通过实例计算并与 PCR、P LSR进行了比较分析,结果表明...
  • matlab精度检验代码fast-pcr-快速迭代主成分回归 该MATLAB代码根据中的工作实现了迭代方法。 安装 下载fastpcr.m , lanczos.m , ridgeInv.m和robustReg.m ,或直接将其包含在项目目录中。 文献资料 主成分回归...
  • 本文根据油松毛虫幼虫转移生境的特性,将其越冬过程分解为上树阶段和下树阶段.首先通过主成分分析,寻找出...在此基础上,通过主成分回归建立数学模型,预测越冬幼虫种群数量,为制定油松毛虫防治策略提供准确的虫情报告.
  • 首先用主成分方法进行降维,并且同时消除解释变量之间的多重共线性,然后对农村居民人均消费支出与农村居民人均纯收入、人均储蓄存款、人均GDP和消费价格指数这四个影响因素进行主成分回归分析.实证分析结果表明,...
  • 主成分回归代码matlab及示例 作者 标题 日期 布伦丹·韦克菲尔德 TriOS RAMSES辐射计PCA和水化学回归 2021年5月14日 项目总结 该项目的目的是构建一个分析管道,以对从辐射计传感器输出的原始高光谱数据执行主成分...
  • 基于主成分回归的指数平滑模型的重庆民营经济的税收预测,孙杨,胡小兵,改革开放以来,重庆民营经济蓬勃发展,在稳定增长、促进创新、增加就业、改善民生等方面作用十分显著,成为推动经济社会发展的不�
  • 习题: 对某地区的某消费品的销售量Y进行调查,它与下面四个...试用主成分回归方法建立销售量Y与其他四个变量x1,x2, x3 和 x4的回归方程。 数据资料data.txt: x1 x2 x3 x4 y 1 82.9 92 17.1 94 8.4 2 88...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,180
精华内容 472
关键字:

主成分回归