একটি বিকল্প হ'ল কোপেরবার্গ এবং সহকর্মীদের পন্থা, ডেটার লগ-ঘনত্বের অনুমানের জন্য স্প্ল্লাইস ব্যবহার করে ঘনত্বের অনুমানের উপর ভিত্তি করে। আমি @ হোবারের উত্তর থেকে ডেটা ব্যবহার করে একটি উদাহরণ দেখাব, যা পদ্ধতির তুলনা করার অনুমতি দেবে।
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()
ফলাফলের প্লটটি নীচে দেখানো হয়েছে
x
x = 0x