আর-তে কিভাবে संचयी বিতরণ গণনা করা যায়?


23

আমার একটি ডেটা নমুনার ক্রম বিতরণ ফাংশন গণনা করতে হবে need

আরে হিস্ট () এর অনুরূপ কিছু আছে যা ক্রমবর্ধমান ঘনত্বের কার্যটি পরিমাপ করে?

আমার ইসিডিএফ () চেষ্টা আছে তবে আমি যুক্তি বুঝতে পারি না।

উত্তর:


32

ecdfফাংশন একটি ডাটা নমুনা আয় একটি প্রয়োগ ফাংশন গবেষণামূলক ক্রমবর্ধমান বণ্টনের ফাংশনের উপস্থাপন করে। উদাহরণ স্বরূপ:

> X = rnorm(100) # X is a sample of 100 normally distributed random variables
> P = ecdf(X)    # P is a function giving the empirical CDF of X
> P(0.0)         # This returns the empirical CDF at zero (should be close to 0.5)
[1] 0.52
> plot(P)        # Draws a plot of the empirical CDF (see below)

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

যদি আপনি নির্দিষ্ট মানগুলিতে (কোনও ফাংশন অবজেক্ট হিসাবে না থেকে) মূল্যায়নকৃত সিপিএফ প্রতিনিধিত্বকারী কোনও অবজেক্ট রাখতে চান তবে আপনি এটি করতে পারেন

> z = seq(-3, 3, by=0.01) # The values at which we want to evaluate the empirical CDF
> p = P(z)                # p now stores the empirical CDF evaluated at the values in z

নোট যাতে pসর্বাধিক একই পরিমাণে তথ্য Pরয়েছে (এবং সম্ভবত এটিতে কম রয়েছে) যার মধ্যে একই পরিমাণে তথ্য থাকে X


হ্যাঁ আমি জানি, তবে কীভাবে এটি এক্সিডের মানগুলি অ্যাক্সেস করা সম্ভব? এটা আমার জন্য একটি রহস্য।
ইমানুয়েল

2
আপনি যদি এটির মান চান তবে xকেবল লিখুন P(x)। নোট করুন যে xকোনও ভেক্টর হতে পারে (আমার উত্তরের শেষ দুটি বাক্য দেখুন see)
ক্রিস টেলর

পছন্দ করেছেন
মাইকেল আর চেরনিক

1

আপনার যা প্রয়োজন বলে মনে হচ্ছে তা হ'ল অ্যাকিউলেটেড ডিস্ট্রিবিউশন (কোনও নমুনায় x এর চেয়ে <= একটি মান পাওয়ার সম্ভাবনা), ইসিডিএফ আপনাকে একটি ফাংশন ফিরিয়ে দেয় তবে এটি প্লট করার জন্য তৈরি হয়েছিল বলে মনে হয় এবং তাই, সেই ফাংশনের যুক্তি , যদি এটি সিঁড়ি হত, তবে চলার সূচি হবে।

আপনি এটি ব্যবহার করতে পারেন:

acumulated.distrib= function(sample,x){
    minors= 0
    for(n in sample){
        if(n<=x){
            minors= minors+1
        }
    }
    return (minors/length(sample))
}

mysample = rnorm(100)
acumulated.distrib(mysample,1.21) #1.21 or any other value you want.

দুঃখের বিষয় এই ফাংশনটির ব্যবহার খুব দ্রুত নয়। আমি জানি না যে আর এর কোনও ফাংশন রয়েছে যা এটি আপনাকে একটি ফাংশন ফিরিয়ে দেয়, এটি আরও কার্যকর।


3
আপনি ইসিডিএফটিকে তার বিপরীতমুখীভাবে মিশ্রিত করেছেন বলে মনে হচ্ছে। Rসত্যই, ইসিডিএফ গণনা করে: এর যুক্তিটি এলোমেলো ভেরিয়েবলের একটি সম্ভাব্য মান এবং এটি ব্যবধানে মানগুলি প্রদান করে[0,1]। এটি সহজেই পরীক্ষা করা হয়। উদাহরণস্বরূপ, ecdf(c(-1,0,3,9))(8)ফেরৎ 0.75। ECDF একটি সাধারণ বিপরীত সমাংশক ফাংশন, দ্বারা বাস্তবায়িত হয় quantileমধ্যে R
হোবার

1

আমি সবসময় ecdf()কিছুটা বিভ্রান্ত হয়ে পড়েছিলাম । প্লাস আমি মনে করি এটি কেবল ইউনিভারিয়েট ক্ষেত্রে কাজ করে। পরিবর্তে এটির জন্য আমার নিজের ফাংশনটি রোলিংয়ে শেষ হয়েছে।

প্রথমে ডেটা.টিটেবল ইনস্টল করুন । তারপরে আমার প্যাকেজটি ইনস্টল করুন, এমটি টলস (অথবা কেবলমাত্র empirical_cdf অনুলিপি করুন ) () আপনার আর পরিবেশে পদ্ধতিটি )

তাহলে এটি যতটা সহজ

# load packages
library(data.table)
library(mltools)

# Make some data
dt <- data.table(x=c(0.3, 1.3, 1.4, 3.6), y=c(1.2, 1.2, 3.8, 3.9))
dt
     x   y
1: 0.3 1.2
2: 1.3 1.2
3: 1.4 3.8
4: 3.6 3.9

একটি ভেক্টরের সিডিএফ

empirical_cdf(dt$x, ubounds=seq(1, 4, by=1.0))
   UpperBound N.cum  CDF
1:          1     1 0.25
2:          2     3 0.75
3:          3     3 0.75
4:          4     4 1.00

তারিখের 'x' কলামের সিডিএফ

empirical_cdf(dt, ubounds=list(x=seq(1, 4, by=1.0)))
   x N.cum  CDF
1: 1     1 0.25
2: 2     3 0.75
3: 3     3 0.75
4: 4     4 1.00

'X' এবং 'y' কলামের সিডিএফ তারিখ

empirical_cdf(dt, ubounds=list(x=seq(1, 4, by=1.0), y=seq(1, 4, by=1.0)))
    x y N.cum  CDF
 1: 1 1     0 0.00
 2: 1 2     1 0.25
 3: 1 3     1 0.25
 4: 1 4     1 0.25
 5: 2 1     0 0.00
 6: 2 2     2 0.50
 7: 2 3     2 0.50
 8: 2 4     3 0.75
 9: 3 1     0 0.00
10: 3 2     2 0.50
11: 3 3     2 0.50
12: 3 4     3 0.75
13: 4 1     0 0.00
14: 4 2     2 0.50
15: 4 3     2 0.50
16: 4 4     4 1.00

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