|
1.正态分布(normal)
正态分布拟合方法有多种,下面使用R中的MASS包拟合。
library(MASS) ## loading package MASS
fitdistr(data,"normal") ##fitting gamma pdf parameters
mean sd
4.4015990 6.3839222
(0.1583169) (0.1119470)
使用fitdistr还可以拟合的分布有:"beta", "cauchy", "chi-squared","exponential", "f", "gamma","geometric", "log-normal", "lognormal","logistic", "negative binomial", "normal","Poisson", "t" and "weibull"。
2.泊松分布(poission)
library(MASS) ## loading package MASS
fitdistr(data,"poisson")
##检验拟合效果—拟合优度goodness of fit
library(vcd)## loading vcd package
gf<-goodfit(data,type="poisson",method= "MinChisq")
summary(gf)
Goodness-of-fit test for poissondistribution
X^2 df P(> X^2)
Pearson 176793643 47 0
p值为0,小于0.1,说明泊松分布假设不成立。
goodfit还可以得到"binomial","nbinomial"的拟合优度p值,方法除了卡方检验(MinChisq)外,还有最大似然估计(ML)。
更多信息可以参见:http://cran.r-project.org/doc/contrib/Ricci-distributions-en.pdf
3.幂律分布(Powerlaw)
Power-law distributions in empirical data介绍了幂律分布的统计检验方法。
可以使用R中的poweRlaw包
library("poweRlaw")
topcomduration<-read.table('topComDuration.txt');
##拟合一个离散的幂律分布
m_pl = displ$new(topcomduration$V1)
##得到最小值xMin
est = estimate_xmin(m_pl)
m_pl$setXmin(est)
##perform a parameter scan for each value of xmin
estimate_xmin(m_pl, pars=seq(1.8, 2.3, 0.1))
est
$KS
[1] 0.01294299
$xmin
[1] 3
$pars
[1] 4.125586
attr(,"class")
[1] "estimate_xmin"
##所有xmin样本
bs = bootstrap(m_pl, no_of_sims=1000, threads=4)
##指定范围
bs=bootstrap(m_pl, xmins = seq(2, 10, 1) ,no_of_sims=1000, threads=3)
##计算拟合优度p-value
bs_p = bootstrap_p(m_pl)
bs_p
$p
[1] 0.76
$gof
[1] 0.05412729
这里p值0.76大于0.1,表明拟合优度较好,呈幂律分布。
4.对数正态分布(log-normal)
可以采用fitdistr(data,"log-normal"),也可以使用poweRlaw包,用法与幂律分布类似。poweRlaw包可以得到拟合优度P值。
m_pl = displ$new(topcomduration$V1)
另外找到一个简单的工具,有部分分布拟合,如泊松分布:
http://www.mathwave.com/articles/distribution-fitting-goodness-of-fit.html。
好多内容还是没有消化,需要系统的学习一下统计知识了。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-27 19:27
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社