我用插入符包中的R預處理數據,如:關於PCA in R?
> trans <- preProcess(data, method = "pca").
> transformedData <- predict(trans, data)
這裏是我的問題,即在預測對原始數據的名字被錯過後,但電腦的列表。我如何找到這些PC與我的原始預測變量之間的關係,我知道,這些預測變量有一些負載或係數。
有人能給我一個提示,更好地使用脫字符號方法。謝謝!
我用插入符包中的R預處理數據,如:關於PCA in R?
> trans <- preProcess(data, method = "pca").
> transformedData <- predict(trans, data)
這裏是我的問題,即在預測對原始數據的名字被錯過後,但電腦的列表。我如何找到這些PC與我的原始預測變量之間的關係,我知道,這些預測變量有一些負載或係數。
有人能給我一個提示,更好地使用脫字符號方法。謝謝!
我不是很熟悉插入符號,但是不能使用princomp或prcomp?
例如:
# some random data
x <-data.frame(a=1:25+rnorm(25),
b=3:27+rnorm(25,mean=1),
c=25:1 + rnorm(25,mean=2,sd=2))
pca <- prcomp(x, retx = TRUE, center = TRUE, scale. = TRUE)
transformedData <- pca$x
loadings <- pca$rotation
eigenvalues <- pca$sdev
也可參閱"5 functions to do Principal Components Analysis in R"這一資源。
我不確定我是否理解你的問題100%,但我猜你有一個缺少名稱的數據集,並且你想快速確定變量之間的關係(線性也許),確定'主成分'?
這是一個非常棒的cross validated
post向您展示了一些關於PCA和SVD的知識。
這裏是你展示它是如何工作使用prcomp
功能很簡單的例子:
>library(ggplot2)
>data(mpg)
>data <- mpg[,c("displ", "year", "cyl", "cty", "hwy")]
# get the numeric columns only for this easy demo
>prcomp(data, scale=TRUE)
Standard deviations:
[1] 1.8758132 1.0069712 0.5971261 0.2658375 0.2002613
Rotation:
PC1 PC2 PC3 PC4 PC5
displ 0.49818034 -0.07540283 0.4897111 0.70386376 -0.10435326
year 0.06047629 -0.98055060 -0.1846807 -0.01604536 0.02233245
cyl 0.49820578 -0.04868461 0.5028416 -0.68062021 0.18255766
cty -0.50575849 -0.09911736 0.4348234 0.15195854 0.72264881
hwy -0.49412379 -0.14366800 0.5330619 -0.13410105 -0.65807527
這裏是你如何解釋結果:
(1)標準差,這是對角線當應用奇異值分解時,矩陣位於中間。解釋每個「主要組件」有多少差異? /層/透明度解釋矩陣的整體方差。 例如,
70 % = 1.8758132^2/(1.8758132^2 + 1.0069712^2 + 0.5971261^2 + 0.2658375^2 + 0.2002613^2)
其指示第一列本身已經解釋了整個矩陣的方差的70%。
(2)現在讓我們看看在旋轉矩陣/ V的第一列:
PC1
displ 0.49818034
year 0.06047629
cyl 0.49820578
cty -0.50575849
hwy -0.49412379
我們可以看到:displ
有cyl
和積極的關係與cty
和hwy
負相關關係。而在這個顯性層面,year
並不那麼明顯。
有意義的是,你的車有更多的排量或汽缸,它可能有一個非常高的MPG。
這裏是變量之間的情節只爲你的信息。
pairs(data)
你想要的是看結果列表的rotation
變量:
> trans <- preProcess(data, method = "pca").
> transformedData <- predict(trans, data)
> trans$rotation
如果你想看看在一個特定的PC,說這兩個首當其衝:
> trans$rotation[,c(1,2)]
你在問什麼?什麼是PC的?你看過biplot以及每臺電腦有多少變化? – cianius