首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较pls包中PCR函数中的所有变量,R

比较pls包中PCR函数中的所有变量,R
EN

Stack Overflow用户
提问于 2017-08-25 01:47:34
回答 1查看 1.8K关注 0票数 0

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

我正在使用来自pcr包的pls函数。这需要一个公式来识别要比较的变量。我希望能够比较每个变量和其他变量,就像PCA一样。但是,在这个函数中,我只能知道如何将一个变量与每个其他变量进行比较,并且取决于我选择的变量,结果会发生变化。当然,我可能没有正确理解PCR。

下面是一个使用iris数据集的示例。

代码语言:javascript
复制
library(pls)
library(ggplot2)

Petal.Length与所有其他变量进行比较:

代码语言:javascript
复制
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

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-25 07:36:26

聚合酶链反应为主成分回归。这意味着您有一个因变量(在~的左手边)和许多自变量(~的右侧),就像线性回归一样。

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

这只有助于处理自变量的多重共线性()。因此,当您想要运行线性回归时,这项技术是有用的,但是您有自变量的多重共线性问题。它在降维任务(例如,当您没有指定的因变量时)并不有用,因为PCA是这样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45873236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档