【数学建模】--主成分分析

这篇具有很好参考价值的文章主要介绍了【数学建模】--主成分分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本讲将介绍主成分分析(Principal Component Analysis,PCA),主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息,一般来说,当研究的问题涉及到多变量且变量之间存在很强的相关性时,我们可以考虑使用主成分分析的方法来对数据进行简化。

将多个指标转换为少数几个主成分

问题的提出:

对于变量多,分析时难度大=>因此用较少新变量代替原来较多就变量。

数据降维的作用:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 文章来源地址https://www.toymoban.com/news/detail-637855.html

主成分分析的思想:

【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

严谨的数学符号:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

PCA的计算步骤(理论步骤):【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

 

 

案列1【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

计算关键变量:

一般看累积贡献率,一般选择累积贡献率较大且所选变量少时情况。如下图的累积贡献率到第三个时已经为85.9%,后面的已经相对增加的趋势较少说明后面变量的贡献率相对较少可以不用考虑。

【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型 

 

写出主成分并简要分析:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

主成分分析的说明:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

案例2:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

计算关键变量:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

对主成分分析:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

主成分分析的MATLAB代码实现:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

  1. 标准化数据。利用函数zscore(数据)
  2. 计算标准化后样本的协方差。函数cov(标准化后数据)

补:在我们进行完1,2步后得到了样本相关系数矩阵,可对其相关系数进行可视化。

步骤:

a.复制相关系数矩阵->excel,调整表格的行高列宽。

b.色阶->三色表->管理规则->编辑规则->修改数字,范围->应用。【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

让我们继续回到matlab的操作:

3.根据PCA计算步骤,接下来计算R(相关系数矩阵)的特征值和特征向量。函数eig(R)。若eig不给返参数,默认只返回特征值。【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

4.计算主成分贡献率和累积贡献率。(计算过程复杂,后期会有代码和注释的补充)

5.根据累积贡献率选择主成分变量的个数,并且进行主成分变量的计算。【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

6.根据实际问题选择,如果为聚类模型则将数据复制到excel,再用spss解决;如果为主成分回归,则还需要计算标准化y值(利用函数zscore),再将得到的标准化y和主成分变量F1,F2……Fm复制到excel再导入到stata中进行分析。

Matlab进行主成分分析:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

结果的解释:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

主成分分析的滥用(了解):【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

对于聚类问题的主成分分析的使用:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

 

将数据有导入spss中再进行聚类:

(关于聚类模型可以参考博主之前的一篇文章:【数学建模】--聚类模型_Wei&Yan的博客-CSDN博客)

分析-分类-系统聚类-导入重要变量-图-普系图-生成谱系图后根据普系图确定类的个数。【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

确定类的个数后再重新运行生成散点图:

(在确定类的个数后要手动输入)【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

Spss聚类:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

效果图:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

主成分回归:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

利用Stata来解决主成分回归:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

关于主成分回归的看法:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

课后作业:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 如果不了解多元回归和stata的应用可参考博主的:数学建模—多元线性回归分析(+lasso回归的操作)_Wei&Yan的博客-CSDN博客

  1. 直接回归,并用异方差(estat imtest,white)和多重共线性检验(estat vif):【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

 

2.逐步回归分析(向后逐步):【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

3.主成分分析:

 

观察到前两项的累积贡献率已经较高,所以选择前两项为主成分自变量,得到了标准化后的主成分自变量F1,F2和Y。

将数据导出到excel再导入stata进行分析:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 

 Stata运行结果:【数学建模】--主成分分析,数学建模,数学建模,Matlab,线性回归,stata,主成分分析,Spss,聚类模型

 MATLAB代码参考:

 

clear;clc
  % 主成分聚类
  % 主成分回归
load data3.mat%博主在作业测试中的数据。
% 注意,这里可以对数据先进行描述性统计
% 描述性统计的内容见第5讲.相关系数
[n,p] = size(x);  % n是样本个数,p是指标个数

%% 第一步:对数据x标准化为X
X=zscore(x);   % matlab内置的标准化函数(x-mean(x))/std(x)

%% 第二步:计算样本协方差矩阵
R = cov(X);

%% 注意:以上两步可合并为下面一步:直接计算样本相关系数矩阵
R = corrcoef(x);
disp('样本相关系数矩阵为:')
disp(R)

%% 第三步:计算R的特征值和特征向量
% 注意:R是半正定矩阵,所以其特征值不为负数
% R同时是对称矩阵,Matlab计算对称矩阵时,会将特征值按照从小到大排列哦
% eig函数的详解见第一讲层次分析法的视频
[V,D] = eig(R);  % V 特征向量矩阵  D 特征值构成的对角矩阵


