Existe algum comando para encontrar o erro padrão da média em R?
fonte
O erro padrão é apenas o desvio padrão dividido pela raiz quadrada do tamanho da amostra. Assim, você pode facilmente fazer sua própria função:
> std <- function(x) sd(x)/sqrt(length(x))
> std(c(1,2,3,4))
[1] 0.6454972
O erro padrão (SE) é apenas o desvio padrão da distribuição de amostragem. A variância da distribuição amostral é a variância dos dados dividida por N e SE é a raiz quadrada disso. Partindo desse entendimento, percebe-se que é mais eficiente usar a variância no cálculo da SE. A sd
função em R já faz uma raiz quadrada (o código para sd
está em R e é revelado digitando apenas "sd"). Portanto, o seguinte é mais eficiente.
se <- function(x) sqrt(var(x)/length(x))
para tornar a função um pouco mais complexa e lidar com todas as opções que você poderia passar var
, você poderia fazer esta modificação.
se <- function(x, ...) sqrt(var(x, ...)/length(x))
Usando essa sintaxe, pode-se tirar vantagem de coisas como a forma como var
lida com valores ausentes. Qualquer coisa que possa ser passada var
como um argumento nomeado pode ser usada nesta se
chamada.
stderr
é um nome de função embase
.stderr
NÃO calcula o erro padrão que exibedisplay aspects. of connection
stderr
calcula o erro padrão, ele estava avisando que este nome é usado no base, e John originalmente nomeou sua funçãostderr
(verifique o histórico de edição ...).Uma versão da resposta de John acima que remove os incômodos NAs:
stderr <- function(x, na.rm=FALSE) { if (na.rm) x <- na.omit(x) sqrt(var(x)/length(x)) }
fonte
stderr
nobase
pacote que faz outra coisa, então pode ser melhor escolher outro nome para esta, por exemplose
O pacote sciplot tem a função embutida se (x)
fonte
Como estou voltando a esta pergunta de vez em quando e porque ela é antiga, estou postando um benchmark para as respostas mais votadas.
Observe que para as respostas de @Ian e @John, criei outra versão. Em vez de usar
length(x)
, useisum(!is.na(x))
(para evitar NAs). Usei um vetor de 10 ^ 6, com 1.000 repetições.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
Resultados:
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)
fonte
mais geralmente, para erros padrão em qualquer outro parâmetro, você pode usar o pacote de inicialização para simulações de bootstrap (ou gravá-los por conta própria)
fonte
Você pode usar a função stat.desc do pacote pastec.
library(pastec) stat.desc(x, BASIC =TRUE, NORMAL =TRUE)
você pode encontrar mais sobre isso aqui: https://www.rdocumentation.org/packages/pastecs/versions/1.3.21/topics/stat.desc
fonte
Lembrando que a média também pode ser obtida por meio de um modelo linear, regredindo a variável contra uma única interceptação, você também pode usar a
lm(x~1)
função para isso!As vantagens são:
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
Criado em 2020-10-06 pelo pacote reprex (v0.3.0)
fonte
y <- mean(x, na.rm=TRUE)
sd(y)
para desvio padrãovar(y)
para variância.Ambas as derivações usam
n-1
o denominador, portanto, são baseadas em dados de amostra.fonte