Der Standardfehler aus klassischer Sicht - Ein kleiner Überblick

Der Standardfehler ist ein Streuungsmaß für eine Schätzfunktion \(\hat{\vartheta}\) für einen unbekannten Parameter \(\vartheta\) der Grundgesamtheit. Er ist definiert als \[\sigma(\hat{\vartheta}) = + \sqrt{\operatorname{Var}(\hat{\vartheta})}.\]

Bei einem erwartungstreuen Schätzer ist daher der Standardfehler ein Maß für die durchschnittliche Abweichung des geschätzten Parameterwertes vom wahren Parameterwert. Je kleiner der Standardfehler ist, desto genauer kann der unbekannte Parameter mit Hilfe der Schätzfunktion geschätzt werden.

Für eine Stichprobe vom Umfang \(n\) mit Standardabweichung \(\sigma\) gilt für den Standardfehler:

  • des Stichprobenmittel: \(\sigma(\overline{X}) = \frac{\sigma}{\sqrt{n}}\)

Unterstellt man eine Stichprobenverteilung, so kann der Standardfehler anhand der Varianz der Stichprobenverteilung berechnet werden:

  • Binomialverteilung mit Parametern \(N,\, p\): \(\sigma_{\bar x,\mathrm{binom}} = \frac{\sqrt{ N \cdot p \cdot (1-p)}}{\sqrt n}\)

  • Exponentialverteilung mit Parameter \(\lambda\) (Erwartungswert = Standardabweichung = \(1/\lambda\)): \(\sigma_{\bar x,\mathrm{exp}} = \frac{1}{\lambda\sqrt n}\)

  • Poisson-Verteilung mit Parameter \(\lambda\) (Erwartungswert = Varianz = \(\lambda\)): \(\sigma_{\bar x,\mathrm{poisson}} = \sqrt{\frac{\lambda}{n}}\)

Beispiel: Binomialverteile Stichprobe

printAllSE.binom <- function(n, N, prob, bootstrapN=1000, theta=mean) {
  stipro <- rbinom(n, N, prob)
  bootvert <- do(bootstrapN) * theta(resample(stipro))
  se.boot <- sd(bootvert$theta)
  se.exakt <- sqrt(N*prop*(1-prop))/sqrt(n)
  se <- list(se.exakt, se.boot)
  names(se) <- c("exakt", "boot")
  return(se)
}

printAllSE.poision <- function(n, lambda, bootstrapN=1000, theta=mean) {
  stipro <- rpois(n, lambda)
  bootvert <- do(bootstrapN) * theta(resample(stipro))
  se.boot <- sd(bootvert$theta)
  se.exakt <- sqrt(lambda/n)
  se <- list(se.exakt, se.boot)
  names(se) <- c("exakt", "boot")
  return(se)
}

printAllSE.normal <- function(n, mu=0, sigma=1, bootstrapN=1000, theta=mean) {
  stipro <- rnorm(n, mu, sigma)
  bootvert <- do(bootstrapN) * theta(resample(stipro))
  se.boot <- sd(bootvert$theta)
  se.exakt <- sqrt(sigma^2/n)
  se.geschaetzt <- sqrt(var(stipro)/n)
  se <- list(se.exakt, se.boot, se.geschaetzt)
  names(se) <- c("exakt", "boot", "geschaetzt")
  return(se)
}
n <- 100
N <- 70
prop <- 0.9

