R中的相反值
我尝试使用来自的代码对Car93数据进行PCA,但我收到了非常奇怪的结果,例如,我收到R中的相反值,r,pca,R,Pca,我尝试使用来自的代码对Car93数据进行PCA,但我收到了非常奇怪的结果,例如,我收到 round(loadings(cars.pca)[,1], 3) Min.Price Price Max.Price MPG.city -0.005 -0.005 -0.005 0.005 MPG.highway Engi
round(loadings(cars.pca)[,1], 3)
Min.Price Price Max.Price MPG.city
-0.005 -0.005 -0.005 0.005
MPG.highway EngineSize Horsepower RPM
0.005 -0.001 -0.033 0.564
Rev.per.mile Fuel.tank.capacity Passengers Length
0.528 -0.003 -0.001 -0.014
Wheelbase Width Turn.circle Weight
-0.007 -0.004 -0.003 -0.634
但我应该接受
Min.Price Price Max.Price MPG.city
0.005 0.005 0.005 -0.005
MPG.highway EngineSize Horsepower RPM
-0.005 0.001 0.033 -0.564
Rev.per.mile Fuel.tank.capacity Passengers Length
-0.528 0.003 0.001 0.014
Wheelbase Width Turn.circle Weight
0.007 0.004 0.003 0.634
我不明白为什么会这样。。。
我还得到了令人难以置信的总结:
> summary(cars.pca)
Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4
Standard deviation 809.7715704 462.9240342 269.70957406 2.726051e+01
Proportion of Variance 0.6948358 0.2270788 0.07708145 7.874538e-04
Cumulative Proportion 0.6948358 0.9219146 0.99899602 9.997835e-01
Comp.5 Comp.6 Comp.7 Comp.8
Standard deviation 9.8543848085 8.3562565211 4.076212e+00 2.657464e+00
Proportion of Variance 0.0001029002 0.0000739913 1.760641e-05 7.483277e-06
Cumulative Proportion 0.9998863744 0.9999603657 9.999780e-01 9.999855e-01
Comp.9 Comp.10 Comp.11 Comp.12
Standard deviation 2.463855e+00 1.686161e+00 1.455246e+00 1.131083e+00
Proportion of Variance 6.432611e-06 3.012694e-06 2.244038e-06 1.355645e-06
Cumulative Proportion 9.999919e-01 9.999949e-01 9.999971e-01 9.999985e-01
Comp.13 Comp.14 Comp.15 Comp.16
Standard deviation 1.026482e+00 5.249720e-01 2.923534e-01 2.182833e-02
Proportion of Variance 1.116502e-06 2.920313e-07 9.056773e-08 5.048914e-10
Cumulative Proportion 9.999996e-01 9.999999e-01 1.000000e+00 1.000000e+00
有人能解释为什么会这样吗?我的R是否能够记住其他数据并以某种方式使用它们?(一个月前,我使用了
data包mva
很多年前就存在了,但现在它的所有功能都包含在包stats
中,因此您所指的文本有点旧。此外,该部分
keep <- rep(F, ncol(Cars93))
for(i in 1:ncol(Cars93)){
keep[i] <- is.numeric(Cars93[,i])
if(any(is.na(Cars93[,i]))) keep[i] <- F
}
突然,所有基于T==TRUE和F==FALSE的代码都被破坏了。:)您不能用这种方式重新定义TRUE和FALSE
附加
问:“我的R是否能够记住其他数据并以某种方式使用它们?(一个月前,我使用了数据,现在使用的是“F”“正如您链接到的代码所声称的,princomp
在包mva中,它在CRAN上似乎不存在。在所有R发行版附带的stats库中有一个princomp
函数。在该函数的文档中,它明确指出“载荷和分数列的符号是任意的,所以在PCA的不同程序之间,甚至在R的不同版本之间可能会有所不同”。但我怎么知道哪些符号是正确的呢?“载荷和分数列的符号是任意的”。任意的。它们都是正确的。
keep <- rep(F, ncol(Cars93))
for(i in 1:ncol(Cars93)){
keep[i] <- is.numeric(Cars93[,i])
if(any(is.na(Cars93[,i]))) keep[i] <- F
}
keep2 <- sapply(Cars93, function(COL) is.numeric(COL) & !any(is.na(COL)))
# isTRUE(all(keep == keep2)) # yes
T <- FALSE
F <- TRUE