【问题标题】:Comparing all variables in PCR function from pls package, R比较来自 pls 包的 PCR 函数中的所有变量,R
【发布时间】:2017-08-25 01:47:34
【问题描述】:

我正在尝试在 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

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

【问题讨论】:

    标签: r regression pca multivariate-testing pls


    【解决方案1】:

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

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

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

    【讨论】:

    • 这确实是个坏消息!你能解释一下为什么 PCR 对多重共线性的降维没有用吗?你能建议一个分析吗?感谢您的深入回答。
    • 因为它不会减少整个数据集的维度。它仅减少自变量的维度,并且您没有因变量和自变量之间的区别。
    • 暂时忘记多重共线性。你会使用线性回归来解决你的问题吗?可能不是,因为它评估了一个因变量和许多自变量之间的关系。这不是你需要的。现在,再次带来多重共线性。 PCR 是一种在存在多重共线性的情况下进行线性回归分析的方法。但是你对线性回归不感兴趣,所以你不需要类似线性回归的技术。
    猜你喜欢
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2021-01-02
    相关资源
    最近更新 更多