比较 pls 包 R 中 PCR 函数中的所有变量
Comparing all variables in PCR function from pls package, R
我正在尝试在 R 中进行主成分回归分析 (PCR)。通常我会进行 PCA(主成分分析),但是我有多重共线性并且已经阅读过 PCR 可以处理这个问题。
我正在使用 pls
包中的 pcr
函数。这需要一个公式来识别要比较的变量。我希望能够像 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
我的理解是,在公式中 ~
后加上 .
表示 'compare to everything else'。如果是这样,那么我怎么才能让 .~.
能够将每个变量与其他变量进行比较?
PCR 是主成分回归。这意味着您有一个因变量(在 ~
的左侧)和许多自变量(在 ~
的右侧),就像在线性回归中一样。
PCR首先只对自变量PCA进行,然后从PCA对主成分进行因变量回归。这就是为什么选择不同的因变量会得到不同的结果。
这仅有助于处理自变量的多重共线性。因此,当您想 运行 线性回归但自变量存在多重共线性问题时,此技术很有用。它在降维任务中没有用处(例如,当您没有指定因变量时),就像 PCA 一样。
我正在尝试在 R 中进行主成分回归分析 (PCR)。通常我会进行 PCA(主成分分析),但是我有多重共线性并且已经阅读过 PCR 可以处理这个问题。
我正在使用 pls
包中的 pcr
函数。这需要一个公式来识别要比较的变量。我希望能够像 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
我的理解是,在公式中 ~
后加上 .
表示 'compare to everything else'。如果是这样,那么我怎么才能让 .~.
能够将每个变量与其他变量进行比较?
PCR 是主成分回归。这意味着您有一个因变量(在 ~
的左侧)和许多自变量(在 ~
的右侧),就像在线性回归中一样。
PCR首先只对自变量PCA进行,然后从PCA对主成分进行因变量回归。这就是为什么选择不同的因变量会得到不同的结果。
这仅有助于处理自变量的多重共线性。因此,当您想 运行 线性回归但自变量存在多重共线性问题时,此技术很有用。它在降维任务中没有用处(例如,当您没有指定因变量时),就像 PCA 一样。