ก่อนอื่นต่อไปนี้เป็นข้อคิดเห็นบางส่วน:
- พี
- พี> 0.05
- เป้าหมายที่นี่ไม่สามารถระบุด้วยความแน่นอนว่าการกระจายตัวอย่างของคุณเป็นอย่างไร เป้าหมายคือสิ่งที่ @whuber (ในความคิดเห็น) เรียกคำอธิบายโดยละเอียดเกี่ยวกับข้อมูล การมีการแจกแจงพารามิเตอร์แบบเจาะจงอาจมีประโยชน์ในฐานะแบบจำลองของข้อมูล
แต่เรามาสำรวจกัน ฉันจะใช้fitdistrplus
แพ็คเกจที่ยอดเยี่ยมซึ่งมีฟังก์ชั่นที่ดีสำหรับการจัดจำหน่ายที่เหมาะสม เราจะใช้ฟังก์ชั่นdescdist
เพื่อรับแนวคิดบางอย่างเกี่ยวกับการแจกแจงผู้สมัครที่เป็นไปได้
library(fitdistrplus)
library(logspline)
x <- c(37.50,46.79,48.30,46.04,43.40,39.25,38.49,49.51,40.38,36.98,40.00,
38.49,37.74,47.92,44.53,44.91,44.91,40.00,41.51,47.92,36.98,43.40,
42.26,41.89,38.87,43.02,39.25,40.38,42.64,36.98,44.15,44.91,43.40,
49.81,38.87,40.00,52.45,53.13,47.92,52.45,44.91,29.54,27.13,35.60,
45.34,43.37,54.15,42.77,42.88,44.26,27.14,39.31,24.80,16.62,30.30,
36.39,28.60,28.53,35.84,31.10,34.55,52.65,48.81,43.42,52.49,38.00,
38.65,34.54,37.70,38.11,43.05,29.95,32.48,24.63,35.33,41.34)
ตอนนี้ให้ใช้descdist
:
descdist(x, discrete = FALSE)
ความโด่งและความเบ้ของตัวอย่างของคุณนั้นเป็นจุดสีฟ้าที่ชื่อว่า "การสังเกต" ดูเหมือนว่าการแจกแจงที่เป็นไปได้ ได้แก่ การแจกแจงแบบ Weibull, Lognormal และอาจเป็นแกมมา
มาพอดีกับการแจกแจงแบบ Weibull และการแจกแจงแบบปกติ:
fit.weibull <- fitdist(x, "weibull")
fit.norm <- fitdist(x, "norm")
ตอนนี้ตรวจสอบความพอดีสำหรับคนปกติ:
plot(fit.norm)
และสำหรับ Weibull พอดี:
plot(fit.weibull)
ทั้งสองดูดี แต่ตัดสินโดย QQ-Plot Weibull อาจดูดีขึ้นเล็กน้อยโดยเฉพาะที่ส่วนท้าย ในทำนองเดียวกัน AIC ของ Weibull พอดีต่ำกว่าเมื่อเทียบกับปกติ:
fit.weibull$aic
[1] 519.8537
fit.norm$aic
[1] 523.3079
การจำลองการทดสอบ Kolmogorov-Smirnov
ฉันจะใช้ขั้นตอนของ @ Aksakal อธิบายไว้ที่นี่เพื่อจำลอง KS-statistic ภายใต้ null
n.sims <- 5e4
stats <- replicate(n.sims, {
r <- rweibull(n = length(x)
, shape= fit.weibull$estimate["shape"]
, scale = fit.weibull$estimate["scale"]
)
estfit.weibull <- fitdist(r, "weibull") # added to account for the estimated parameters
as.numeric(ks.test(r
, "pweibull"
, shape= estfit.weibull$estimate["shape"]
, scale = estfit.weibull$estimate["scale"])$statistic
)
})
ECDF ของสถิติ KS จำลองมีลักษณะดังนี้:
plot(ecdf(stats), las = 1, main = "KS-test statistic simulation (CDF)", col = "darkorange", lwd = 1.7)
grid()
พี
fit <- logspline(stats)
1 - plogspline(ks.test(x
, "pweibull"
, shape= fit.weibull$estimate["shape"]
, scale = fit.weibull$estimate["scale"])$statistic
, fit
)
[1] 0.4889511
สิ่งนี้เป็นการยืนยันข้อสรุปเชิงกราฟิกของเราว่าตัวอย่างเข้ากันได้กับการแจกแจงแบบ Weibull
ตามที่อธิบายไว้ที่นี่เราสามารถใช้ bootstrapping เพื่อเพิ่มช่วงความเชื่อมั่นแบบจุดตามจุดใน Weibull PDF หรือ CDF โดยประมาณ:
xs <- seq(10, 65, len=500)
true.weibull <- rweibull(1e6, shape= fit.weibull$estimate["shape"]
, scale = fit.weibull$estimate["scale"])
boot.pdf <- sapply(1:1000, function(i) {
xi <- sample(x, size=length(x), replace=TRUE)
MLE.est <- suppressWarnings(fitdist(xi, distr="weibull"))
dweibull(xs, shape=MLE.est$estimate["shape"], scale = MLE.est$estimate["scale"])
}
)
boot.cdf <- sapply(1:1000, function(i) {
xi <- sample(x, size=length(x), replace=TRUE)
MLE.est <- suppressWarnings(fitdist(xi, distr="weibull"))
pweibull(xs, shape= MLE.est$estimate["shape"], scale = MLE.est$estimate["scale"])
}
)
#-----------------------------------------------------------------------------
# Plot PDF
#-----------------------------------------------------------------------------
par(bg="white", las=1, cex=1.2)
plot(xs, boot.pdf[, 1], type="l", col=rgb(.6, .6, .6, .1), ylim=range(boot.pdf),
xlab="x", ylab="Probability density")
for(i in 2:ncol(boot.pdf)) lines(xs, boot.pdf[, i], col=rgb(.6, .6, .6, .1))
# Add pointwise confidence bands
quants <- apply(boot.pdf, 1, quantile, c(0.025, 0.5, 0.975))
min.point <- apply(boot.pdf, 1, min, na.rm=TRUE)
max.point <- apply(boot.pdf, 1, max, na.rm=TRUE)
lines(xs, quants[1, ], col="red", lwd=1.5, lty=2)
lines(xs, quants[3, ], col="red", lwd=1.5, lty=2)
lines(xs, quants[2, ], col="darkred", lwd=2)
#-----------------------------------------------------------------------------
# Plot CDF
#-----------------------------------------------------------------------------
par(bg="white", las=1, cex=1.2)
plot(xs, boot.cdf[, 1], type="l", col=rgb(.6, .6, .6, .1), ylim=range(boot.cdf),
xlab="x", ylab="F(x)")
for(i in 2:ncol(boot.cdf)) lines(xs, boot.cdf[, i], col=rgb(.6, .6, .6, .1))
# Add pointwise confidence bands
quants <- apply(boot.cdf, 1, quantile, c(0.025, 0.5, 0.975))
min.point <- apply(boot.cdf, 1, min, na.rm=TRUE)
max.point <- apply(boot.cdf, 1, max, na.rm=TRUE)
lines(xs, quants[1, ], col="red", lwd=1.5, lty=2)
lines(xs, quants[3, ], col="red", lwd=1.5, lty=2)
lines(xs, quants[2, ], col="darkred", lwd=2)
#lines(xs, min.point, col="purple")
#lines(xs, max.point, col="purple")
การกระจายอัตโนมัติที่เหมาะสมกับ GAMLSS
gamlss
R
fitDist
type = "realline"
type = "realsplus"
kk=2klog(n)
library(gamlss)
library(gamlss.dist)
library(gamlss.add)
x <- c(37.50,46.79,48.30,46.04,43.40,39.25,38.49,49.51,40.38,36.98,40.00,
38.49,37.74,47.92,44.53,44.91,44.91,40.00,41.51,47.92,36.98,43.40,
42.26,41.89,38.87,43.02,39.25,40.38,42.64,36.98,44.15,44.91,43.40,
49.81,38.87,40.00,52.45,53.13,47.92,52.45,44.91,29.54,27.13,35.60,
45.34,43.37,54.15,42.77,42.88,44.26,27.14,39.31,24.80,16.62,30.30,
36.39,28.60,28.53,35.84,31.10,34.55,52.65,48.81,43.42,52.49,38.00,
38.65,34.54,37.70,38.11,43.05,29.95,32.48,24.63,35.33,41.34)
fit <- fitDist(x, k = 2, type = "realplus", trace = FALSE, try.gamlss = TRUE)
summary(fit)
*******************************************************************
Family: c("WEI2", "Weibull type 2")
Call: gamlssML(formula = y, family = DIST[i], data = sys.parent())
Fitting method: "nlminb"
Coefficient(s):
Estimate Std. Error t value Pr(>|t|)
eta.mu -24.3468041 2.2141197 -10.9962 < 2.22e-16 ***
eta.sigma 1.8661380 0.0892799 20.9021 < 2.22e-16 ***
จากข้อมูลของ AIC การกระจาย Weibull (โดยเฉพาะอย่างยิ่งWEI2
การแบ่งพารามิเตอร์พิเศษของมัน) เหมาะกับข้อมูลที่ดีที่สุด ตัวแปรที่แน่นอนของการกระจายWEI2
เป็น detailled ในเอกสารนี้ในหน้า 279 ลองตรวจสอบพอดีโดยดูที่เหลือในส่วนพล็อตหนอน (พื้น de-แนวโน้ม QQ พล็อต):
เราคาดว่าส่วนที่เหลือจะอยู่ใกล้กับเส้นแนวนอนกลางและ 95% ของพวกมันอยู่ระหว่างเส้นโค้งจุดบนและล่างซึ่งทำหน้าที่เป็นช่วงความเชื่อมั่นแบบจุด 95% ในกรณีนี้พล็อตหนอนดูดีสำหรับฉันแสดงว่าการกระจาย Weibull นั้นเหมาะสมอย่างยิ่ง