0

我正在尝试在 R 中进行主成分回归分析(PCR)。通常我会做 PCA(主成分分析),但是我有多重共线性并且已经读到 PCR 可以处理这个问题。

我正在使用包中的pcr功能pls。这需要一个公式来识别要比较的变量。我希望能够像 PCA 那样将每个变量与其他所有变量进行比较。然而,在这个函数中,我只能弄清楚如何将一个变量与其他所有变量进行比较,并且根据我选择的变量,结果会发生变化。当然,我可能没有正确理解 PCR。

这是使用iris数据集的示例。

library(pls)
library(ggplot2)

Petal.Length所有其他变量相比:

ir.pcr<-pcr(Petal.Length~ ., data = iris, validation = "CV")#PCR comparing `Petal.Length` with all other variables

df<-data.frame(ir.pcr$scores[,1],ir.pcr$scores[,2])#get first 2 COMP scores from PCR for ggplot
colnames(df)<-c('Comp1', 'Comp2')
   
ggplot(data=df,aes(x=Comp1,y=Comp2)) + 
  geom_point(aes(fill=iris$Species),shape=21,colour='black',size=3)#plot points

在此处输入图像描述

Sepal.Width与其他所有变量相比使用:

ir.pcr<-pcr(Sepal.Width~ ., data = iris, validation = "CV")#PCR

df<-data.frame(ir.pcr$scores[,1],ir.pcr$scores[,2])#get first 2 COMP scores from PCR for ggplot
colnames(df)<-c('Comp1', 'Comp2')

ggplot(data=df,aes(x=Comp1,y=Comp2)) + 
  geom_point(aes(fill=iris$Species),shape=21,colour='black',size=3)#plot points

在此处输入图像描述

我的理解是,在公式中包含.after意味着“与其他所有内容进行比较”。~如果是这样,那么我如何才能.~.将每个变量与其他所有变量进行比较?

4

1 回答 1

1

PCR是主成分回归。这意味着您有一个因变量(在 的左侧~)和许多自变量(在 的右侧~),就像在线性回归中一样。

PCR 首先仅对自变量进行 PCA,然后对来自 PCA 的主成分的因变量进行回归。这就是为什么在选择不同的因变量时会得到不同的结果。

这仅有助于处理自变量的多重共线性。因此,当您想运行线性回归但自变量存在多重共线性问题时,此技术很有用。它在降维任务中没有用(例如,当您没有指定因变量时),就像 PCA 一样。

于 2017-08-25T07:36:26.863 回答