如何知道椭球体的长度而不使用特征值绘制它们

问题描述 投票:0回答:1

我有 3 个参数:A、B 和 C,每个参数都有 20000 个数据。当我将它们放在 3D 图中时,它们形成一个点云,其中 A 在 X 轴,B 在 Y 轴,C 在 Z 轴。我想在 90% 协方差误差椭圆体中修复此点云,并分别确定 > 1000 个样本中的长度,即宽度、高度和拉伸度。宽度将在 X 轴上,高度将在 Y 轴上,拉伸将在 Z 轴上)。因此,对于每个样本:

1) 我用 var() 计算 协变矩阵

covMat <- var(cbind(A,B,C)) covMat A B C A 0.08269010 0.05330448 0.05329601 B 0.05330448 0.33033311 0.14017367 C 0.05329601 0.14017367 0.18732865

2) 我用 eigen() 计算 特征值

evals<-eigen(covMat)$values evals [1] 0.43162433 0.10861830 0.06010923
#我得到3个特征值,从大到小排序

3) 我确定 90% 协方差误差椭圆体的 长度

ell.len <- 2*sqrt(6.251*evals) ell.len [1] 2.971533 1.666728 1.325708

棘手的事情:由于特征值总是按递减顺序我如何知道 ell.len 的哪个数字对应于每个长度(宽度、高度和拉伸),因为有时高度可能会更大比宽度和拉伸以及其他组合。我想知道这一点,因为我想在每个样本中确定椭圆体何时是长长(高度 > 宽度 > 拉伸)、扁圆(高度 > 宽度 > 拉伸)和其他可能的组合 (n = 1000)。

提前非常感谢您,希望我的问题很清楚。

r eigenvalue
1个回答
1
投票
您可以绕过

eigen

 功能并仅使用

evals <- .Internal(La_rg(covMat, TRUE))$values
    
© www.soinside.com 2019 - 2025. All rights reserved.