जवाबों:
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)
यदि आप चाहते हैं कि किसी वस्तु का मूल्यांकन CDR के विशिष्ट मूल्यों (बल्कि एक फ़ंक्शन ऑब्जेक्ट के बजाय) पर किया जाए, तो आप कर सकते हैं
> 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
।
x
सीधे लिखें P(x)
। ध्यान दें कि x
एक वेक्टर हो सकता है (मेरे उत्तर के वाक्यों के अंतिम दोहे देखें।)
आपको एक्यूमुलेटेड डिस्ट्रीब्यूशन (वैल्यू पाने की संभावना <= एक सैंपल पर x से अधिक) प्राप्त करने के लिए यह दिखाई देता है, ecdf आपको एक फंक्शन देता है, लेकिन यह प्लॉटिंग के लिए बनाया गया प्रतीत होता है, और इसलिए, उस फंक्शन का तर्क , अगर यह एक सीढ़ी थी, तो यह चलने का सूचकांक होगा।
आप इसका उपयोग कर सकते हैं:
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.
अफसोस की बात है कि इस फ़ंक्शन का उपयोग बहुत तेज़ नहीं है। मुझे नहीं पता कि आर में एक फ़ंक्शन है जो यह करता है कि यह आपको एक फ़ंक्शन लौटाता है, जो अधिक कुशल होगा।
मुझे हमेशा ecdf()
थोड़ा भ्रमित करने वाला पाया गया। इसके अलावा मुझे लगता है कि यह केवल एकतरफा मामले में काम करता है। इसके बजाय अपने स्वयं के फ़ंक्शन को रोल करना समाप्त किया।
सबसे पहले data.table को इनस्टॉल करें । फिर मेरे पैकेज को स्थापित करें, mltools (या बस अपने आर वातावरण में अनुभवजन्य- LCDf () विधि की प्रतिलिपि बनाएँ ।)
फिर यह जितना आसान है
# 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
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
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
दोस्त, आप इस ब्लॉग पर कोड पढ़ सकते हैं।
sample.data = read.table ('data.txt', header = TRUE, sep = "\t")
cdf <- ggplot (data=sample.data, aes(x=Delay, group =Type, color = Type)) + stat_ecdf()
cdf
अधिक जानकारी निम्न लिंक पर पाई जा सकती है: