我正在尝试执行 KS 测试以评估将 Pearson III 分布拟合到我的数据的适用性。fitdist
使用包中实现的mlefitdistrplus
我们获得可以直接插入的参数估计ks.test
:
library(FAdist)
library(fitdistrplus)
> summary(x) #summary of my data vector
Min. 1st Qu. Median Mean 3rd Qu. Max.
144.8 646.0 1031.0 1130.0 1472.0 4283.0
fit.p3 <- fitdist(x, "gamma3", start=list(shape=1,scale=100, thres=100))
> fit.p3
Fitting of the distribution ' gamma3 ' by maximum likelihood
Parameters:
estimate Std. Error
shape 2.60075 0.2408922
scale 400.45463 28.5769539
thres 88.22411 29.6652668
> ks.test(x, "pgamma3", shape= fit.p3$estimate["shape"],
+ scale = fit.p3$estimate["scale"], thres = fit.p3$estimate["thres"])
One-sample Kolmogorov-Smirnov test
data: x
D = 0.0328, p-value = 0.2405
alternative hypothesis: two-sided
这工作正常。
旁白:我知道使用数据中的参数估计执行 KS 测试会使测试无效。我省略了我用来解决这个问题的模拟过程,以确保我的问题的清晰性和代码的简单性。
现在,计算 L 矩:
library(lmomco)
lmom <- lmom.ub(x)
para <- parpe3(lmom)
> para
$type
[1] "pe3"
$para
mu sigma gamma
1129.738563 628.035773 1.040752
$source
[1] "parpe3"
ks.test
需要使用pgamma3
只接受shape
、scale
和thres
参数的函数。我的问题是如何适应ks.test
使用 L 矩而不是 mle 估计?