2010-04-20 8 views

Odpowiedz

113

Standardowy błąd jest tylko odchylenie standardowe podzielone przez pierwiastek kwadratowy z wielkością próby. Dzięki czemu można łatwo zrobić własną funkcję:

> std <- function(x) sd(x)/sqrt(length(x)) 
> std(c(1,2,3,4)) 
[1] 0.6454972 
74

Prawdopodobnie jest bardziej wydajny w użyciu var ... skoro faktycznie sqrt dwa razy w kodzie, raz aby uzyskać sd (kod do SD w badania i ujawnił poprzez wpisanie „SD”) ...

se <- function(x) sqrt(var(x)/length(x)) 
+3

Co ciekawe, twoja funkcja i Ian są prawie identyczne szybko. Testowałem je zarówno 1000 razy w porównaniu do 10^6 milionów losowań rnorm (niewystarczająca moc, aby popchnąć je mocniej niż to). Odwrotnie, funkcja plotrix była zawsze wolniejsza niż nawet najwolniejsze przebiegi tych dwóch funkcji - ale ma też o wiele więcej działań pod maską. –

+0

Jest tak prawdopodobnie dlatego, że przewaga funkcji Johna pozwala uniknąć jednego wywołania funkcji i obliczenia pierwiastka kwadratowego z jednej liczby. Jeśli ma jakąkolwiek przewagę, jest bardzo mały. –

+1

Nie tylko prawdopodobne, ale prawdziwe ... Robiłem taktowanie rnorm (5), ale wykonałem 5e4 egzekucji polecenia se. Moja wersja zajmuje około 2,5 sekundy, podczas gdy ta z dwoma sqrts zajmuje około 2.8. Niewielkie przyspieszenie. (Wykonałem kilka uruchomień i raportuję średnią zaokrągloną) – John

0

bardziej ogólnie, do standardowych błędów na każdym innym parametrem, można skorzystać z pakietu startowego dla symulacji bootstrap (lub zapisać je na własną rękę)

51

wersja powyższej odpowiedzi Johna, która usuwa brzydkie NA:

stderr <- function(x) sqrt(var(x,na.rm=TRUE)/length(na.omit(x))) 
-10
y <- mean(x, na.rm=TRUE) 

sd(y) dla odchylenia standardowego var(y) dla wariancji.

Obie pochodne używają w mianowniku n-1, więc bazują na danych przykładowych.

Powiązane problemy