在 R 中拟合多维平面
Fitting a multidimensional plane in R
我有多维(100 多个变量)数据,我希望其中的子集或多或少符合一个平面。
将平面与 R 中的该子集相匹配的最佳方法是什么?
我想用这个平面来计算其他一些点到它的距离并绘制它的一些尺寸。
主成分可以帮你解决这个问题。假设您的数据确实与平面匹配,前两个主成分应该能很好地描述该平面。
你没有提供任何样本数据,所以我将用一些人工数据来说明。我的数据是十维的,但所有点都靠近一个平面(其他八个方向有一些误差)。
## Sample data
set.seed(2018)
NPts = 1000
x = runif(NPts)
y = runif(NPts)
cx = rnorm(1)
cy = rnorm(1)
V1 = cx*x + cy*y + rnorm(NPts, 0, 0.1)
MyData = data.frame(V1)
for(i in 2:10) {
cx=rnorm(1)
cy= rnorm(1)
name = paste0("V", i)
MyData[,name] = cx*x + cy*y + rnorm(NPts, 0, 0.1)
}
由于所有变量都是 x 和 y 的线性组合(加上一个小误差),数据只是二维的并且位于 x-y 平面附近。在这里,我将 x 和 y 视为潜在变量。它们不会出现在数据中,但会驱动所有其他变量的行为。
## Principal Components Analysis
PCA = prcomp(MyData)
plot(PCA)
是的,数据基本上是二维的。剩下的就是获得前两个主成分。它们存储在从 prcomp
.
返回的结构中
PCA$rotation[,1:2]
PC1 PC2
V1 0.42752681 -0.204894748
V2 -0.64546573 -0.056503044
V3 0.04606707 -0.009614603
V4 0.01956126 -0.539070667
V5 0.15987617 0.600122935
V6 -0.06255399 0.054053476
V7 0.26497132 0.388920891
V8 0.21645814 -0.366709584
V9 0.49363625 -0.116954131
V10 0.08874645 0.040656622
我们要找的平面就是这两个向量所跨越的平面。
我有多维(100 多个变量)数据,我希望其中的子集或多或少符合一个平面。 将平面与 R 中的该子集相匹配的最佳方法是什么?
我想用这个平面来计算其他一些点到它的距离并绘制它的一些尺寸。
主成分可以帮你解决这个问题。假设您的数据确实与平面匹配,前两个主成分应该能很好地描述该平面。
你没有提供任何样本数据,所以我将用一些人工数据来说明。我的数据是十维的,但所有点都靠近一个平面(其他八个方向有一些误差)。
## Sample data
set.seed(2018)
NPts = 1000
x = runif(NPts)
y = runif(NPts)
cx = rnorm(1)
cy = rnorm(1)
V1 = cx*x + cy*y + rnorm(NPts, 0, 0.1)
MyData = data.frame(V1)
for(i in 2:10) {
cx=rnorm(1)
cy= rnorm(1)
name = paste0("V", i)
MyData[,name] = cx*x + cy*y + rnorm(NPts, 0, 0.1)
}
由于所有变量都是 x 和 y 的线性组合(加上一个小误差),数据只是二维的并且位于 x-y 平面附近。在这里,我将 x 和 y 视为潜在变量。它们不会出现在数据中,但会驱动所有其他变量的行为。
## Principal Components Analysis
PCA = prcomp(MyData)
plot(PCA)
是的,数据基本上是二维的。剩下的就是获得前两个主成分。它们存储在从 prcomp
.
PCA$rotation[,1:2]
PC1 PC2
V1 0.42752681 -0.204894748
V2 -0.64546573 -0.056503044
V3 0.04606707 -0.009614603
V4 0.01956126 -0.539070667
V5 0.15987617 0.600122935
V6 -0.06255399 0.054053476
V7 0.26497132 0.388920891
V8 0.21645814 -0.366709584
V9 0.49363625 -0.116954131
V10 0.08874645 0.040656622
我们要找的平面就是这两个向量所跨越的平面。