প্রথমত, এখানে কিছু দ্রুত মন্তব্য দেওয়া হয়েছে:
- আনুমানিক প্যারামিটার সহ একটি কলমোভরভ-স্মারনভ-পরীক্ষা (কেএস-টেস্ট) এর ভ্যালুগুলি বেশ ভুল হবে। সুতরাং দুর্ভাগ্যক্রমে, আপনি কেবলমাত্র একটি বিতরণ মাপসই করতে পারবেন না এবং তারপরে আপনার নমুনাটি পরীক্ষা করতে একটি কলমোগোরভ-স্মারনভ-পরীক্ষায় অনুমিত প্যারামিটারগুলি ব্যবহার করুন।p
- আপনার নমুনা কখনই একটি নির্দিষ্ট বিতরণ অনুসরণ করবে না । সুতরাং কেএস-পরীক্ষা থেকে আপনার ভ্যালুগুলি বৈধ এবং হতে পারে তবে এর অর্থ হ'ল আপনার ডেটা এই নির্দিষ্ট বিতরণটি অনুসরণ করে তা অস্বীকার করতে পারবেন না । অন্য সূত্রটি হ'ল আপনার নমুনা একটি নির্দিষ্ট বিতরণের সাথে সামঞ্জস্যপূর্ণ। তবে এই প্রশ্নের উত্তর "আমার ডেটা কি বিতরণ জাইকে ঠিক অনুসরণ করে?" সর্বদা না।p>0.05
- আপনার নমুনা কোন বিতরণ অনুসরণ করে তা নিশ্চিত করেই এখানে লক্ষ্য নির্ধারণ করা যাবে না। @ হুবার (মন্তব্যে) ডেটার পার্সিমোনিয়াস আনুমানিক বিবরণটিকে লক্ষ্য বলে । একটি নির্দিষ্ট প্যারামেট্রিক বিতরণ তথ্য উপাত্তের মডেল হিসাবে দরকারী হতে পারে।
তবে কিছু অন্বেষণ করা যাক। আমি দুর্দান্ত 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)
আপনার নমুনার কুর্তোসিস এবং স্কোয়ার স্কিউনেসটি "পর্যবেক্ষণ" নামে একটি নীল বিন্দু হিসাবে প্ল্যাটটেট। দেখে মনে হয় যে সম্ভাব্য বিতরণগুলির মধ্যে ওয়েবুল, লগনারমাল এবং সম্ভবত গামা বিতরণ অন্তর্ভুক্ত রয়েছে।
আসুন একটি ওয়েইবুল বিতরণ এবং একটি সাধারণ বিতরণ মাপসই:
fit.weibull <- fitdist(x, "weibull")
fit.norm <- fitdist(x, "norm")
এখন স্বাভাবিকের জন্য ফিটটি পরীক্ষা করুন:
plot(fit.norm)
এবং ওয়েবুলের জন্য উপযুক্ত:
plot(fit.weibull)
উভয়ই দেখতে দেখতে দেখতে বেশ ভাল তবে কিউকিউ-প্লট দ্বারা বিচার করা, ওয়েবুল সম্ভবত কিছুটা ভাল দেখায়, বিশেষত লেজগুলিতে। স্বতঃস্ফূর্তভাবে, ওয়েইবুল ফিটের এআইসি স্বাভাবিক ফিটের তুলনায় কম:
fit.weibull$aic
[1] 519.8537
fit.norm$aic
[1] 523.3079
কোলমোগোরভ-স্মারনভ পরীক্ষার সিমুলেশন
আমি শূন্যের নীচে কেএস-পরিসংখ্যান অনুকরণ করতে এখানে বর্ণিত @ আকাকালের পদ্ধতিটি ব্যবহার করব ।
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
)
})
সিমুলেটেড কেএস-পরিসংখ্যানগুলির ইসিডিএফ দেখতে নীচের মত দেখাচ্ছে:
plot(ecdf(stats), las = 1, main = "KS-test statistic simulation (CDF)", col = "darkorange", lwd = 1.7)
grid()
পরিশেষে, কেএস-পরিসংখ্যানের সিমুলেটেড নাল বিতরণ ব্যবহার করে আমাদের ভ্যালুটি হ'ল:p
fit <- logspline(stats)
1 - plogspline(ks.test(x
, "pweibull"
, shape= fit.weibull$estimate["shape"]
, scale = fit.weibull$estimate["scale"])$statistic
, fit
)
[1] 0.4889511
এটি আমাদের গ্রাফিকাল উপসংহারটিকে নিশ্চিত করে যে নমুনাটি ওয়েইবুল বিতরণের সাথে সামঞ্জস্যপূর্ণ।
এখানে বর্ণিত হিসাবে , আমরা অনুমান করা ওয়েইবুল পিডিএফ বা সিডিএফ-তে পয়েন্টওয়াইজ আস্থার অন্তরগুলি যুক্ত করতে বুটস্ট্র্যাপিং ব্যবহার করতে পারি:
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
প্যাকেজের R
অফার বিভিন্ন ডিস্ট্রিবিউশন চেষ্টা এবং "শ্রেষ্ঠ" GAIC (সাধারণ Akaike তথ্য মাপদণ্ড) অনুযায়ী নির্বাচন করতে ক্ষমতা। মূল কাজটি হ'ল fitDist
। এই ফাংশনটির একটি গুরুত্বপূর্ণ বিকল্পটি চেষ্টা করা হয় এমন বন্টনের ধরণ। উদাহরণস্বরূপ, সেটিং type = "realline"
পুরো বাস্তব লাইনে সংজ্ঞায়িত সমস্ত বাস্তবায়িত বিতরণ type = "realsplus"
চেষ্টা করবে যেখানে কেবল সত্য পজিটিভ লাইনে সংজ্ঞায়িত বিতরণগুলি চেষ্টা করবে। আর একটি গুরুত্বপূর্ণ বিকল্প হ'ল প্যারামিটার , যা জিএআইসির জন্য জরিমানা। নীচের উদাহরণে, আমি প্যারামিটার সেট করেছিলাম যার অর্থ ক্লাসিক এআইসি অনুযায়ী "সেরা" বিতরণটি নির্বাচিত হয়েছে। আপনার পছন্দ মতো যেকোন কিছুতে আপনি সেট করতে পারেনkk=2klog(n)IC BIC এর জন্য ।
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 ***
এআইসির মতে, ওয়েইবুল বিতরণ (আরও নির্দিষ্টভাবে WEI2
, এর একটি বিশেষ প্যারামিট্রাইজেশন) তথ্য সেরা ফিট করে। বন্টন সঠিক parametrization WEI2
মধ্যে detailled হয় এই দস্তাবেজটি পৃষ্ঠা 279. উপর এর একটি -এ অবশিষ্টাংশ দিকে তাকিয়ে হইয়া পরিদর্শন করা যাক কীট চক্রান্ত (মূলত একটি ডি প্রবণতা হয়েছিল কিউকিউ-চক্রান্ত):
আমরা আশা করি যে অবশিষ্টাংশগুলি মাঝের অনুভূমিক রেখার কাছাকাছি থাকবে এবং তাদের মধ্যে 95% উচ্চ এবং নিম্ন বিন্দুযুক্ত বক্ররেখার মধ্যে শুয়ে থাকবে, যা 95% পয়েন্টওয়াইজ আস্থার অন্তর হিসাবে কাজ করে। এই ক্ষেত্রে, কীট প্লটটি আমার কাছে সূক্ষ্ম দেখাচ্ছে যা ইঙ্গিত করে যে ওয়েইবুল বিতরণ পর্যাপ্ত ফিট।