आर

2015-01-21 7 views
7

मैं आर में "घनत्व" समारोह अब का उपयोग कर, एक सतत डेटा अज्ञात वितरण है का सबसे अच्छा पीडीएफ खोजने की कोशिश कर रहा हूँ में एक नया डेटा की प्रायिकता घनत्व का पता लगाएं का उपयोग कर बिंदु "घनत्व" समारोह, एक नया दी डेटा बिंदु, मैं इस डेटा कर्नेल घनत्व आकलनकर्ता मैं "घनत्व" समारोह परिणाम से है के आधार पर बिंदु के प्रायिकता घनत्व लगाना चाहते हैं। मैं यह कैसे कर सकता हूं?आर

+4

@whuber; आप प्रश्नकर्ता को सावधानी बरत सकते हैं कि _density_ संभावना नहीं है। (जैसा कि मैंने पहली बार अपना जवाब पढ़ा था, मैंने सोचा था कि आप यह कहने जा रहे थे कि उत्तर छोटा था क्योंकि किसी भी बिंदु पर संभावना शून्य थी (शून्य) शून्य।) –

+0

क्या यह एक अलग वितरण है? निरंतर वितरण के लिए, किसी भी विशिष्ट मूल्य को देखने की संभावना 0 है। सुनिश्चित नहीं है कि यह यहां क्यों माइग्रेट किया गया था। ऐसा लगता है कि हैंगअप अभी भी सांख्यिकीय समझ पर है, प्रोग्रामिंग नहीं। – MrFlick

+0

@whuber आप कह रहे हैं स्पष्ट सैद्धांतिक जवाब 0 है? यह प्रोग्रामिंग प्रश्न कैसे बनाता है। – MrFlick

उत्तर

-2

देखें: docs

dnorm(data_point, its_mean, its_stdev) 
+0

मुझे पता है कि मैं उन मानक कार्यों का उपयोग कर सकता हूं, हालांकि, उन्हें माध्य और एसडी की आवश्यकता है। मुद्दा यह है कि पीडीएफ का परिणाम अलग बैंडविड्थ का उपयोग करते समय "घनत्व" समारोह का उपयोग कर भिन्न हो सकता है, वही मतलब और एसडी! – programmingIsFun

+0

@ प्रोग्रामिंग आपको अपने प्रश्न में इस बिंदु को स्पष्ट करना चाहिए: अपने डेटा को "गॉसियन वितरण" पर जोर देकर आप यह मानते हैं कि आप इसके पैरामीटर को जानते हैं या अनुमान लगा सकते हैं। वर्तमान में पाठक को यह समझना है कि आपके पास वास्तव में गॉसियन नहीं है, लेकिन आपके डेटा से * कर्नेल घनत्व अनुमान * का उपयोग कर रहे हैं। आपको इसके बारे में स्पष्ट होना चाहिए। – whuber

+0

आह, मैं देखता हूं। हाँ मुझे नहीं लगता था कि आप अपने डेटा से एक केडीई का उपयोग कर रहे थे। मैंने @ ग्लेन_बी के जवाब को ऊपर उठाया। –

4

अपने नए बिंदु density द्वारा उत्पादित मूल्यों की सीमा के भीतर हो जाएगा, तो यह करने के लिए काफी आसान है - मैं approx (या approxfun उपयोग करने का सुझाव चाहते हैं, तो आप के रूप में यह जरूरत एक फ़ंक्शन) ग्रिड-मानों के बीच इंटरपोलेशन को संभालने के लिए।

यहाँ एक उदाहरण है:

set.seed(2937107) 
x <- rnorm(10,30,3) 
dx <- density(x) 
xnew <- 32.137 
approx(dx$x,dx$y,xout=xnew) 

हम घनत्व साजिश और नया बिंदु हम देख सकते हैं कि यह क्या कर रहा है कि तुम क्या जरूरत है:

enter image description here

यह NA वापस आ जाएगी, तो नया मान extrapolated होने की आवश्यकता होगी। आप एक्सट्रपलेशन को संभालने के लिए चाहते हैं, तो मैं उस बिंदु के लिए केडीई (केडीई आप से बैंडविड्थ का उपयोग) के प्रत्यक्ष गणना सुझाव देना चाहेंगे।

2

यह एक वर्ष पुराना है, लेकिन फिर भी, यहाँ एक पूर्ण समाधान है। के

d <- density(xs) 

फोन और h = d$bw को परिभाषित करते हैं। आपका केडीई आकलन पूरी तरह से

  • xs के तत्वों,
  • बैंडविड्थ h,
  • गिरी कार्यों के प्रकार से निर्धारित होता है।

एक नया मान t देखते हुए, आप इसी y(t) गणना कर सकता है, तो निम्न समारोह है, जो आप आकलन के लिए गाऊसी कर्नेल का इस्तेमाल किया है मान लिया गया है का उपयोग कर।

myKDE <- function(t){ 
    kernelValues <- rep(0,length(xs)) 
    for(i in 1:length(xs)){ 
     transformed = (t - xs[i])/h 
     kernelValues[i] <- dnorm(transformed, mean = 0, sd = 1)/h 
    } 
    return(sum(kernelValues)/length(xs)) 
} 

क्या myKDE करता है यह definition द्वारा y(t) गणना करता है।

+0

'केंद्र' क्या है? –

+0

यह बहुत अच्छा है, अगर मैं कर सकता तो मैं आपको अधिक उत्साह दूंगा। –

+0

@ मैक्सवेल कैंडलर इसके लिए कोई ज़रूरत नहीं है :) (लेकिन ... आप लाखों उपयोगकर्ता खाते बना सकते हैं और फिर उनमें से प्रत्येक प्रश्न को ऊपर उठा सकता है :)) – Antoine