বিতরণগুলির সাথে তুলনা করার জন্য ভাল ডেটা ভিজ্যুয়ালাইজেশন কৌশলগুলি কী কী?


25

আমি আমার পিএইচডি থিসিস লিখছি এবং আমি বুঝতে পেরেছি যে ডিস্ট্রিবিউশনগুলি তুলনা করার জন্য আমি বাক্সের প্লটে অতিরিক্ত মাত্রায় নির্ভর করি। এই কাজটি অর্জনের জন্য আপনি অন্য কোন বিকল্প পছন্দ করেন?

আমি আরও জিজ্ঞাসা করতে চাই যে আপনি আর গ্যালারী হিসাবে অন্য কোনও উত্স জানেন যাতে আমি নিজেকে ভিজ্যুয়ালাইজেশনের বিভিন্ন ধারণাগুলি দিয়ে অনুপ্রাণিত করতে পারি।


6
আমি মনে করি আপনি যে বৈশিষ্ট্যগুলি তুলনা করতে চান তার উপরও পছন্দ নির্ভর করে। আপনি হিস্টোগ্রাম বিবেচনা করতে পারেন hist,; ঘনত্ব স্মুথড density; কিউকিউ-প্লট qqplot; স্টেম-ও-লিফ প্লট (কিছুটা প্রাচীন) stem। এছাড়াও, কোলমোগোরভ-স্মারনভ পরীক্ষাটি ভাল পরিপূরক হতে পারে ks.test

1
একটি হিস্টগ্রাম, একটি কর্নাল ঘনত্বের প্রাক্কলন, বা একটি বেহালা প্লট সম্পর্কে কীভাবে?
আলেকজান্ডার

স্টেম এবং পাতার প্লটগুলি হিস্টোগ্রামের মতো তবে যুক্ত বৈশিষ্ট্যের সাথে তারা আপনাকে প্রতিটি পর্যবেক্ষণের সঠিক মান নির্ধারণ করতে দেয়। এতে বক্সপ্লট বা কি হিস্টোগ্রামের চেয়ে ডেটা সম্পর্কে আরও তথ্য রয়েছে।
মাইকেল আর চেরনিক

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

1
ধন্যবাদ বলছি, আমি এই বিকল্পগুলি সম্পর্কে সচেতন এবং সেগুলির কয়েকটি ইতিমধ্যে ব্যবহার করেছি। আমি অবশ্যই পাতার প্লটটি অন্বেষণ করি নি। আপনি সরবরাহ করেছেন সেই লিঙ্কটি এবং @ প্রোকাস্টিনেটরের জবাব
পেড্রোসওরিওতে

উত্তর:


24

@ গুংয়ের পরামর্শ অনুসারে আমি আমার মন্তব্যটি বিশদভাবে বলতে যাচ্ছি। আমি সম্পূর্ণতা জন্য @ আলেকজান্ডার দ্বারা প্রস্তাবিত বেহালা প্লটও অন্তর্ভুক্ত করব। এর মধ্যে কয়েকটি সরঞ্জাম দুটিরও বেশি নমুনার তুলনা করার জন্য ব্যবহার করা যেতে পারে।

# Required packages

library(sn)
library(aplpack)
library(vioplot)
library(moments)
library(beanplot)

# Simulate from a normal and skew-normal distributions
x = rnorm(250,0,1)
y = rsn(250,0,1,5)

# Separated histograms
hist(x)
hist(y)

# Combined histograms
hist(x, xlim=c(-4,4),ylim=c(0,1), col="red",probability=T)
hist(y, add=T, col="blue",probability=T)

# Boxplots
boxplot(x,y)

# Separated smoothed densities
plot(density(x))
plot(density(y))

# Combined smoothed densities
plot(density(x),type="l",col="red",ylim=c(0,1),xlim=c(-4,4))
points(density(y),type="l",col="blue")

# Stem-and-leaf plots
stem(x)
stem(y)

# Back-to-back stem-and-leaf plots
stem.leaf.backback(x,y)

# Violin plot (suggested by Alexander)
vioplot(x,y)

# QQ-plot
qqplot(x,y,xlim=c(-4,4),ylim=c(-4,4))
qqline(x,y,col="red")

# Kolmogorov-Smirnov test
ks.test(x,y)

# six-numbers summary
summary(x)
summary(y)

# moment-based summary
c(mean(x),var(x),skewness(x),kurtosis(x))
c(mean(y),var(y),skewness(y),kurtosis(y))

# Empirical ROC curve
xx = c(-Inf, sort(unique(c(x,y))), Inf)
sens = sapply(xx, function(t){mean(x >= t)})
spec = sapply(xx, function(t){mean(y < t)})

plot(0, 0, xlim = c(0, 1), ylim = c(0, 1), type = 'l')
segments(0, 0, 1, 1, col = 1)
lines(1 - spec, sens, type = 'l', col = 2, lwd = 1)

