একটি বিকল্প হ'ল কোপেরবার্গ এবং সহকর্মীদের পন্থা, ডেটার লগ-ঘনত্বের অনুমানের জন্য স্প্ল্লাইস ব্যবহার করে ঘনত্বের অনুমানের উপর ভিত্তি করে। আমি @ হোবারের উত্তর থেকে ডেটা ব্যবহার করে একটি উদাহরণ দেখাব, যা পদ্ধতির তুলনা করার অনুমতি দেবে।
set.seed(17)
x <- rexp(1000)
এর জন্য আপনার লগস্প্লাইন প্যাকেজ ইনস্টল করা দরকার ; এটি না থাকলে এটি ইনস্টল করুন:
install.packages("logspline")
প্যাকেজটি লোড করুন এবং logspline()ফাংশনটি ব্যবহার করে ঘনত্বের অনুমান করুন :
require("logspline")
m <- logspline(x)
নীচে, আমি ধরে নিচ্ছি যে d@ whuber এর উত্তর থেকে অবজেক্টটি ওয়ার্কস্পেসে উপস্থিত রয়েছে।
plot(d, type="n", main="Default, truncated, and logspline densities",
xlim=c(-1, 5), ylim = c(0, 1))
polygon(density(x, kernel="gaussian", bw=h), col="#6060ff80", border=NA)
polygon(d, col="#ff606080", border=NA)
plot(m, add = TRUE, col = "red", lwd = 3, xlim = c(-0.001, max(x)))
curve(exp(-x), from=0, to=max(x), lty=2, add=TRUE)
rug(x, side = 3)
লোডস্প্লিনের ঘনত্বটি লাল রেখার দ্বারা দেখানো সহ ফলস্বরূপ প্লটটি নীচে প্রদর্শিত হবে

অতিরিক্তভাবে, ঘনত্বের জন্য সমর্থন আর্গুমেন্ট lboundএবং এর মাধ্যমে নির্দিষ্ট করা যেতে পারে ubound। যদি আমরা ধরে নিতে পারি যে ঘনত্বটি 0 এর বাম দিকে 0 এবং সেখানে 0 থেকে একটি বিচ্ছিন্নতা রয়েছে, আমরা lbound = 0কলটিতে logspline()উদাহরণস্বরূপ ব্যবহার করতে পারি
m2 <- logspline(x, lbound = 0)
নিম্নলিখিত ঘনত্বের অনুমানের mফলন ( পূর্ববর্তী চিত্রটি ইতিমধ্যে ব্যস্ত হয়ে পড়ায় মূল লগস্প্লাইন ফিটের সাথে এখানে দেখানো হয়েছে )।
plot.new()
plot.window(xlim = c(-1, max(x)), ylim = c(0, 1.2))
title(main = "Logspline densities with & without a lower bound",
ylab = "Density", xlab = "x")
plot(m, col = "red", xlim = c(0, max(x)), lwd = 3, add = TRUE)
plot(m2, col = "blue", xlim = c(0, max(x)), lwd = 2, add = TRUE)
curve(exp(-x), from=0, to=max(x), lty=2, add=TRUE)
rug(x, side = 3)
axis(1)
axis(2)
box()
ফলাফলের প্লটটি নীচে দেখানো হয়েছে

xx = 0x