আর এর মধ্যে একটি হিস্টোগ্রামে ঘনত্বের বক্ররেখা ফিটিং করা


92

আর-তে এমন কোনও ফাংশন রয়েছে যা কোনও হিস্টোগ্রামের সাথে একটি বাঁক খায়?

ধরা যাক আপনার নিম্নলিখিত হিস্টোগ্রাম ছিল

hist(c(rep(65, times=5), rep(25, times=5), rep(35, times=10), rep(45, times=4)))

এটি দেখতে সাধারণ দেখাচ্ছে, তবে এটি স্কিওড। আমি একটি সাধারণ বক্ররেখা ফিট করতে চাই যা এই হিস্টোগ্রামের চারপাশে মোড়ানোর জন্য জড়িত।

এই প্রশ্নটি বরং মূল, তবে আমি ইন্টারনেটে আর এর উত্তর খুঁজে পাচ্ছি না।


আপনি কি মি এবং এর মতো সন্ধান করতে চান যে গাউসীয় বিতরণ এন (এম, এস) আপনার ডেটাতে ফিট করে?
স্টেইননারহিম

আমি এর অর্থ ...> _>
ব্যবহারকারী5243421

10
@ মথি: আমি মনে করি তার অর্থ মি = গড়, এবং এস = স্ট্যান্ডার্ড বিচ্যুতি। গাউসীয় বিতরণ সাধারণ বিতরণের আরেকটি নাম।
পিটার মর্টেনসেন

উত্তর:


155

যদি আমি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পারি তবে আপনি সম্ভবত হিস্টোগ্রামের সাথে ঘনত্বের অনুমানও চান:

X <- c(rep(65, times=5), rep(25, times=5), rep(35, times=10), rep(45, times=4))
hist(X, prob=TRUE)            # prob=TRUE for probabilities not counts
lines(density(X))             # add a density estimate with defaults
lines(density(X, adjust=2), lty="dotted")   # add another "smoother" density

একটি দীর্ঘ সময় পরে সম্পাদনা করুন:

এখানে কিছুটা বেশি পোশাক পরিহিত সংস্করণ:

X <- c(rep(65, times=5), rep(25, times=5), rep(35, times=10), rep(45, times=4))
hist(X, prob=TRUE, col="grey")# prob=TRUE for probabilities not counts
lines(density(X), col="blue", lwd=2) # add a density estimate with defaults
lines(density(X, adjust=2), lty="dotted", col="darkgreen", lwd=2) 

গ্রাফের সাথে এটি উত্পাদন করে:

এখানে চিত্র বর্ণনা লিখুন


4
+1 - আপনিও অন্য উপায়ে এটি করতে পারেন, অর্থাত্ হিস্টোগ্রামের সাথে ফিট করার জন্য ঘনত্বের প্লটটি সামঞ্জস্য করতে পারেন?
ভনজড

4
আমি পরামর্শ দিচ্ছি lines(density(X,na.rm= TRUE)যে ভেক্টরটিতে এনএ মান থাকতে পারে হিসাবে অতিরিক্ত পরামিতি দেওয়া ।
অনিরুদ

30

Ggplot2 এর মাধ্যমে এ জাতীয় জিনিস সহজ

library(ggplot2)
dataset <- data.frame(X = c(rep(65, times=5), rep(25, times=5), 
                            rep(35, times=10), rep(45, times=4)))
ggplot(dataset, aes(x = X)) + 
  geom_histogram(aes(y = ..density..)) + 
  geom_density()

বা ডার্কের সমাধান থেকে ফলাফল নকল করতে

ggplot(dataset, aes(x = X)) + 
  geom_histogram(aes(y = ..density..), binwidth = 5) + 
  geom_density()

28

আমি এটি করার উপায় এখানে:

foo <- rnorm(100, mean=1, sd=2)
hist(foo, prob=TRUE)
curve(dnorm(x, mean=mean(foo), sd=sd(foo)), add=TRUE)

একটি বোনাস অনুশীলন হ'ল ggplot2 প্যাকেজ সহ এটি করা ...


তবে, যদি আপনি স্কাইযুক্ত এমন কোনও কিছু চান, তবে আপনি উপরের ঘনত্বের উদাহরণটি উপস্থাপন করতে পারেন, আপনার ডেটা রূপান্তর করতে পারেন (উদাহরণস্বরূপ foo.log & lt; - লগ (foo) এবং উপরেরটি চেষ্টা করুন), অথবা স্কিউড ডিস্ট্রিবিউশন ফিটিংয়ের চেষ্টা করতে পারেন যেমন গামা বা লগনারালমাল (লগনরমাল লগ নেওয়া এবং একটি সাধারণ, বিটিডব্লু ফিটিংয়ের সমতুল্য)।
জন জনসন

4
তবে এর জন্য প্রথমে আপনার বিতরণের প্যারামিটারগুলি অনুমান করা দরকার।
ডার্ক এডেলবুয়েটেল

এটি কেবল আর তাত্ত্বিক পরিসংখ্যানগুলিতে আরও বেশি পাচ্ছে বলে কেবল আর সম্পর্কে আলোচনা করা থেকে কিছুটা দূরে রয়েছে, তবে আপনি গামার জন্য এই লিঙ্কটি চেষ্টা করতে পারেন: en.wikedia.org/wiki/Gamma_dist वितरण#Parameter_estimission লগনরমালের জন্য, কেবল লগটি ধরে (ধরে নিলেন) সমস্ত ডেটা ইতিবাচক) এবং লগ-ট্রান্সফর্মড ডেটা নিয়ে কাজ করে। যে কোনও ফ্যানসিয়ারের জন্য, আমি মনে করি আপনাকে একটি পরিসংখ্যান পাঠ্যপুস্তক নিয়ে কাজ করতে হবে।
জন জনসন

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

11

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

> sn.mle(y=c(rep(65, times=5), rep(25, times=5), rep(35, times=10), rep(45, times=4)))
$call
sn.mle(y = c(rep(65, times = 5), rep(25, times = 5), rep(35, 
    times = 10), rep(45, times = 4)))

$cp
    mean     s.d. skewness 
41.46228 12.47892  0.99527 

স্কিউ-স্বাভাবিক বিতরণ করা ডেটা প্লট

এটি সম্ভবত স্কু-স্বাভাবিকের চেয়ে বেশি ডেটাতে আরও ভাল কাজ করে:

আরেকটি স্কিউ-স্বাভাবিক প্লট


3

আমারও একই সমস্যা ছিল কিন্তু ডার্কের সমাধানটি কাজ করে নি বলে মনে হচ্ছে। আমি প্রতিবার এই সতর্কতা মেসেজ পেয়েছিলাম

"prob" is not a graphical parameter

আমি মাধ্যমে পড়েছি ?histএবং সম্পর্কে জানতে পেরেছিfreq: a logical vector set TRUE by default.

কোডটি আমার পক্ষে কাজ করেছে

hist(x,freq=FALSE)
lines(density(x),na.rm=TRUE)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.