# Beanplots
beanplot(x,y)

# Empirical CDF
plot(ecdf(x))
lines(ecdf(y))

আশা করি এটা কাজে লাগবে.


14

আপনার পরামর্শগুলিতে আরও কিছু অন্বেষণ করার পরে আমি @ প্রসেসটিনেটরের উত্তর পরিপূরক করতে এই জাতীয় প্লট পেয়েছি। একে 'মৌমাছি ঝাঁক' বলা হয় এবং এটি স্কাইলার প্লটের মতো একই বিশদ স্তরের সাথে বেহালা প্লটযুক্ত বক্স প্লটের মিশ্রণ।

মৌমাছির আর প্যাকেজ

মৌমাছির চক্রান্ত উদাহরণ


2
আমিও অন্তর্ভুক্ত করেছি beanplot

7

একটি নোট:

আপনি আপনার ডেটা সম্পর্কে প্রশ্নের উত্তর দিতে চান, এবং নিজেই ভিজ্যুয়ালাইজেশন পদ্ধতি সম্পর্কে প্রশ্ন তৈরি করতে চান না। প্রায়শই বিরক্তিকর ভাল হয়। এটি তুলনা তুলনা তুলনামূলকভাবে আরও উপলব্ধি করা সহজ করে তোলে।

একটি উত্তর:

আর এর বেস প্যাকেজ ছাড়িয়ে সাধারণ ফর্ম্যাটিংয়ের প্রয়োজনীয়তা সম্ভবত আরে হ্যাডলির জিজিপ্লট প্যাকেজের জনপ্রিয়তার ব্যাখ্যা দেয় explains

library(sn)
library(ggplot2)

# Simulate from a normal and skew-normal distributions
x = rnorm(250,0,1)
y = rsn(250,0,1,5)


##============================================================================
## I put the data into a data frame for ease of use
##============================================================================

dat = data.frame(x,y=y[1:250]) ## y[1:250] is used to remove attributes of y
str(dat)
dat = stack(dat)
str(dat)

##============================================================================
## Density plots with ggplot2
##============================================================================
ggplot(dat, 
     aes(x=values, fill=ind, y=..scaled..)) +
        geom_density() +
        opts(title = "Some Example Densities") +
        opts(plot.title = theme_text(size = 20, colour = "Black"))

ggplot(dat, 
     aes(x=values, fill=ind, y=..scaled..)) +
        geom_density() +
        facet_grid(ind ~ .) +
        opts(title = "Some Example Densities \n Faceted") +
        opts(plot.title = theme_text(size = 20, colour = "Black"))

ggplot(dat, 
     aes(x=values, fill=ind)) +
        geom_density() +
        facet_grid(ind ~ .) +
        opts(title = "Some Densities \n This time without \"scaled\" ") +
        opts(plot.title = theme_text(size = 20, colour = "Black"))

##----------------------------------------------------------------------------
## You can do histograms in ggplot2 as well...
## but I don't think that you can get all the good stats 
## in a table, as with hist
## e.g. stats = hist(x)
##----------------------------------------------------------------------------
ggplot(dat, 
     aes(x=values, fill=ind)) +
        geom_histogram(binwidth=.1) +
        facet_grid(ind ~ .) +
        opts(title = "Some Example Histograms \n Faceted") +
        opts(plot.title = theme_text(size = 20, colour = "Black"))

## Note, I put in code to mimic the default "30 bins" setting
ggplot(dat, 
     aes(x=values, fill=ind)) +
        geom_histogram(binwidth=diff(range(dat$values))/30) +
        opts(title = "Some Example Histograms") +
        opts(plot.title = theme_text(size = 20, colour = "Black"))

অবশেষে, আমি খুঁজে পেয়েছি যে একটি সাধারণ পটভূমি যুক্ত করা সহায়তা করে। যে কারণে আমি "বিজিফুন" লিখেছিলাম যা প্যানেল.ফার্স্ট কল করতে পারে

bgfun = function (color="honeydew2", linecolor="grey45", addgridlines=TRUE) {
    tmp = par("usr")
    rect(tmp[1], tmp[3], tmp[2], tmp[4], col = color)
    if (addgridlines) {
        ylimits = par()$usr[c(3, 4)]
        abline(h = pretty(ylimits, 10), lty = 2, col = linecolor)
    }
}
plot(rnorm(100), panel.first=bgfun())

## Plot with original example data
op = par(mfcol=c(2,1))
hist(x, panel.first=bgfun(), col='antiquewhite1', main='Bases belonging to us')
hist(y, panel.first=bgfun(color='darkolivegreen2'), 
    col='antiquewhite2', main='Bases not belonging to us')
mtext( 'all your base are belong to us', 1, 4)
par(op)

