我怎么知道R中遵循什么数据分布?

时间:2018-06-22 16:09:42

标签: r distribution

我有以下数据框。

IN <- c(3.5, 5.75, 9, 13.25, 13, 9.5, 9.25, 6.75, 7, 4.25, 3.25, 1.75, 0)
OUT <- c(0.25, 2, 5.25, 8.5, 10.5, 11, 11.75, 9.25, 9.5, 7, 3.75, 4, 3.5)
dat <- data.frame(IN, OUT)
rownames(dat) <- c("10~11", "11~12", "12~13", "13~14", "14~15", "15~16", "16~17", "17~18", "18~19", "19~20", "20~21", "21~22", "22~23")

此数据是从上午10:00到下午11:00在餐厅中每小时测量四天的平均人数。

我想分别知道IN和OUT数据的分布。我如何在R中知道这一点?否则,有没有一种好的方法可以通过R对此进行分析?

2 个答案:

答案 0 :(得分:2)

fitdistrplus软件包可以帮助您解决此类问题,但是您需要知道要检查哪些候选分布。让我们尝试正常,均匀和指数:

library(fitdistrplus)
fit.in1 <- fitdist(dat$IN, "norm")
fit.in2 <- fitdist(dat$IN, "unif")
fit.in3 <- fitdist(dat$IN, "exp")

然后您可以绘制一些诊断信息:

par(mfrow=c(2,2)
denscomp(list(fit.in1,fit.in2,fit.in3),legendtext=c("Normal","Uniform","Exponential"))
qqcomp(list(fit.in1,fit.in2,fit.in3),legendtext=c("Normal","Uniform","Exponential"))
cdfcomp(list(fit.in1,fit.in2,fit.in3),legendtext=c("Normal","Uniform","Exponential"))
ppcomp(list(fit.in1,fit.in2,fit.in3),legendtext=c("Normal","Uniform","Exponential"))

enter image description here

正常吗?也许:

> shapiro.test(dat$IN)

    Shapiro-Wilk normality test

data:  dat$IN
W = 0.96548, p-value = 0.8352

在[0,14]上是否统一?也许

> ks.test(dat$IN,"punif",0,14)

    One-sample Kolmogorov-Smirnov test

data:  dat$IN
D = 0.16758, p-value = 0.8024
alternative hypothesis: two-sided

这些检验的零假设是您所认为的分布。另一种选择是,发行版不是您要测试的对象。因此,较小的p值意味着特定的分布不适合拟合。

答案 1 :(得分:0)

您可以按以下方式使用fitdistrplus软件包:

@EntityGraph(value = "Country.cities", type = EntityGraph.EntityGraphType.LOAD)
countryRepository.findAll();

详细了解CF图herehere