gpt4 book ai didi

r - 超过 2 个组的 R 上的马氏距离

转载 作者:行者123 更新时间:2023-12-01 09:57:14 25 4
gpt4 key购买 nike

我需要计算 500 个独立观察值的数字数据集的马哈拉诺比斯距离,这些观察值分为 12 个组(物种)。我知道如何比较两个矩阵,但我不明白如何从我的数据集(即 12 个物种之间)计算马哈拉诺比斯距离。R 文档给出

mahalanobis(x, center, cov, inverted = FALSE, ...)

x是矩阵,cov是协方差矩阵(cov(x))

但我不明白如何计算 12 个组的指标

我找到了 this question on mahalanobis但它并没有真正回答我的问题

最佳答案

如果您将数据组织在 500 x 12 data.framematrix 中,则获取距离很简单。为了向您展示,首先我们创建一个包含一些玩具数据的 data.frame:

set.seed(1) # To ensure reproducibility of the random numbers
df <- data.frame(sapply(LETTERS[1:12], function(x) rnorm(500)))
# Adding some outliers
df[1,1] <- 20
df[200,5] <- 60
head(df)
# A B C D E F G H
# 1 20.0000000 0.07730312 1.13496509 0.8500435 -0.88614959 -1.8054836 0.7391149 0.5205997
# 2 0.1836433 -0.29686864 1.11193185 -0.9253130 -1.92225490 -0.6780407 0.3866087 0.3775619
# 3 -0.8356286 -1.18324224 -0.87077763 0.8935812 1.61970074 -0.4733581 1.2963972 -0.6236588
# 4 1.5952808 0.01129269 0.21073159 -0.9410097 0.51926990 1.0274171 -0.8035584 -0.5726105
# 5 0.3295078 0.99160104 0.06939565 0.5389521 -0.05584993 -0.5973876 -1.6026257 0.3125012
# 6 -0.8204684 1.59396745 -1.66264885 -0.1819744 0.69641761 1.1598494 0.9332510 -0.7074278
# I J K L
# 1 -1.1346302 1.5579537 -1.5163733 -1.1378698
# 2 0.7645571 -0.7292970 0.6291412 -0.9518105
# 3 0.5707101 -1.5039509 -1.6781940 1.6192595
# 4 -1.3516939 -0.5667870 1.1797811 0.1678136
# 5 -2.0298855 -2.1044536 1.1176545 -0.9081778
# 6 0.5904787 0.5307319 -1.2377359 1.3417959

其中有 12 个物种,称为 A-L。以这种方式组织,您只需运行以下行:

dist.sq <- mahalanobis(x = df, center = colMeans(df), cov = cov(df))

请记住,该函数返回距离的平方!

plot(sqrt(dist.sq))

希望对您有所帮助。

关于r - 超过 2 个组的 R 上的马氏距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23538542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com