(PS) Trước hết tôi nghĩ Glen_b đã đúng trong các nhận xét trên của mình về tính hữu ích của thử nghiệm như vậy: dữ liệu thực chắc chắn không được phân phối chính xác Pareto và đối với hầu hết các ứng dụng thực tế, câu hỏi sẽ là "xấp xỉ Pareto tốt như thế nào?" - và cốt truyện QQ là một cách tốt để thể hiện chất lượng của một xấp xỉ như vậy.
pks.test
Dưới đây là một vài dòng mã R.
Đầu tiên xác định các chức năng cơ bản để đối phó với các bản phân phối Pareto.
# distribution, cdf, quantile and random functions for Pareto distributions
dpareto <- function(x, xm, alpha) ifelse(x > xm , alpha*xm**alpha/(x**(alpha+1)), 0)
ppareto <- function(q, xm, alpha) ifelse(q > xm , 1 - (xm/q)**alpha, 0 )
qpareto <- function(p, xm, alpha) ifelse(p < 0 | p > 1, NaN, xm*(1-p)**(-1/alpha))
rpareto <- function(n, xm, alpha) qpareto(runif(n), xm, alpha)
Hàm sau tính toán MLE của các tham số (biện minh trong Wikipedia ).
pareto.mle <- function(x)
{
xm <- min(x)
alpha <- length(x)/(sum(log(x))-length(x)*log(xm))
return( list(xm = xm, alpha = alpha))
}
p
pareto.test <- function(x, B = 1e3)
{
a <- pareto.mle(x)
# KS statistic
D <- ks.test(x, function(q) ppareto(q, a$xm, a$alpha))$statistic
# estimating p value with parametric bootstrap
B <- 1e5
n <- length(x)
emp.D <- numeric(B)
for(b in 1:B)
{
xx <- rpareto(n, a$xm, a$alpha);
aa <- pareto.mle(xx)
emp.D[b] <- ks.test(xx, function(q) ppareto(q, aa$xm, aa$alpha))$statistic
}
return(list(xm = a$xm, alpha = a$alpha, D = D, p = sum(emp.D > D)/B))
}
Bây giờ, ví dụ, một mẫu đến từ phân phối Pareto:
> # generating 100 values from Pareto distribution
> x <- rpareto(100, 0.5, 2)
> pareto.test(x)
$xm
[1] 0.5007593
$alpha
[1] 2.080203
$D
D
0.06020594
$p
[1] 0.69787
χ2( 2 )
> # generating 100 values from chi square distribution
> x <- rchisq(100, df=2)
> pareto.test(x)
$xm
[1] 0.01015107
$alpha
[1] 0.2116619
$D
D
0.4002694
$p
[1] 0
Lưu ý rằng tôi không cho rằng thử nghiệm này không thiên vị: khi mẫu nhỏ, một số sai lệch có thể tồn tại. Bootstrap tham số không tính đến độ không đảm bảo của ước lượng tham số (nghĩ xem điều gì sẽ xảy ra khi sử dụng chiến lược này để kiểm tra một cách ngây thơ nếu giá trị trung bình của một biến số bình thường với phương sai không xác định bằng 0).
PS Wikipedia nói một vài từ về điều này. Dưới đây là hai câu hỏi khác mà một chiến lược tương tự đã được đề xuất: Mức độ phù hợp của thử nghiệm đối với hỗn hợp , độ tốt của thử nghiệm độ phù hợp đối với phân phối gamma .