হেনরি দ্বারা উল্লিখিত হিসাবে , আপনি স্বাভাবিক বিতরণ অনুমান করছেন এবং আপনার ডেটা স্বাভাবিক বিতরণ অনুসরণ করে তবে এটি পুরোপুরি ঠিক আছে তবে আপনি যদি এটির জন্য সাধারণ বিতরণ অনুমান করতে না পারেন তবে এটি ভুল হবে। নীচে আমি দুটি পৃথক পদ্ধতি বর্ণনা করেছি যা আপনি অজানা বিতরণের জন্য ব্যবহার করতে পারেন কেবলমাত্র ডেটাপয়েন্ট x
এবং তার সাথে ঘনত্বের অনুমান px
।
100α%বিতরণ। আপনি নীচের চিত্রের দুটি প্লট তুলনা করলে এটি আরও স্পষ্ট হবে - কোয়ান্টাইলগুলি বিতরণটিকে উল্লম্বভাবে "কাটা", যখন সর্বোচ্চ ঘনত্বের অঞ্চল এটি অনুভূমিকভাবে "কাটা" করে।
পরবর্তী বিষয় বিবেচনা করার বিষয়টি হ'ল কীভাবে বিতরণ সম্পর্কে আপনার কাছে অসম্পূর্ণ তথ্য রয়েছে তা ধরে নেওয়ার জন্য (ধরে নিই আমরা ধারাবাহিক বন্টনের বিষয়ে কথা বলছি, আপনার কাছে কেবলমাত্র একটি ফাংশন রয়েছে তারপরে) points আপনি এটি সম্পর্কে যা করতে পারেন তা হ'ল "যেমন" হিসাবে মানগুলি গ্রহণ করা, বা "মধ্যে" মানগুলি পেতে কোনও ধরণের অন্তরঙ্গ বা স্মুথলি ব্যবহার করুন।
একটা পদক্ষেপ রৈখিক ক্ষেপক ব্যবহার করতে (দেখুন হবে ?approxfun
আরো কিছু আর নেই), বা অন্যভাবে splines (দেখুন মত মসৃণ ?splinefun
আর এ)। আপনি যদি এই জাতীয় দৃষ্টিভঙ্গি চয়ন করেন তবে আপনাকে মনে রাখতে হবে যে অন্তরঙ্গকরণ অ্যালগরিদমগুলির আপনার ডেটা সম্পর্কে কোনও ডোমেন জ্ঞান নেই এবং শূন্যের নীচের মানগুলির মতো অবৈধ ফলাফলগুলি ফিরে আসতে পারে etc.
# grid of points
xx <- seq(min(x), max(x), by = 0.001)
# interpolate function from the sample
fx <- splinefun(x, px) # interpolating function
pxx <- pmax(0, fx(xx)) # normalize so prob >0
দ্বিতীয় বিবেচনা যা আপনি বিবেচনা করতে পারেন তা হ'ল আপনার কাছে থাকা ডেটা ব্যবহার করে আপনার বিতরণকে আনুমানিকভাবে কার্নেল ঘনত্ব / মিশ্রণ বিতরণ ব্যবহার করা। এখানে জটিল অংশটি হল অনুকূল ব্যান্ডউইথ সম্পর্কে সিদ্ধান্ত নেওয়া।
# density of kernel density/mixture distribution
dmix <- function(x, m, s, w) {
k <- length(m)
rowSums(vapply(1:k, function(j) w[j]*dnorm(x, m[j], s[j]), numeric(length(x))))
}
# approximate function using kernel density/mixture distribution
pxx <- dmix(xx, x, rep(0.4, length.out = length(x)), px) # bandwidth 0.4 chosen arbitrary
এর পরে, আপনি আগ্রহের অন্তরগুলি সন্ধান করতে যাচ্ছেন। আপনি হয় সংখ্যায়, বা সিমুলেশন দ্বারা এগিয়ে যেতে পারেন।
1 ক) কোয়ান্টাইল অন্তর পেতে নমুনা
# sample from the "empirical" distribution
samp <- sample(xx, 1e5, replace = TRUE, prob = pxx)
# or sample from kernel density
idx <- sample.int(length(x), 1e5, replace = TRUE, prob = px)
samp <- rnorm(1e5, x[idx], 0.4) # this is arbitrary sd
# and take sample quantiles
quantile(samp, c(0.05, 0.975))
1 খ) সর্বাধিক ঘনত্বের অঞ্চল অর্জনের নমুনা
samp <- sample(pxx, 1e5, replace = TRUE, prob = pxx) # sample probabilities
crit <- quantile(samp, 0.05) # boundary for the lower 5% of probability mass
# values from the 95% highest density region
xx[pxx >= crit]
2 ক) সংখ্যাগতভাবে কোয়ান্টাইলগুলি সন্ধান করুন
cpxx <- cumsum(pxx) / sum(pxx)
xx[which(cpxx >= 0.025)[1]] # lower boundary
xx[which(cpxx >= 0.975)[1]-1] # upper boundary
2 খ) সংখ্যাগতভাবে সর্বাধিক ঘনত্বের অঞ্চলটি সন্ধান করুন
const <- sum(pxx)
spxx <- sort(pxx, decreasing = TRUE) / const
crit <- spxx[which(cumsum(spxx) >= 0.95)[1]] * const
যেমন আপনি নীচের প্লটগুলিতে দেখতে পাচ্ছেন, ইউনিমোডাল ক্ষেত্রে, প্রতিসম বিতরণ উভয় পদ্ধতিই একই ব্যবধানে ফিরে আসে।
100α%Pr(X∈μ±ζ)≥αζ