如何在 R 中拟合多元正态分布?
How to fit a multivariate normal distribution in R?
我需要为 R 中 Iris 数据集中的每个物种拟合多元正态分布。我看到 mvtnorm
包可能有用;但是,我想使用最大似然估计,但不确定如何在 R 中这样做。有什么想法吗?
您似乎在寻找混合判别分析(因为 class 标签已知)。在这种情况下,您可以使用 mclust
包中的 MclustDA
。
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
如果您只想对每个物种进行分布,您可能需要 Rfast
包中的 mvnorm.mle
:
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"]]
。
我需要为 R 中 Iris 数据集中的每个物种拟合多元正态分布。我看到 mvtnorm
包可能有用;但是,我想使用最大似然估计,但不确定如何在 R 中这样做。有什么想法吗?
您似乎在寻找混合判别分析(因为 class 标签已知)。在这种情况下,您可以使用 mclust
包中的 MclustDA
。
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
如果您只想对每个物种进行分布,您可能需要 Rfast
包中的 mvnorm.mle
:
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"]]
。