# Binomialverteilte:
for(n in c(30, 50, 100, 200, 500, 1000, 3000)) {
  cat("\nn=", n, "\n")
  for(prob in c(1/2, 1/3, 1/4, 1/5, 1/6)) {
    N <- floor(prob*n)
    cat("N=",N, "\n")    
    tmp <- printAllSE.binom(n , N, prob)
    cat(prob,": ", tmp$exakt, " (exakt), ", tmp$boot, " (boot), ", abs(tmp$exakt-tmp$boot), " (abs. Fehler) \n")
  }
}
## 
## n= 30 
## N= 15 
## 0.5 :  0.212132  (exakt),  0.2996921  (boot),  0.08756008  (abs. Fehler) 
## N= 10 
## 0.3333333 :  0.1732051  (exakt),  0.2309855  (boot),  0.0577804  (abs. Fehler) 
## N= 7 
## 0.25 :  0.1449138  (exakt),  0.230028  (boot),  0.08511424  (abs. Fehler) 
## N= 6 
## 0.2 :  0.1341641  (exakt),  0.1914001  (boot),  0.05723599  (abs. Fehler) 
## N= 5 
## 0.1666667 :  0.1224745  (exakt),  0.1436041  (boot),  0.02112966  (abs. Fehler) 
## 
## n= 50 
## N= 25 
## 0.5 :  0.212132  (exakt),  0.3525394  (boot),  0.1404073  (abs. Fehler) 
## N= 16 
## 0.3333333 :  0.1697056  (exakt),  0.273315  (boot),  0.1036094  (abs. Fehler) 
## N= 12 
## 0.25 :  0.1469694  (exakt),  0.2005751  (boot),  0.05360569  (abs. Fehler) 
## N= 10 
## 0.2 :  0.1341641  (exakt),  0.1867858  (boot),  0.0526217  (abs. Fehler) 
## N= 8 
## 0.1666667 :  0.12  (exakt),  0.1343281  (boot),  0.01432808  (abs. Fehler) 
## 
## n= 100 
## N= 50 
## 0.5 :  0.212132  (exakt),  0.349122  (boot),  0.13699  (abs. Fehler) 
## N= 33 
## 0.3333333 :  0.1723369  (exakt),  0.2724159  (boot),  0.100079  (abs. Fehler) 
## N= 25 
## 0.25 :  0.15  (exakt),  0.2371899  (boot),  0.0871899  (abs. Fehler) 
## N= 20 
## 0.2 :  0.1341641  (exakt),  0.1927453  (boot),  0.05858118  (abs. Fehler) 
## N= 16 
## 0.1666667 :  0.12  (exakt),  0.1463126  (boot),  0.02631257  (abs. Fehler) 
## 
## n= 200 
## N= 100 
## 0.5 :  0.212132  (exakt),  0.3311697  (boot),  0.1190377  (abs. Fehler) 
## N= 66 
## 0.3333333 :  0.1723369  (exakt),  0.2952654  (boot),  0.1229285  (abs. Fehler) 
## N= 50 
## 0.25 :  0.15  (exakt),  0.2033503  (boot),  0.05335033  (abs. Fehler) 
## N= 40 
## 0.2 :  0.1341641  (exakt),  0.1563642  (boot),  0.02220012  (abs. Fehler) 
## N= 33 
## 0.1666667 :  0.1218606  (exakt),  0.1407523  (boot),  0.01889169  (abs. Fehler) 
## 
## n= 500 
## N= 250 
## 0.5 :  0.212132  (exakt),  0.3497107  (boot),  0.1375787  (abs. Fehler) 
## N= 166 
## 0.3333333 :  0.1728583  (exakt),  0.2574557  (boot),  0.08459734  (abs. Fehler) 
## N= 125 
## 0.25 :  0.15  (exakt),  0.2186492  (boot),  0.06864923  (abs. Fehler) 
## N= 100 
## 0.2 :  0.1341641  (exakt),  0.185649  (boot),  0.05148495  (abs. Fehler) 
## N= 83 
## 0.1666667 :  0.1222293  (exakt),  0.146211  (boot),  0.02398172  (abs. Fehler) 
## 
## n= 1000 
## N= 500 
## 0.5 :  0.212132  (exakt),  0.345063  (boot),  0.132931  (abs. Fehler) 
## N= 333 
## 0.3333333 :  0.1731185  (exakt),  0.2646252  (boot),  0.09150675  (abs. Fehler) 
## N= 250 
## 0.25 :  0.15  (exakt),  0.2231931  (boot),  0.07319309  (abs. Fehler) 
## N= 200 
## 0.2 :  0.1341641  (exakt),  0.1833904  (boot),  0.04922629  (abs. Fehler) 
## N= 166 
## 0.1666667 :  0.1222293  (exakt),  0.1528499  (boot),  0.03062058  (abs. Fehler) 
## 
## n= 3000 
## N= 1500 
## 0.5 :  0.212132  (exakt),  0.3525232  (boot),  0.1403911  (abs. Fehler) 
## N= 1000 
## 0.3333333 :  0.1732051  (exakt),  0.2702559  (boot),  0.09705078  (abs. Fehler) 
## N= 750 
## 0.25 :  0.15  (exakt),  0.2196364  (boot),  0.0696364  (abs. Fehler) 
## N= 600 
## 0.2 :  0.1341641  (exakt),  0.1791849  (boot),  0.04502081  (abs. Fehler) 
## N= 500 
## 0.1666667 :  0.1224745  (exakt),  0.1466177  (boot),  0.02414318  (abs. Fehler)
# 
# Poisionverteilte:
for(n in c(30, 50, 100, 200, 500, 1000, 3000)) {
  cat("\nn=", n, "\n")
  for(lambda in c(1/2,1/3, 1/4, 1/5, 1/6)) {
    tmp <- printAllSE.poision(n, lambda)
    cat(lambda,": ", tmp$exakt, " (exakt), ", tmp$boot, " (boot), ", abs(tmp$exakt-tmp$boot), " (abs. Fehler) \n")
  }
}
## 
## n= 30 
## 0.5 :  0.1290994  (exakt),  0.1243969  (boot),  0.004702575  (abs. Fehler) 
## 0.3333333 :  0.1054093  (exakt),  0.1002588  (boot),  0.005150442  (abs. Fehler) 
## 0.25 :  0.09128709  (exakt),  0.08302049  (boot),  0.008266599  (abs. Fehler) 
## 0.2 :  0.08164966  (exakt),  0.07318089  (boot),  0.008468764  (abs. Fehler) 
## 0.1666667 :  0.0745356  (exakt),  0.04481507  (boot),  0.02972053  (abs. Fehler) 
## 
## n= 50 
## 0.5 :  0.1  (exakt),  0.09339713  (boot),  0.006602873  (abs. Fehler) 
## 0.3333333 :  0.08164966  (exakt),  0.06811893  (boot),  0.01353073  (abs. Fehler) 
## 0.25 :  0.07071068  (exakt),  0.06970471  (boot),  0.00100597  (abs. Fehler) 
## 0.2 :  0.06324555  (exakt),  0.05739908  (boot),  0.005846471  (abs. Fehler) 
## 0.1666667 :  0.05773503  (exakt),  0.06721628  (boot),  0.009481251  (abs. Fehler) 
## 
## n= 100 
## 0.5 :  0.07071068  (exakt),  0.07809672  (boot),  0.007386041  (abs. Fehler) 
## 0.3333333 :  0.05773503  (exakt),  0.05174337  (boot),  0.005991656  (abs. Fehler) 
## 0.25 :  0.05  (exakt),  0.04781868  (boot),  0.002181325  (abs. Fehler) 
## 0.2 :  0.04472136  (exakt),  0.04141606  (boot),  0.003305295  (abs. Fehler) 
## 0.1666667 :  0.04082483  (exakt),  0.04997504  (boot),  0.009150211  (abs. Fehler) 
## 
## n= 200 
## 0.5 :  0.05  (exakt),  0.04892444  (boot),  0.001075565  (abs. Fehler) 
## 0.3333333 :  0.04082483  (exakt),  0.03717077  (boot),  0.00365406  (abs. Fehler) 
## 0.25 :  0.03535534  (exakt),  0.03747469  (boot),  0.002119349  (abs. Fehler) 
## 0.2 :  0.03162278  (exakt),  0.02947104  (boot),  0.002151735  (abs. Fehler) 
## 0.1666667 :  0.02886751  (exakt),  0.0281555  (boot),  0.0007120108  (abs. Fehler) 
## 
## n= 500 
## 0.5 :  0.03162278  (exakt),  0.03392637  (boot),  0.002303597  (abs. Fehler) 
## 0.3333333 :  0.02581989  (exakt),  0.02539741  (boot),  0.0004224743  (abs. Fehler) 
## 0.25 :  0.02236068  (exakt),  0.0223629  (boot),  2.223781e-06  (abs. Fehler) 
## 0.2 :  0.02  (exakt),  0.01972995  (boot),  0.0002700514  (abs. Fehler) 
## 0.1666667 :  0.01825742  (exakt),  0.0197222  (boot),  0.001464778  (abs. Fehler) 
## 
## n= 1000 
## 0.5 :  0.02236068  (exakt),  0.02245352  (boot),  9.283735e-05  (abs. Fehler) 
## 0.3333333 :  0.01825742  (exakt),  0.0185596  (boot),  0.0003021789  (abs. Fehler) 
## 0.25 :  0.01581139  (exakt),  0.01669539  (boot),  0.0008840021  (abs. Fehler) 
## 0.2 :  0.01414214  (exakt),  0.0150454  (boot),  0.0009032662  (abs. Fehler) 
## 0.1666667 :  0.01290994  (exakt),  0.01366569  (boot),  0.0007557503  (abs. Fehler) 
## 
## n= 3000 
## 0.5 :  0.01290994  (exakt),  0.01333761  (boot),  0.0004276694  (abs. Fehler) 
## 0.3333333 :  0.01054093  (exakt),  0.01085993  (boot),  0.000319002  (abs. Fehler) 
## 0.25 :  0.009128709  (exakt),  0.008925436  (boot),  0.0002032728  (abs. Fehler) 
## 0.2 :  0.008164966  (exakt),  0.008679877  (boot),  0.0005149115  (abs. Fehler) 
## 0.1666667 :  0.00745356  (exakt),  0.007160364  (boot),  0.0002931957  (abs. Fehler)
for(n in c(30, 50, 100, 200, 500, 1000, 3000)) {
  tmp <- printAllSE.normal(n)
  cat("\nn=", n, ": ", tmp$exakt, " (exakt), ", tmp$boot, " (boot), ", tmp$geschaetzt, "(geschätzt), ", abs(tmp$exakt-tmp$boot), " (abs. Fehler (boot))", abs(tmp$exakt-tmp$geschaetzt),"(abs. Fehler (geschätzt)) \n")
}
## 
## n= 30 :  0.1825742  (exakt),  0.1835327  (boot),  0.1860335 (geschätzt),  0.0009585326  (abs. Fehler (boot)) 0.003459307 (abs. Fehler (geschätzt)) 
## 
## n= 50 :  0.1414214  (exakt),  0.1371073  (boot),  0.1374232 (geschätzt),  0.004314035  (abs. Fehler (boot)) 0.003998187 (abs. Fehler (geschätzt)) 
## 
## n= 100 :  0.1  (exakt),  0.1026103  (boot),  0.1027873 (geschätzt),  0.002610263  (abs. Fehler (boot)) 0.002787325 (abs. Fehler (geschätzt)) 
## 
## n= 200 :  0.07071068  (exakt),  0.06443724  (boot),  0.06457342 (geschätzt),  0.006273439  (abs. Fehler (boot)) 0.006137256 (abs. Fehler (geschätzt)) 
## 
## n= 500 :  0.04472136  (exakt),  0.04366336  (boot),  0.04297065 (geschätzt),  0.001057998  (abs. Fehler (boot)) 0.00175071 (abs. Fehler (geschätzt)) 
## 
## n= 1000 :  0.03162278  (exakt),  0.03126506  (boot),  0.03133075 (geschätzt),  0.000357721  (abs. Fehler (boot)) 0.0002920245 (abs. Fehler (geschätzt)) 
## 
## n= 3000 :  0.01825742  (exakt),  0.01858404  (boot),  0.01852834 (geschätzt),  0.0003266222  (abs. Fehler (boot)) 0.0002709226 (abs. Fehler (geschätzt))
Norman Markgraf
Norman Markgraf
Diplom-Mathematiker

Norman Markgraf ist freiberuflicher Dozent für Mathematik, Statistik, Data Science und Informatik, sowie freiberuflicher Programmierer.

Ähnliches