%% 第四步:计算主成分贡献率和累计贡献率
lambda = diag(D);  % diag函数用于得到一个矩阵的主对角线元素值(返回的是列向量)
lambda = lambda(end:-1:1);  % 因为lambda向量是从小大到排序的,我们将其调个头
contribution_rate = lambda / sum(lambda);  % 计算贡献率
cum_contribution_rate = cumsum(lambda)/ sum(lambda);   % 计算累计贡献率  cumsum是求累加值的函数
disp('特征值为:')
disp(lambda')  % 转置为行向量,方便展示
disp('贡献率为:')
disp(contribution_rate')
disp('累计贡献率为:')
disp(cum_contribution_rate')
disp('与特征值对应的特征向量矩阵为:')
% 注意:这里的特征向量要和特征值一一对应,之前特征值相当于颠倒过来了,因此特征向量的各列需要颠倒过来
%  rot90函数可以使一个矩阵逆时针旋转90度,然后再转置,就可以实现将矩阵的列颠倒的效果
V=rot90(V)';
disp(V)


%% 计算我们所需要的主成分的值
m =input('请输入需要保存的主成分的个数:  ');
F = zeros(n,m);  %初始化保存主成分的矩阵(每一列是一个主成分)
for i = 1:m
    ai = V(:,i)';   % 将第i个特征向量取出,并转置为行向量
    Ai = repmat(ai,n,1);   % 将这个行向量重复n次,构成一个n*p的矩阵
    F(:, i) = sum(Ai .* X, 2);  % 注意,对标准化的数据求了权重后要计算每一行的和
end

%% (1)主成分聚类 : 将主成分指标所在的F矩阵复制到Excel表格,然后再用Spss进行聚类
% 在Excel第一行输入指标名称(F1,F2, ..., Fm)
% 双击Matlab工作区的F,进入变量编辑中,然后复制里面的数据到Excel表格
% 导出数据之后,我们后续的分析就可以在Spss中进行。

%%(2)主成分回归:将x使用主成分得到主成分指标,并将y标准化,接着导出到Excel,然后再使用Stata回归
%Y = zscore(y);  % 一定要将y进行标准化哦~
% 在Excel第一行输入指标名称(Y,F1, F2, ..., Fm)
% 分别双击Matlab工作区的Y和F,进入变量编辑中,然后复制里面的数据到Excel表格
% 导出数据之后,我们后续的分析就可以在Stata中进行。

到了这里,关于【数学建模】--主成分分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模—多元线性回归分析(+lasso回归的操作)

    定义:回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的人数就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。 常见的回归分析有五类:线性回归

    2024年02月13日
    浏览(19)
  • 数学建模学习笔记(9)多元线性回归分析(非常详细)

    回归分析的地位 :数据分析中最基础也是最重要的分析工作,绝大多数的数据分析问题都可以使用回归的思想来解决。 回归分析的任务 :通过研究自变量和因变量的相关关系,尝试用自变量来解释因变量的形成机制,从而达到通过自变量去预测因变量的目的。具体如下:

    2024年02月03日
    浏览(25)
  • 数学建模之回归分析算法(含matlab源代码)

    目录 一、一元线性回归 1、步骤  2、matlab命令(多元线性回归) 3、举例  二、一元非线性回归  三、多项式回归 1、一元多项式回归  应用  2、多元二项式 应用  四、非线性回归  应用 五、 逐步回归  应用    r²和F越大越好 p越小越好      从残差图可以看出,除第二个

    2024年02月09日
    浏览(27)
  • 【数学建模笔记】【第七讲】多元线性回归分析(二):虚拟变量的设置以及交互项的解释,以及基于Stata的普通回归与标准化回归分析实例

    温馨提示: 本文共有9683字,阅读并理解全文需要半小时左右 书接上文,上文谈到内生性的解决之后,我们对回归问题的探究还没有完。 比如下面这个问题: 我们说线性回归他的表达式可以是广义的,可以含有二次项,可以含有对数项,那么含有对数项的模型中的β怎么解释

    2023年04月25日
    浏览(35)
  • 【数学建模】--主成分分析

    本讲将介绍主成分分析(Principal Component Analysis,PCA),主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息,一般来说,当研究的问题涉及到多变量且变量之间存在

    2024年02月13日
    浏览(28)
  • 数学建模:主成分分析法

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 构建原始数据矩阵 X X X ,其中矩阵的形状为 x ∗ n x * n x ∗ n ,有 m m m 个对象, n n n 个评价指标。 然后进行矩阵的 归一化处理 。 首先计算矩阵的指标之间的 相关系数矩阵 R R R 。使用matlab 的 corr 即可得到。 计算相关系数矩

    2024年02月10日
    浏览(38)
  • (数学建模)评价类-主成分分析

    目录 一、模式是干什么的 1.1基本原理 1.2假设(假设检验用SPSS,后面介绍) 1.3计算步骤 二、算法是干啥的,算法和模型怎么对应 2.1程序清单 1.2部分代码的作用 1.3关键程序解释  三、SPSS  (matlab代码用来进行主成分评价,spss用来判断主成分的前提二是否满足) 1、通过正交

    2024年02月07日
    浏览(29)
  • 数学建模-线性回归

    回归分析: 通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。 本次主要学习线性回归。(划分依据是因变量Y的类型) ps. other 0-1回归,定序回归,计数回归,生存回归 a. : 相关性 , Y , X 相关性 != 因果性 Y 是需

    2023年04月09日
    浏览(26)
  • 数学建模-多元线性回归笔记

    1.学模型✅ 2.看专题论文并复习算法 多元线性回归 无偏性:预测值与真实值非常接近 一致性:样本量无限增大,收敛于待估计参数的真值 如何做:控制核心解释变量和u不相关 四类模型回归系数的解释 截距项不用考虑 一元线性回归:y = a + bx + u x每增加1个单位,y平均变化

    2024年02月12日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包