(+1) ভাল উত্তর। আমি alpha=0.5প্রথম প্লটটিতে যোগ করতে চাই (যাতে geom_density()) যাতে ওভারল্যাপিং অংশগুলি গোপন না হয়।
স্মিলিগ

আমি আলফা সম্পর্কে একমত = .5 আমি সিনট্যাক্সটি মনে করতে পারি না!
জেনোরোমা

7

আর ও মার্কিন রাজ্য-স্তরের অপরাধের ডেটা ব্যবহার করে নাথান ইয়োর প্রবাহিত ডেটা ব্লগের একটি সুন্দর টিউটোরিয়াল এখানে । এটা দেখায়:

  • বক্স-ও-হুইস্কার প্লট (যা আপনি ইতিমধ্যে ব্যবহার করেছেন)
  • Histograms
  • কার্নেল ডেনসিটি প্লট
  • রাগ প্লট
  • বেহালা প্লট
  • বিন প্লটস (একটি বাক্স প্লটের একটি অদ্ভুত কম্বো, ঘনত্বের প্লট, মাঝখানে একটি রাগ সহ) with

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


1
কার্নেল ঘনত্ব প্লটের জন্য +1। একাধিক জনসংখ্যার প্লট করার জন্য তারা হিস্টোগ্রামের তুলনায় অনেক কম 'ব্যস্ত'।
ডোরেসুম

3

বিতরণ তুলনা করার জন্য বিশেষত একটি ধারণা রয়েছে, যা আরও ভালভাবে জানা উচিত: আপেক্ষিক বিতরণ।

Y0,YF0,FF0

R=F0(Y)
RYY0F0(Y0)

আমাদের একটি উদাহরণ তাকান। Http://www.math.hope.edu/swanson/data/selphone.txt ওয়েবসাইটটি পুরুষ এবং মহিলা শিক্ষার্থীদের শেষ ফোন কলটির দৈর্ঘ্যের তথ্য দেয়। আসুন পুরুষ শিক্ষার্থীদের জন্য ফোন কল দৈর্ঘ্যের বিতরণটি উল্লেখ করুন, মহিলা শিক্ষার্থীদের সাথে রেফারেন্স হিসাবে।

ফোন কল দৈর্ঘ্যের তুলনামূলক বিতরণ, মহিলাদের তুলনায় পুরুষরা

xT

আপেক্ষিক ঘনত্বের বক্ররেখার আশেপাশে পয়েন্টওয়াইজ আস্থার ব্যবধানের সাথে আমরা একই প্লটটি তৈরি করতে পারি:

পয়েন্টওয়াইজ আস্থার ব্যবধান সহ আপেক্ষিক বিতরণের প্লট

এই ক্ষেত্রে প্রশস্ত আস্থা ব্যান্ডগুলি ছোট নমুনার আকারকে প্রতিফলিত করে।

এই পদ্ধতি সম্পর্কে একটি বই আছে: হ্যান্ডকক

প্লটের জন্য আর কোডটি এখানে রয়েছে:

phone <-  read.table(file="phone.txt", header=TRUE)
library(reldist)
men  <-  phone[, 1]
women <-  phone[, 3]
reldist(men, women)
title("length of mens last phonecall with women as reference")

শেষ চক্রান্ত পরিবর্তনের জন্য:

reldist(men, women, ci=TRUE)
title("length of mens last phonecall with women as reference\nwith pointwise confidence interval (95%)")

নোট করুন যে প্লটগুলি কার্নেল ঘনত্বের প্রাক্কলন ব্যবহার করে উত্পাদিত হয়, gcv (সাধারণ ক্রস বৈধকরণ) এর মাধ্যমে নির্বাচিত মসৃণতার ডিগ্রী সহ।

Q0F0rRyr

g(r)=f(Q0(r))f0(Q0(r))
g(r)=f(yr)f0(yr)r(0,1)

1

আমি কেবল ঘনত্বগুলি অনুমান করতে এবং সেগুলি প্লট করতে চাই,

head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

library(ggplot2)
ggplot(data = iris) + geom_density(aes(x = Sepal.Length, color = Species, fill = Species), alpha = .2)

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


আপনি পিডিএফ (বক্ররেখার নীচে) এর অভ্যন্তরটিকে কেন রঙ করবেন?
নেকড়েরা

আমি মনে করি এটি সুন্দর দেখায়।
ট্রাইনাডোস্ট্যাট

সম্ভবত - তবে এটি ভুল ধারণাটি প্রকাশ করতে পারে - ভর বা অঞ্চল পৌঁছে দেওয়ার ক্ষেত্রে, এটি দৃশ্যত অনুপযুক্ত হতে পারে।
নেকখরা

1
এটি অনুভূতিগত সম্ভাবনার ভর বোঝায়।
Lepidopterist
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.