আর-তে নেতিবাচক ভেরিয়েবলের ঘনত্বের প্লটগুলির জন্য ভাল পদ্ধতিগুলি?


36
plot(density(rexp(100))

স্পষ্টতই শূন্যের বামে সমস্ত ঘনত্ব পক্ষপাতকে প্রতিনিধিত্ব করে।

আমি অ-পরিসংখ্যানবিদদের জন্য কিছু ডেটা সংক্ষিপ্ত করতে চাই এবং আমি কেন অ-নেতিবাচক ডেটা শূন্যের বামে ঘনত্ব নিয়েছে এমন প্রশ্নগুলি এড়াতে চাই। প্লটগুলি এলোমেলোভাবে যাচাইয়ের জন্য; আমি চিকিত্সা এবং নিয়ন্ত্রণ গ্রুপগুলি দ্বারা ভেরিয়েবলগুলির বিতরণটি দেখাতে চাই। বিতরণগুলি প্রায়শই তাত্পর্যপূর্ণ - ইশ হয়। হিস্টোগ্রামগুলি বিভিন্ন কারণে জটিল।

একটি দ্রুত গুগল অনুসন্ধান আমাকে নন-নেগেটিভ কার্নেলগুলির পরিসংখ্যানবিদদের দ্বারা কাজ দেয়, যেমন: এটি

তবে এর কোনও প্রয়োগ কি আর-তে করা হয়েছে? বাস্তবায়িত পদ্ধতিগুলির মধ্যে বর্ণনামূলক পরিসংখ্যানগুলির জন্য কি তাদের কোনওটি "সেরা"?

সম্পাদনা: এমনকি যদি fromকমান্ডটি আমার বর্তমান সমস্যাটি সমাধান করতে পারে, তবে এটি জেনে ভালো লাগবে যে কেউ নেতিবাচক ঘনত্বের অনুমানের ভিত্তিতে সাহিত্যের উপর ভিত্তি করে কার্নেলগুলি প্রয়োগ করেছে কিনা?


3
আপনি যা জিজ্ঞাসা করছেন তা নয়, তবে আমি তাত্পর্যপূর্ণ হওয়া উচিত এমন কোনও কিছুর জন্য কার্নেল ঘনত্বের অনুমান প্রয়োগ করব না, বিশেষত অ-পরিসংখ্যান দর্শকদের উপস্থাপনের জন্য। আমি কোয়ান্টাইল-কোয়ান্টাইল প্লট ব্যবহার করব এবং ব্যাখ্যা করব যে বিতরণটি তাত্পর্যপূর্ণ হলে প্লটটি সোজা হওয়া উচিত।
নিক কক্স

6
plot(density(rexp(100), from=0))?
স্টাফেন লরেন্ট

4
একটি জিনিস যা আমি মাঝেমধ্যে মোটামুটি সফলভাবে করেছি তা হ'ল লগগুলিতে কেডি পাওয়া, এবং তারপরে ঘনত্বের প্রাক্কলনকে রূপান্তর করা (জ্যাকবিয়ানকে ভুলে যাওয়া নয়)। আর একটি সম্ভাবনা হ'ল লগ-স্প্লাইন ঘনত্বের প্রাক্কলনটি সেট আপ করা যাতে এটি আবদ্ধ সম্পর্কে জানে।
গ্লেন_বি -রিনস্টেট মনিকা


1
আমি @ Glen_b দ্বারা উল্লিখিত রূপান্তর পদ্ধতিটি আলোচনা করেছি stata-jorter.com/sjpdf.html?articlenum=gr0003 (pp.76-78 দেখুন) এ। জিরোসকে লগের পরিবর্তে লগ (x + 1) ব্যবহার করে এবং জ্যাকবীয়িয়ান সংশোধন করার জন্য উপযুক্ত হতে পারে।
নিক কক্স

উত্তর:


21

স্থানিক পরিসংখ্যানের ধার-ওজন সম্পর্কিত পদ্ধতির কাছ থেকে নেওয়া একটি সমাধান হ'ল শূন্যের বামদিকে ঘনত্বটি কেটে নেওয়া তবে শূন্যের নিকটে থাকা ডেটা আপ-ওজন করা। ধারণা প্রতিটি মান কেন্দ্রীভূত ইউনিট মোট আয়তন একটি কার্নেল বাক্সে "বিস্তার" হয় এক্স ; নেতিবাচক অঞ্চলগুলিতে ছড়িয়ে পড়া কার্নেলের যে কোনও অংশ সরিয়ে ফেলা হবে এবং কার্নেলটি ইউনিট অঞ্চলে পুনর্নির্মাণ করা হবে।এক্সএক্স

উদাহরণস্বরূপ, একটি গাউসিয়ান কার্নেল দিয়ে , পুনর্নির্মাণ ওজন হয়Kh(y,x)=exp(12((yx)/h)2)/2π

W(এক্স)=1/0কে(Y,এক্স)Y=11-Φএক্স,(0)

যেখানে হ'ল গড় x এবং স্ট্যান্ডার্ড বিচ্যুতি এইচ এর স্বাভাবিক পরিবর্তনের সংশ্লেষিত বিতরণ কার্য । অন্যান্য কার্নেলের জন্য তুলনামূলক সূত্রগুলি উপলব্ধ।Φএক্স

নিকট ব্যান্ডউইথগুলি সংকীর্ণ করার চেষ্টা করার চেয়ে এটি সহজ - এবং গণনায় খুব দ্রুত । যাইহোক, ব্যান্ডউইথগুলি 0-এর কাছাকাছি কীভাবে পরিবর্তন করা উচিত তা নির্ধারণ করা কঠিন । তবুও, এই পদ্ধতিটিও অ্যাডহোক : এখনও 0 এর কাছাকাছি কিছু পক্ষপাত থাকবে । এটি ডিফল্ট ঘনত্বের প্রাক্কলনের চেয়ে আরও ভাল কাজ করেছে বলে মনে হচ্ছে। লার্জি ডেটাসেট ব্যবহার করে এখানে একটি তুলনা করা হল:000

ব্যক্তিত্ব

নীলটি ডিফল্ট ঘনত্ব দেখায় যখন লালটি প্রান্তের জন্য এ ঘনত্বটি সামঞ্জস্য করে । সত্য অন্তর্নিহিত বিতরণ রেফারেন্সের জন্য বিন্দুযুক্ত রেখা হিসাবে চিহ্নিত করা হয়েছে।0


আর কোড

densityফাংশন R, অভিযোগ করবে ওজন এর সমষ্টি ঐক্য নয়, কারণ এটি সব বাস্তব সংখ্যার উপর অবিচ্ছেদ্য চায় ঐক্য হতে বেশি ধনাত্মক সংখ্যার আগে ঐক্য সমান যেহেতু এই পদ্ধতির অবিচ্ছেদ্য করে তোলে। একটি চেক হিসাবে, পরবর্তী অখণ্ডটি রিমন যোগফল হিসাবে অনুমান করা হয়।

set.seed(17)
x <- rexp(1000)
#
# Compute a bandwidth.
#
h <- density(x, kernel="gaussian")$bw # $
#
# Compute edge weights.
#
w <- 1 / pnorm(0, mean=x, sd=h, lower.tail=FALSE)
#
# The truncated weighted density is what we want.
#
d <- density(x, bw=h, kernel="gaussian", weights=w / length(x))
d$y[d$x < 0] <- 0
#
# Check: the integral ought to be close to 1:
#
sum(d$y * diff(d$x)[1])
#
# Plot the two density estimates.
#
par(mfrow=c(1,1))
plot(d, type="n", main="Default and truncated densities", xlim=c(-1, 5))
polygon(density(x, kernel="gaussian", bw=h), col="#6060ff80", border=NA)
polygon(d, col="#ff606080", border=NA)
curve(exp(-x), from=0, to=max(x), lty=2, add=TRUE)

21

একটি বিকল্প হ'ল কোপেরবার্গ এবং সহকর্মীদের পন্থা, ডেটার লগ-ঘনত্বের অনুমানের জন্য স্প্ল্লাইস ব্যবহার করে ঘনত্বের অনুমানের উপর ভিত্তি করে। আমি @ হোবারের উত্তর থেকে ডেটা ব্যবহার করে একটি উদাহরণ দেখাব, যা পদ্ধতির তুলনা করার অনুমতি দেবে।

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এক্স=0x


1
01

@ শুভ প্রশ্ন। আমি সম্প্রতি এই পদ্ধতিটি পেরিয়ে এসেছি। আমি এখানে জিজ্ঞাসা করার জন্য একটি ভাল প্রশ্ন সন্দেহ করি যেগুলি কেটে দেওয়া এবং লগস্প্লাইন পদ্ধতিগুলি কেবল সত্য ঘনত্বের অনুমান মাত্র, পরিসংখ্যানগতভাবে ফিট কি পার্থক্যগুলি? যদিও আমি ঠিক জানি না কেন এটি শূন্যে এত ভাল করে not আমি কেন জানার জন্য কৃতজ্ঞ।
মনিকা পুনরায় ইনস্টল করুন - জি সিম্পসন

@ গ্যাভিনসিম্পসন, এই উত্তরের উত্তরের জন্য ধন্যবাদ। আপনি সর্বশেষ প্লটটির সর্বশেষতম সংস্করণ সহ পুনরুত্পাদন করতে পারেন logspline? আমার জন্য, উভয়ের ঘনত্ব, সীমাবদ্ধ এবং সীমাহীন সংস্করণ শূন্যে চলে যায় x = 0
সেল

4

দলগুলি দ্বারা বিতরণগুলির তুলনা করতে (যা আপনি বলছেন যে আপনার মন্তব্যের একটিতে লক্ষ্য) এটি কেন সহজ কিছু নয়? সমান্তরাল বাক্স প্লটগুলি এন বড় হলে সুন্দরভাবে কাজ করে; এন ছোট হলে সমান্তরাল স্ট্রিপ প্লটগুলি কাজ করে (এবং উভয়ই বহিরাগতকে ভাল দেখায়, যা আপনি বলেন যে আপনার ডেটাতে একটি সমস্যা)।


1
হ্যাঁ, ধন্যবাদ, এটি কাজ করে। তবে আমি ঘনত্বের প্লট পছন্দ করি। তারা বক্সপ্লটগুলির চেয়ে ডেটা সম্পর্কে আরও বেশি দেখায়। আমি অনুমান করি যে আমি একপ্রকার অবাক হয়েছি যে কোনও কিছুই ইতিমধ্যে প্রয়োগ করা হয়নি বলে মনে হয়। একদিন আমি নিজে এই জিনিসগুলির একটি বাস্তবায়ন করব। লোকেরা সম্ভবত এটি দরকারী মনে হবে।
জেনেরিক_উজার

1
আমি ঘনত্ব প্লটও পছন্দ করি; তবে আপনাকে আপনার শ্রোতাদের বিবেচনা করতে হবে।
পিটার ফ্লুম - মনিকা পুনরায়

1
এই সম্পর্কে @ পিটারফ্লম এর সাথে একমত হতে হবে। আপনার শ্রোতা যদি পরিসংখ্যানগতভাবে জ্ঞান না রাখেন তবে খুব জটিল হবেন না। আপনি উপরের প্রজাপতির প্লটের ওভারলে সহ তুলনামূলক / সমান্তরাল বক্স-প্লটগুলিও করতে পারেন। এইভাবে বাক্স-প্লটের সংক্ষিপ্তসার পাশাপাশি সমস্ত ডেটা দৃশ্যমান।
ডগ.নম্বার্স

বিভিন্ন ব্যক্তি সমষ্টিগত প্লটগুলি পৃথকভাবে বোঝার পরামর্শটি অবশ্যই সঠিক। ঘনত্বের প্লট কী তা বোঝার পরেও (এবং এটি কোনও সম্ভাবনা নয় তা বোঝার পরেও) "সমান্তরাল বক্সপ্লট" কী হতে পারে তা সম্পর্কে আমার কোনও বোধগম্যতা নেই। এটি একটি সমান্তরাল স্থানাঙ্ক প্লট প্রস্তাব করে তবে আমার সন্দেহ হয় যে এটি সঠিক নয়।
ডিউইন

2

স্টাফেন মন্তব্য হিসাবে আপনি ব্যবহার করতে পারেন from = 0এবং অতিরিক্ত হিসাবে, আপনি ঘনত্ব বক্ররেখার নীচে আপনার মানগুলি উপস্থাপন করতে পারেনrug (x)


4
আমি ভুল হলে আমাকে সংশোধন করুন তবে from=0দেখে মনে হচ্ছে এটি কেবল 0 নীচের মানের জন্য চক্রান্ত করা দমন করে; এটি কিছু বিতরণকে 0 এর নীচে গন্ধযুক্ত করা হয়েছে বলে হিসাবটি ঠিক করে দেয় না
নিক কক্স

1
ঐটা ঠিক. fromকমান্ডটি ব্যবহার করে এমন একটি প্লট পাওয়া যায় যা দেখে মনে হয় এটির শূন্যের ঠিক ডানদিকে রয়েছে। তবে আপনি যদি ক্রমাগতভাবে ছোট ছোট বিনগুলি সহ হিস্টোগ্রামগুলিতে লক্ষ্য করেন তবে প্রচুর ডেটা পিক এটি শূন্য দেখায়। fromশুধু একটি গ্রাফিকাল কৌতুক।
জেনেরিক_উজার

@ নিককক্স আমি নিশ্চিত নই তবে আমি মনে করি from=0কিছু দমন করে না । এটি শূন্য থেকে "গ্রিড" শুরু করে।
স্টাফেন লরেন্ট

পার্থক্যটি হ'ল আনুমানিক ঘনত্বটি নেতিবাচক মানগুলির জন্য শূন্য নয় কিনা তা চক্রান্ত করা হয়েছে কিনা। গবেষকরা যদি তারা চান কেবল একটি ভিজ্যুয়ালাইজেশন হয় তবে এ নিয়ে উদ্বিগ্ন না হওয়ার সিদ্ধান্ত নিতে পারে।
নিক কক্স

@ নিককক্স কমান্ডটির density(rexp(100), from=0)গ্রাফিকটির সাথে কোনও সম্পর্ক নেই
স্টাফেন লরেন্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.