楼主: ReneeBK
1096 1

How to fit a linear regression model with two principal components in R? [推广有奖]

  • 1关注
  • 62粉丝

VIP

已卖:4897份资源

学术权威

14%

还不是VIP/贵宾

-

TA的文库  其他...

R资源总汇

Panel Data Analysis

Experimental Design

威望
1
论坛币
49635 个
通用积分
55.6937
学术水平
370 点
热心指数
273 点
信用等级
335 点
经验
57805 点
帖子
4005
精华
21
在线时间
582 小时
注册时间
2005-5-8
最后登录
2023-11-26

楼主
ReneeBK 发表于 2014-4-18 03:29:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

Let's say I have a data matrix d

pc = prcomp(d)# pc1 and pc2 are the principal components  pc1 = pc$rotation[,1] pc2 = pc$rotation[,2]

Then this should fit the linear regression model right?

r = lm(y ~ pc1+pc2)

But then I get this error :

Errormodel.frame.default(formula = y ~ pc1+pc2, drop.unused.levels = TRUE) :    unequal dimensions('pc1')

I guess there a packages out there who do this automatically, but this should work too?


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:regression Components Component regressio PRINCIPAL principal

沙发
ReneeBK 发表于 2014-4-18 03:29:54
Answer: you don't want pc$rotation, it's the rotation matrix and not the matrix of rotated values (scores).

Make up some data:

> x1 = runif(100)
> x2 = runif(100)
> y = rnorm(2+3*x1+4*x2)
> d = cbind(x1,x2)

> pc = prcomp(d)
> dim(pc$rotation)
[1] 2 2
Oops. The "x" component is what we want. From ?prcomp: "x: if ‘retx’ is true the value of the rotated data (the centred (and scaled if requested) data multiplied by the ‘rotation' matrix) is returned."

> dim(pc$x)
[1] 100   2
> lm(y~pc$x[,1]+pc$x[,2])

Call:
lm(formula = y ~ pc$x[, 1] + pc$x[, 2])

Coefficients:
(Intercept)    pc$x[, 1]    pc$x[, 2]  
    0.04942      0.14272     -0.13557

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-30 14:47