R语言与主成分分析

主成分分析实例

例 9.1 (中学生身体四项指标的主成分分析)

在某中学随机抽取某个年纪30名学生,测量其身高(X1)、体重(X2)、胸围(X3)和坐高(X4),数据如表9.1所示。试对这30名中学生身体四项指标数据做主成分分析。

image

解析:用数据框的形式输入数据。用princomp()作主成分分析,由前面的分析,选择相关矩阵做主成分分析更合理。因此,这里选择的参数为cor=TRUE。最后用summary()列出主成分分析的值,这里选择loadings=TRUE。以下是相应的程序。

用数据框形式输入数据,做主成分分析,并显示分析结果:

image

summary()函数列出了主成分分析的重要信息:

  • Standard deviation:表示主成分的标准差,即主成分的方差的开方,也就是相应的特征值的开方
  • Proportion of Variance:表示的是方差的贡献率
  • Cumulative Proportion:表示的是方差的累计贡献率

由于在summary函数的参数中选取了loadings=TRUE,因此列出了loadings(载荷)的内容,它实际上是主成分对应于原始变量X1, X2, X3, X4的系数,即前面介绍的矩阵Q。因此得到:

image

由于前面两个主成分的累计贡献率已达到96%,另外两个主成分可以舍去,达到降维的目的

第一主成分对应系数的符号都相同,其值在0.5左右,它反映了中学生身材魁梧程度:身材高大是学生,他的四个部分的尺寸都比较大,因此,第一主成分的值就比较小(因为系数均为负数);而身材矮小是学生,他的四个部分的尺寸都比较小,因此,第一主成分的绝对值就较大。我们成第一主成分为大小因子。第二主成分是高度和围度的差,第二主成分值大的学生表明该学生“细高”,而第二主成分值越小的学生表明该学生“矮胖”,因此第二主成分为体型因子。

我们看一下各样本的主成分的值(用predict()函数):

image

从第一主成分来看,较小的几个值是25号样本、3号样本和5号样本,因此说明这个几个学生身材魁梧。而11号样本、15号样本和29号样本的值较大,说明这几个学生的身材瘦小。

从第二主成分来看,较大的几个值是23号样本、19号样本和4号样本,因此说明这几个学生属于“细高”型;而17号样本、8号样本和2号样本的值较小,说明这几个学生的身材属于“矮胖”型。

画出主成分的碎石图:

Image 219

还可以画出关于第一主成分和第二主成分样本的散点图,其图形如下所示:

Image 220image

问题:中间的四条箭头的线的作用是什么????

主成分分析的应用

1. 主成分分类

例 9.2 对128个成年男子的身材进行测量,每人各测得16项指标:身高(X1),坐高(X2),胸围(X3),头高(X4),裤长(X5),下档(X6),手长(X7),领围(X8),前胸(X9),后背(X10),肩厚(X11),肩宽(X12),袖长(X13),肋围(X14),腰围(X15)和腿肚(X16)。16项指标的相关矩阵R如表9.2所示(由于相关矩阵是对称的,只给出下三角部分)。试从相关矩阵R出发进行主成分分析,对16项指标进行分类。

image

解析:首先输入相关矩阵,再用princomp()对相关矩阵做主成分分析,最后画出各变量在第一、第二主成分下的散点图。

输入数据,按下三角输入,构成向量

image

做主成分分析,并绘制散点图:

image

image

由上图中得到:

  • 左上角的点看成一类,它们是“长”类:即身高(X1),坐高(X2),头高(X4),裤长(X5),下档(X6),手长(X7),袖长(X13)
  • 右下角的点看成一类,它们是“围”类,即身胸围(X3),领围(X8),肩厚(X11),肋围(X14),腰围(X15),腿肚(X16)
  • 中间的点看成一类,为体形特征指标:即前胸(X9),后背(X10),肩宽(X12)

2. 主成分回归

在回归分析的章节中,曾经讲过,当自变量出现多重共线性时,经典回归方法回归系数的最小二乘估计,一般效果会较差,而采用主成分回归能够克服直接回归的不足。下面用一个例子来说明如果做主成分回归,并且是如何克服经典回归的不足。

例 9.3 (法国经济分析数据)

考虑进口总额Y与三个自变量:国内总产值X1,储存量X2,总消费量X3(单位为10亿法郎)之间的关系。现收集了1949年至1959年共11年有效数据,如表9.3所示。试对此数据做经典回归分析和主成分回归分析。

image

解析:输入数据(采用数据框形式),再用一般线性回归方法做回归分析

image

从计算结果可以看出,按三个变量得到回归方程:

image

分析该方程,可以发现它并不合理。回到问题本身,Y为进口量,X1是国内总产值,而对应系数的符号却是负,也就说,国内总产值越高,其进口量却越少,这与实际情况并不相符。问其原因,三个变量存在着多重共线性(后面我们将会看到最下特征值接近于0)

Analysis of myself:绘制岭迹图

为了进一步可以看出变量间是否存在多重共线性,可以通过绘制岭迹图进行观察:

