आर में मानक विचलन के लिए किस सूत्र का उपयोग किया जाता है?


19

sdआर में मानक विचलन समारोह में किस सूत्र का उपयोग किया जाता है ?


आम तौर पर, आप फ़ंक्शन के कोड को केवल कोष्ठक के बिना कॉल करके पढ़ पाएंगे, जैसा कि Gschneider ने किया था।
ओवी जेसेन

2
@OweJessen जबकि सच है, यह अक्सर उतना उपयोगी नहीं होता जितना कि कोई सोच सकता है। R में कई कार्य केवल रैपर हैं जो अंतर्निहित C कोड कहते हैं। उदाहरण के लिए, sd आपको var तक ले जाता है, जो आपको .Call (C_cov, x, y, na.method, FALSE) की ओर ले जाता है।
एरिक

जवाबों:


31

जैसा कि @Gschneider द्वारा बताया गया है, यह नमूना मानक विचलन की गणना करता है

Σमैं=1n(एक्समैं-एक्स¯)2n-1

जिसे आप आसानी से निम्न प्रकार से देख सकते हैं:

> #generate a random vector
> x <- rnorm(n=5, mean=3, sd=1.5)
> n <- length(x)
> 
> #sd in R
> sd1 <- sd(x)
> 
> #self-written sd
> sd2 <- sqrt(sum((x - mean(x))^2) / (n - 1))
>  
> #comparison
> c(sd1, sd2)   #:-)
[1] 0.6054196 0.6054196

4
यदि आप सहायता पृष्ठ (? Sd) को देखते हैं, तो यह कहता है "जैसे var, यह हर-किसी n-1 का उपयोग करता है", यदि किसी कारण से आप ocram के सिमुलेशन पर विश्वास नहीं करते हैं :-)
मैट क्रूस

@ मैट: हो सकता है कि उन्हें उस मदद फ़ाइल को अपडेट करना चाहिए और कुछ ऐसा कहना चाहिए जैसे "यह वर्सेट का वर्गर्ट है"?
Owe Jessen

@OJJessen, मुझे लगता है कि यह वास्तव में कहता है कि "var अपने वर्ग को लौटाता है!"
मैट क्रूस

यह भी देखें: stackoverflow.com/questions/9508518/… यह सीखने के लिए कि यह सिमुलेशन दोनों कार्यों के लिए अलग-अलग परिणाम क्यों दे सकता है ।
टिम

इसका परीक्षण करने का एक और सरल तरीका है sd( c(-1,0,1) )जो 1. आउटपुट है।
kjetil b halvorsen

12

हाँ। तकनीकी रूप से, यह नमूना विचरण की गणना करता है, और फिर वर्गमूल लेता है:

> sd
function (x, na.rm = FALSE) 
{
if (is.matrix(x)) 
    apply(x, 2, sd, na.rm = na.rm)
else if (is.vector(x)) 
    sqrt(var(x, na.rm = na.rm))
else if (is.data.frame(x)) 
    sapply(x, sd, na.rm = na.rm)
else sqrt(var(as.vector(x), na.rm = na.rm))
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.