我正在分析有关芦苇田的数据。我测量的变量是水深,簧片高度,簧片密度等。由于某些变量是相关的,我执行了PCA以将这些变量减少到2个PCA轴(N = 104)。
为了执行PCA,我在R中使用了vegan
包。我的数据如下所示:
row.names Waterpeil hoogte_max Som Leeftijd_riet PFD oppervlakte onderlaag_num afst_rand
1 1 5 2.5 51 0.15686274 1.616921 8.127192 2 24.154590
2 3 9 2.5 44 0.13636364 1.564643 9.023642 2 8.349288
3 4 0 2.5 84 0.30952381 1.352548 8.498775 2 26.226896
4 5 0 3.5 58 0.43103448 1.384183 9.301617 1 57.320000
5 6 40 2.5 52 0.42307692 1.361262 10.316058 1 45.470000
6 7 5 3.0 19 0.00000000 1.429287 9.927788 1 36.720000
7 9 0 2.5 64 0.28125000 1.355100 8.029911 2 19.560000
8 11 120 3.5 29 0.03448276 1.336117 11.147484 1 252.630000
9 14 0 2.0 27 0.07407407 1.847756 7.445060 2 1.864342
10 16 20 2.5 57 0.24561404 1.582308 8.425177 2 9.490196
11 17 5 3.0 54 0.01851852 1.348305 9.315008 2 15.960000
12 18 0 1.5 5 1.00000000 1.643657 8.063648 2 6.526300
13 21 0 2.0 18 0.05555556 1.394964 8.752185 2 37.576955
14 22 20 2.0 48 0.16666667 1.617045 8.911028 1 11.592383
15 25 0 2.5 71 0.42253521 1.749114 7.271499 2 6.572772
16 26 0 2.0 50 0.30000000 1.464582 7.349908 2 9.849276
17 27 5 2.5 61 0.34426229 1.511217 8.379012 2 14.082827
18 28 5 2.0 123 0.06504065 1.538188 8.271017 2 11.658142
19 29 100 3.0 75 0.44000000 1.896483 7.968603 1 9.071897
20 30 100 3.0 95 0.55789474 1.768147 8.367626 1 2.300783
21 32 0 3.0 74 0.45945946 1.458793 9.453464 2 57.210000
22 33 15 3.0 66 0.24242424 1.572704 7.620507 1 8.700000
23 34 5 3.0 83 0.38554217 1.436063 11.636262 1 50.613265
24 35 5 2.5 58 0.31034483 1.313440 9.370347 2 52.605041
25 36 20 2.5 91 0.28571429 1.544032 8.451961 1 9.713351
26 37 10 2.5 34 0.23529412 1.524725 9.348687 2 6.920026
27 38 20 2.5 48 0.41666667 1.584892 7.780915 1 11.302639
28 39 40 2.5 51 0.15686274 1.535552 6.994035 1 18.999423
29 40 35 2.5 48 0.45833333 1.460579 9.073331 1 12.869075
30 41 5 3.0 58 0.43103448 1.747669 7.628542 2 3.860225
31 42 25 2.5 36 0.52777778
我做到了这一点,这是前两个轴的输出:
y<-rda(nestendca2)
summary(y)
PC1 PC2
Waterpeil 13.816422 -2.312641
hoogte_max 0.094747 -0.014497
Som 2.955029 10.812549
Leeftijd_riet 0.016476 0.019629
PFD 0.007361 -0.003386
oppervlakte 0.052943 0.039657
现在我想在逻辑回归中实现这两个轴,将它与在这些领域繁殖的猛禽的繁殖成功联系起来。
我该怎么做?
答案 0 :(得分:6)
如果你使用princomp包,你可以像这样提取负载:
PCA <- princomp(data,cor=T)
PCA
PCA$loadings
Loadings <- as.data.frame(PCA$loadings[,1:2])
如果你使用prcomp,你可以这样做:
PCA2 <- prcomp(data)
Loadings <- as.data.frame(PCA2$rotation[,1:2])
如果你使用素食主义者:
PCA3 <- rda(data)
Loadings <- as.data.frame(PCA3$CA$v.eig[,1:2])
答案 1 :(得分:6)
假设您在R中使用prcomp
。这是一种方法
pca <- prcomp(~ Murder + Rape + Assault, data = USArrests, scale = TRUE)
(loadings <- pca$rotation)
## PC1 PC2 PC3
## Murder -0.58260 0.53395 -0.61276
## Rape -0.53938 -0.81798 -0.19994
## Assault -0.60798 0.21402 0.76456
axes <- predict(pca, newdata = USArrests)
head(axes, 4)
## PC1 PC2 PC3
## Alabama -1.19803 0.83381 -0.162178
## Alaska -2.30875 -1.52396 0.038336
## Arizona -1.50333 -0.49830 0.878223
## Arkansas -0.17599 0.32473 0.071112
如果您愿意,现在可以在逻辑回归中使用这些新列(轴)。我将向您展示一个使用简单线性模型的示例。
dat <- cbind(USArrests, axes)
lm(UrbanPop ~ PC1 + PC2, data = dat)
## Call:
## lm(formula = UrbanPop ~ PC1 + PC2, data = dat)
## Coefficients:
## (Intercept) PC1 PC2
## 65.54 -2.58 -7.71
答案 2 :(得分:0)
我也使用素食主义者的rda。
我尝试了@ JT85建议的PCA3 $ CA $ v.eig,返回NULL
应为v而不是v.eig。像这样为我工作
data.rda <- rda(data)
data.rda.coord <- as.data.frame(data.rda$CA$v[,1:2])