从数据估计分布

机器算法验证 r 分布
2022-03-01 00:59:28

我有一个由 生成的数据样本Rrnorm(50,0,1)因此数据显然呈正态分布。但是,R不“知道”有关数据的分布信息。

有没有一种方法R可以估计我的样本来自哪种分布?如果没有,我将使用该shapiro.test功能并继续进行。

1个回答

MASS 包fitdistr中的功能fitdistrplus 包中的一些功能。以下是后者的一些例子。

require(fitdistrplus)

set.seed(1)
dat <- rnorm(50,0,1)
f1 <- fitdist(dat,"norm")
f2 <- fitdist(dat,"logis")
f3 <- fitdist(dat,"cauchy")

所以例如

> f1
Fitting of the distribution ' norm ' by maximum likelihood 
Parameters:
      estimate Std. Error
mean 0.1004483 0.11639515
sd   0.8230380 0.08230325

你可以看到情节

plotdist(dat,"norm",para=list(mean=f1$estimate[1],sd=f1$estimate[2]))
plotdist(dat,"logis",para=list(location=f2$estimate[1],scale=f2$estimate[2]))
plotdist(dat,"cauchy",para=list(location=f3$estimate[1],scale=f3$estimate[2]))

所以它看起来像是一个正态分布

在此处输入图像描述

但也可能作为逻辑分布(您将需要更大的样本来区分它们的尾部)

在此处输入图像描述

尽管使用 qqplot 并查看 CDF,您可以看出这可能不是 Cauchy 分布

在此处输入图像描述