image

可见,在岭迹图中呈现出了“喇叭形”,因此很有可能在变量间存在多重共线性。为了克服多重共线性的影响,对变量做主成分分析回归,先做主成分分析:

image

从结果中可以看出,前两个主成分已达到99%的贡献率,因此第三主成分可以舍去。

下面做主成分回归,首先计算样本的主成分的预测值,并将第一主成分的预测值和第二主成分的预测值存放在数据框conomy中,然后再对主成分做回归分析:

image

回归系数和回归方程通过检验,而且效果显著,即得到回归方程;

image

上述方程得到的是响应变量与主成分的关系,但应用起来并不是很方便,还是希望得到相应变量与原变量之间的关系。由于:

image

以下通过变换,得到原坐标下的关系表达式:

image

在程序中,coef函数是提取回归系数,loadings为提取主成分对应的特征向量,conomy.pr$center为数据的中心,也就是数据X的平均值,conomy.pr$scale是数据的标准差,即Sii的开方。因此得到相应的系数,如上图。

即回归方程如下:

image

此时,对应X1, X2,X3的系数均为正数,比原回归方程更为合理。

  • 14
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要在R语言中进行主成分分析,可以使用stats包中的prcomp()函数。下面是一个简单的例子: 假设有一个数据集data,其中包含了10个变量,可以按照以下方式进行主成分分析: ```R # 加载数据 data <- read.csv("data.csv") # 主成分分析 pca <- prcomp(data, scale = TRUE) # 输出结果 summary(pca) ``` 这里,prcomp()函数的第一个参数是数据集,第二个参数scale=TRUE表示对数据进行标准化处理,以避免变量之间的尺度差异影响分析结果。summary(pca)函数可以输出主成分分析的结果,包括每个主成分的解释方差比例、成分载荷矩阵等信息。 ### 回答2: R语言是一种强大的统计分析工具,可以用于进行主成分分析(PCA)。主成分分析是一种常用的数据降维方法,可以将高维数据降低到低维空间中。在R语言中,可以使用princomp函数进行主成分分析。 首先,需要加载princomp函数的包。可以使用以下命令加载: `library(stats)` 接下来,需要准备好需要进行主成分分析的数据。假设我们有一个名为data的数据集,包含了多个自变量。可以使用以下命令创建data对象: `data <- data.frame(x1, x2, x3)` 其中x1、x2、x3是数据集中的自变量。如果数据集已经存在于R环境中,可以直接使用数据集的名称。 然后,可以使用princomp函数进行主成分分析。以下是一个示例命令: `pca <- princomp(data, cor = TRUE)` 这里的cor = TRUE表示计算变量之间的相关系数矩阵。如果数据集已经是标准化的,则可以使用cor = FALSE。 主成分分析的结果存储在pca对象中。可以使用summary函数查看主成分分析的结果摘要: `summary(pca)` 该函数会给出各个主成分的方差解释比例、特征值以及主成分得分的摘要信息。 此外,还可以使用biplot函数绘制主成分分析的双变量图。示例如下: `biplot(pca)` 该函数会绘制主成分得分的双变量图,并在图上显示自变量和主成分的关系。 通过以上步骤,我们可以在R语言中使用princomp函数进行主成分分析。这个过程有助于我们理解数据集的结构以及自变量之间的关系,并可以通过降维来简化数据集的分析和可视化。 ### 回答3: R语言是一种用于统计分析和数据可视化的编程语言,主成分分析(PCA)是一种常用的无监督学习方法,用于降维和数据可视化。 在R语言中,我们可以使用函数`prcomp()`来进行主成分分析。以下是使用R语言进行主成分分析的基本步骤: 1. 准备数据:首先,需要准备一个数据集,其中包含要进行主成分分析的变量。数据应该是数值型的,并且可以包含缺失值。 2. 标准化数据:使用`scale()`函数对数据进行标准化,将数据的均值减去,并将数据缩放到单位方差。这是因为主成分分析是基于数据的协方差矩阵。 3. 执行主成分分析:使用`prcomp()`函数执行主成分分析。将标准化的数据作为输入,并设置其他参数,如是否计算和保存主成分得分。 4. 结果解释:主成分分析得到一组主成分(也称为主成分向量或加载向量),它们是原始变量的线性组合。通过查看主成分的方差贡献,可以确定哪些主成分解释了大部分的变异性。还可以通过画出散点图矩阵或绘制主成分得分的散点图来进行数据的可视化和解释。 5. 结果应用:主成分分析的结果可用于降维,可以选择保留少数主成分,以保留最重要的信息,并减少数据的维数。此外,主成分分析还可用于发现数据之间的模式和关系,以及用于数据预处理和异常值检测。 总之,R语言提供了强大的主成分分析函数`prcomp()`,使用户能够进行数据降维和可视化、数据模式发现以及统计分析等任务。通过掌握主成分分析的基本步骤和R语言的语法,可以轻松地进行主成分分析和相关的统计分析工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值