आर

2011-08-07 67 views
17

में डेटासेट की संभाव्यता घनत्व/मास फ़ंक्शन प्लॉटिंग मेरे पास डेटा सेट है और मैं इस डेटा को संभाव्यता घनत्व फ़ंक्शन या संभाव्यता द्रव्यमान फ़ंक्शन द्वारा विश्लेषण करना चाहता हूं, मैंने घनत्व फ़ंक्शन का उपयोग किया लेकिन इससे मुझे कोई संभावना नहीं मिली।आर

इस तरह मेरी डेटा:

"step","Time","energy" 
1, 22469 , 392.96E-03 
2, 22547 , 394.82E-03 
3, 22828,400.72E-03 
4, 21765, 383.51E-03 
5, 21516, 379.85E-03 
6, 21453, 379.89E-03 
7, 22156, 387.47E-03 
8, 21844, 384.09E-03 
9 , 21250, 376.14E-03 
10, 21703, 380.83E-03 

मैं ऊर्जा वेक्टर के लिए पीडीएफ/PMF प्राप्त करना चाहते हैं, डेटा हम ध्यान में रखना तो मैं वितरण के लिए डेटा विशेष प्रकार की जरूरत नहीं है स्वभाव से असतत हैं।

+1

वहाँ "प्रायिकता घनत्व समारोह" होगा केवल अलग डेटा के साथ एक संभावना हो जो घनत्व कार्यों को नहीं मानता है। –

+0

तो, आप अनुभवजन्य सीडीएफ चाहते हैं? – Iterator

उत्तर

28

आपका डेटा मुझसे अलग तक दिखता है। निरंतर डेटा के साथ काम करते समय संभावना की अपेक्षा करना गलत है। density() आपको एक अनुभवजन्य घनत्व समारोह देता है, जो वास्तविक घनत्व समारोह का अनुमान लगाता है। यह एक सही घनत्व है साबित करने के लिए, हम वक्र के तहत क्षेत्र की गणना:

energy <- rnorm(100) 
dens <- density(energy) 
sum(dens$y)*diff(dens$x[1:2]) 
[1] 1.000952 

कुछ गोलाई त्रुटि को देखते हुए। वक्र के नीचे वाला क्षेत्र एक तक है, और इसलिए density() का परिणाम पीडीएफ की आवश्यकताओं को पूरा करता है।

hist की probability=TRUE विकल्प या समारोह density() (या दोनों)

जैसे का उपयोग करें:

hist(energy,probability=TRUE) 
lines(density(energy),col="red") 

देता

enter image description here

तुम सच में एक असतत के लिए एक संभावना की जरूरत है परिवर्तनीय, आप उपयोग करते हैं:

x <- sample(letters[1:4],1000,replace=TRUE) 
prop.table(table(x)) 
x 
    a  b  c  d 
0.244 0.262 0.275 0.219 

संपादित करें: उदाहरण क्यों अनुभवहीन count(x)/sum(count(x)) एक समाधान नहीं है। दरअसल, ऐसा इसलिए नहीं है क्योंकि डिब्बे के मूल्य एक के बराबर हैं, वक्र के तहत क्षेत्रफल करता है। इसके लिए, आपको 'डिब्बे' की चौड़ाई के साथ गुणा करना होगा। सामान्य वितरण लें, जिसके लिए हम dnorm() का उपयोग करके पीडीएफ की गणना कर सकते हैं। निम्नलिखित कोड एक सामान्य वितरण निर्माण करती है, घनत्व की गणना करता है, और अनुभवहीन समाधान के साथ तुलना:

x <- sort(rnorm(100,0,0.5)) 
h <- hist(x,plot=FALSE) 
dens1 <- h$counts/sum(h$counts) 
dens2 <- dnorm(x,0,0.5) 

hist(x,probability=TRUE,breaks="fd",ylim=c(0,1)) 
lines(h$mids,dens1,col="red") 
lines(x,dens2,col="darkgreen") 

देता है:

enter image description here


संचयी बंटन फ़ंक्शन

में मामला @ इटरेटर सही था, संचयी dist बनाने के लिए यह आसान है घनत्व से रिब्यूशन समारोह। सीडीएफ पीडीएफ का अभिन्न अंग है। असतत मूल्यों के मामले में, यह केवल संभावनाओं का योग है।निरंतर मूल्यों के लिए, हम तथ्य यह है कि अनुभवजन्य घनत्व के आकलन के लिए अंतराल के बराबर हैं उपयोग कर सकते हैं, और गणना:

cdf <- cumsum(dens$y * diff(dens$x[1:2])) 
cdf <- cdf/max(cdf) # to correct for the rounding errors 
plot(dens$x,cdf,type="l") 

देता है:

enter image description here

+0

अच्छा स्पष्टीकरण। 'टाइप = "एस" का उपयोग करना, मुझे लगता है कि एक अनुभवजन्य सीडीएफ (घनत्व अनुमान से नहीं) को दिखाने का एक और सहज तरीका है, क्योंकि यह दिखाए गए अंतराल पर नमूना देने की भावना देता है। –