R में माध्य की मानक त्रुटि ज्ञात करने के लिए कोई कमांड है?
जवाबों:
मानक त्रुटि (एसई) नमूना वितरण का सिर्फ मानक विचलन है। सैंपलिंग डिस्ट्रीब्यूशन का विचरण N और SE द्वारा विभाजित डेटा का विचरण है। उस समझ से जाने से, यह देखा जा सकता है कि एसई गणना में भिन्नता का उपयोग करना अधिक कुशल है। sdआर में समारोह पहले से ही एक वर्गमूल (कोड के लिए करता है sdआर में है और बस लिखते "एसडी" से पता चला)। इसलिए, निम्नलिखित सबसे कुशल है।
se <- function(x) sqrt(var(x)/length(x))
फ़ंक्शन को केवल अधिक जटिल बनाने के लिए और उन सभी विकल्पों को संभालने के लिए जिन्हें आप पास कर सकते हैं var, आप इस संशोधन को बना सकते हैं।
se <- function(x, ...) sqrt(var(x, ...)/length(x))
इस सिंटैक्स का उपयोग करके चीजों का लाभ उठाया जा सकता है जैसे कि varलापता मूल्यों के साथ कैसे व्यवहार होता है। varएक नामित तर्क के रूप में पारित किया जा सकता है कि कुछ भी इस seकॉल में इस्तेमाल किया जा सकता है ।
stderrएक फ़ंक्शन नाम है base।
stderrयह प्रदर्शित होने वाली मानक त्रुटि की गणना नहीं करता हैdisplay aspects. of connection
stderrकि मानक त्रुटि की गणना नहीं करता है , वह चेतावनी दे रहा था कि इस नाम का उपयोग आधार में किया जाता है, और जॉन ने मूल रूप से अपने कार्य का नाम दिया stderr(इतिहास संपादित करें ...)।
ऊपर जॉन के उत्तर का एक संस्करण जो पेसकी एनए को हटाता है:
stderr <- function(x, na.rm=FALSE) {
if (na.rm) x <- na.omit(x)
sqrt(var(x)/length(x))
}
stderrमें एक मौजूदा फ़ंक्शन कहा जाता है जो baseकुछ और करता है, इसलिए इस के लिए एक और नाम चुना जाना बेहतर हो सकता है, जैसेse
पैकेज स्किप्लॉट में अंतर्निहित फ़ंक्शन से (x) है
जैसा कि मैं इस सवाल पर अब और फिर से वापस जा रहा हूं, क्योंकि यह सवाल पुराना है, मैं सबसे अधिक वोट किए गए उत्तरों के लिए एक बेंचमार्क पोस्ट कर रहा हूं।
ध्यान दें, कि @ इयान और @ जॉन के उत्तरों के लिए मैंने एक और संस्करण बनाया। उपयोग करने के बजाय length(x), मैंने उपयोग किया sum(!is.na(x))(एनए से बचने के लिए)। मैंने 1,000 पुनरावृत्तियों के साथ 10 ^ 6 के एक वेक्टर का उपयोग किया।
library(microbenchmark)
set.seed(123)
myVec <- rnorm(10^6)
IanStd <- function(x) sd(x)/sqrt(length(x))
JohnSe <- function(x) sqrt(var(x)/length(x))
IanStdisNA <- function(x) sd(x)/sqrt(sum(!is.na(x)))
JohnSeisNA <- function(x) sqrt(var(x)/sum(!is.na(x)))
AranStderr <- function(x, na.rm=FALSE) {
if (na.rm) x <- na.omit(x)
sqrt(var(x)/length(x))
}
mbm <- microbenchmark(
"plotrix" = {plotrix::std.error(myVec)},
"IanStd" = {IanStd(myVec)},
"JohnSe" = {JohnSe(myVec)},
"IanStdisNA" = {IanStdisNA(myVec)},
"JohnSeisNA" = {JohnSeisNA(myVec)},
"AranStderr" = {AranStderr(myVec)},
times = 1000)
mbm
परिणाम:
Unit: milliseconds
expr min lq mean median uq max neval cld
plotrix 10.3033 10.89360 13.869947 11.36050 15.89165 125.8733 1000 c
IanStd 4.3132 4.41730 4.618690 4.47425 4.63185 8.4388 1000 a
JohnSe 4.3324 4.41875 4.640725 4.48330 4.64935 9.4435 1000 a
IanStdisNA 8.4976 8.99980 11.278352 9.34315 12.62075 120.8937 1000 b
JohnSeisNA 8.5138 8.96600 11.127796 9.35725 12.63630 118.4796 1000 b
AranStderr 4.3324 4.41995 4.634949 4.47440 4.62620 14.3511 1000 a
library(ggplot2)
autoplot(mbm)
आप pastec पैकेज से फंक्शन स्टेट्सडेस का उपयोग कर सकते हैं।
library(pastec)
stat.desc(x, BASIC =TRUE, NORMAL =TRUE)
आप इसके बारे में और जानकारी यहाँ से प्राप्त कर सकते हैं: https://www.rdocumentation.org/packages/pastecs/versions/1.3.21/topics/stat.desc
याद रखें कि एक रेखीय मॉडल का उपयोग करके प्राप्त किया जा सकता है, एक एकल अवरोधन के खिलाफ चर को फिर से प्राप्त करके, आप इसके लिए lm(x~1)फ़ंक्शन का भी उपयोग कर सकते हैं !
लाभ हैं:
confint()car::linear.hypothesis()sandwich## generate data
x <- rnorm(1000)
## estimate reg
reg <- lm(x~1)
coef(summary(reg))[,"Std. Error"]
#> [1] 0.03237811
## conpare with simple formula
all.equal(sd(x)/sqrt(length(x)),
coef(summary(reg))[,"Std. Error"])
#> [1] TRUE
## extract confidence interval
confint(reg)
#> 2.5 % 97.5 %
#> (Intercept) -0.06457031 0.0625035
रेप्रेक्स पैकेज (v0.3.0) द्वारा 2020-10-06 को बनाया गया
y <- mean(x, na.rm=TRUE)
sd(y)var(y)विचरण के लिए मानक विचलन के लिए।
दोनों व्युत्पन्न n-1हर में उपयोग करते हैं इसलिए वे नमूना डेटा पर आधारित होते हैं।