setwd("C:/Users/IBM/Desktop/研一课程/2.2回归分析/回归作业") #设定当前的工作目录
shuju=read.table("shuju.txt",header=T)
shuju #读取数据
#主成分回归,用函数pcr
library(pls) #pls包提供pcr函数,也提供偏最小二乘回归函数plsr,而函数mvr是二者的集成
attach(shuju) #pcr可以在scale=T的设置下对自变量进行标准化,但注意对因变量并未标准化
set.seed(1)
shuju.pcr<-pcr(y~x1+x2+x3+x4+x5+x6+x7,4,scale=T,validation="CV")#主成分回归
summary(shuju.pcr) #这里采用的最优量化指标为均方根误差RMSEP,要得到MSE,需要对RMSEP做平方
coef(shuju.pcr)
#还原到原始变量的模型系数
cx1<-coef(shuju.pcr)[1]/sd(shuju$x1)
cx2<-coef(shuju.pcr)[2]/sd(shuju$x2)
cx3<-coef(shuju.pcr)[3]/sd(shuju$x3)
cx4<-coef(shuju.pcr)[4]/sd(shuju$x4)
cx5<-coef(shuju.pcr)[5]/sd(shuju$x5)
cx6<-coef(shuju.pcr)[6]/sd(shuju$x6)
cx7<-coef(shuju.pcr)[7]/sd(shuju$x7)
cint<-mean(shuju$y)-cx1*mean(shuju$x1)-cx2*mean(shuju$x2)-cx3*mean(shuju$x3)-cx4*mean(shuju$x4)
-cx5*mean(shuju$x5)-cx6*mean(shuju$x6)-cx7*mean(shuju$x7)
c(cint,cx1,cx2,cx3,cx4,cx5,cx6,cx7)
#看看主成分个数的选择
set.seed(1)
shuju.pcr2<-pcr(sy~sx1+sx2+sx3+sx4+sx5+x6+x7,validation="CV")#主成分回归
summary(shuju.pcr2)
validationplot(shuju.pcr2,val.type="MSEP")
附录数据
years
y
x1
x2
x3
x4
x5
x6
x7
1974
172.9
11246
681
105.9
10183
4110
11242
9
1975
352.94
10335
791
107.4
10414
3996
12693
6.5
1976
447.67
13156
607
114.4
13134
4689
16681
6
1977
404.02
6127
714
110.8
15033
6876
22131
4.75
1978
409.51
27419
911
99.4
17389
8636
31353
4.75
1979
619.71
25633
1231
91.4
21715
12339
43528
9.5
1980
1121.17
95684
2760
90.8
27075
16623
70752
10
1981
1506.94
105987
2651
86.3
31827
19937
125989
16
1982
1105.79
46230
2105
125.3
35393
24787
99468
10.5
1983
933.03
37165
3030
107.4
38823
25112
82478
10.5
1984
1008.54
48787
2810
106.6
46079
24414
54936
8.5
1985
1567.56
75808
2649
115.7
47871
22970
87135
6
1986
1960.06
123128
3031
110.1
54372
24403
129884
6.5
1987
2884.88
371406
3644
105.8
65602
30531
153044
5
1988
2556.72
198569
3690
101.6
74917
37861
215033
5.25