簡體   English   中英

如何在R中擬合多元正態分布?

[英]How to fit a multivariate normal distribution in R?

我需要將多元正態分布擬合到 R 中 Iris 數據集中的每個物種。我看到mvtnorm包可能有用; 但是,我想使用最大似然估計,但不確定如何在 R 中使用。有什么想法嗎?

如果你只是想適應的分配到每種,你可能想mvnorm.mleRfast包:

install.packages("Rfast")
library(Rfast)
iris.split <- split(iris[, 1:4], iris$Species)
iris.mvnorm <- lapply(iris.split, function(x) mvnorm.mle(as.matrix(x)))
iris.mvnorm[["setosa"]]
# $loglik
# [1] 44.91657
#
# $mu
# [1] 5.006 3.428 1.462 0.246
#
# $sigma
#              Sepal.Length Sepal.Width Petal.Length Petal.Width
# Sepal.Length     0.121764    0.097232     0.016028    0.010124
# Sepal.Width      0.097232    0.140816     0.011464    0.009112
# Petal.Length     0.016028    0.011464     0.029556    0.005948
# Petal.Width      0.010124    0.009112     0.005948    0.010884

其他物種存儲在iris.mvnorm[["versicolor"]]iris.mvnorm[["virginica"]]

您似乎正在尋找混合判別分析(因為類標簽是已知的)。 在這種情況下,你可以使用MclustDAmclust包。

 model= MclustDA(data = iris[,1:4], class = iris$Species)
 summary(model)

但是,如果您希望通過擬合多元高斯混合來對數據進行聚類,那么您可以使用Mclust函數。

  fit = Mclust(data = iris[,1:4], G=3)
  table(fit$classification, iris$Species)

 #   setosa versicolor virginica
 # 1     50          0         0
 # 2      0         45         0
 # 3      0          5        50

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM