»
S
I
D
E
B
A
R
«
Stichprobenfehler
Sep 24th, 2013 by mark

In Wahlzeiten wird sehr oft über den Fehler bei Umfragedaten diskutiert. Dabei gibt es viele Fehlerquellen wie die Wahl der falschen Stichprobe (gewisse Wählerschichten sind zb schwerer zu befragen als andere), der Befragte sagt nicht die Wahrheit und so weiter.
Neben diesen Fehlern gibt es auch den rein mathematischen Stichprobenfehler, der daraus folgt, dass eben nicht alle Teilnehmer einer Wahl befragt werden können, sondern eben nur ein kleiner Teil, eben die Stichprobe.

Am einfachsten kann man sich den Stichprobenfehler bei sehr kleinen Stichproben vorstellen: Befragt man zur Nationalratswahl zum Beispiel nur drei Leute könnte man als Antworten ÖVP, FPÖ und Stronach erhalten. Der Rückschluß das jeder dieser drei Parteien also 33.3% aller Stimmen erhalten werden ist nicht sonderlich stichhaltig.

Der Fehler ist aber auch bei deutlich größeren Stichproben nicht zu vernachlässigen hier als Beispiel eine Bevölkerung von 5.000.000 von den denen

SPO 27
OVP 22
FPO 21
Grune 14
Stronach 6
BZO 4
KPO 1
PIRAT 1
NEOS 4

wählen würden. Diese Verteilung ist also die angenomme “Wahrheit” (ich habe eine der letzten Umfragen als Basis genommen). Zum Beispiel bedeudet das, dass in dieser Bevölkerung 1.350.000 Menschen die SPÖ wählen würden.

Zieht man jetzt aus dieser Bevölkerung jeweils Stichproben von 500 Befragten, so kann man zum Beispiel diese zehn folgenden Resultate erhalten:






SPO 28.8 25.6 23.2 30.2 31.2 25.8 26.6 27.2 26.2 26.4 31.6
OVP 24.4 23.6 24.8 20 19.6 23.6 16 25.2 25 20.6 21.4
FPO 21.2 19.4 21.4 22 18.6 21 23.2 20.4 22.4 20.6 17.4
Stronach 4.8 7 6.4 5.8 6.4 5.4 7.8 7 5.4 6.4 5.6
Grune 11.8 15.6 14.4 15.2 14.8 13.2 14.8 11.4 13.2 15 14.2
BZO 3.2 4 4 2.2 3.8 5.4 3.8 3.2 3.4 5 4
KPO 1.2 1 1.6 0.2 1.4 0.8 1.2 0.8 1 1.4 1.6
PIRAT 1 1 1.4 1.2 0.4 0.6 2.2 0.6 0.4 0.6 0.4
NEOS 3.8 3 3 3.4 4 4.4 4.6 4.4 3.2 4.2 4




Jede Spalte dieser Tabelle ist also das Ergebnis einer “Umfrage”. Alleine die rein mathematische Schwankungsbreite dieser Befragung ist beispielsweise bei der SPÖ 23.20 bis 31.60% oder bei den NEOS 3.00 bis 4.60%! Dabei geht man wie gesagt aber auch noch davon aus, dass die Auswahl der Stichprobe perfekt ist, und auch keiner der Teilnehmer die Unwahrheit sagt.

Die Stichprobengröße von 500 Teilnehmern habe ich deswegen gewählt weil es ersten eine oft gewählte Größe ist, und zweitens weil es mir auch als realistisches Beispiel für den Fehler einer “realen” Umfrage mit 1000 Teilnehmern scheint.

Sieht man sich meine Zahlen an, fragt man sich wie es die Meinungsforschungsinstitute schaffen derart ähnliche Resultate zu produzieren.
Wie stichhaltig die Vorhersagen sind, hat man ohnedies bei allen letzten Wahlen gesehen.

Für diejenigen die es genau interessiert hier das Perl Script mit dem ich die Daten generiert haben – falls sich jemand damit genauer auseinandersetzen möchte, kann er mich gerne kontaktieren


use strict;
use warnings;

use Storable;
use Data::Dumper;

my $sample_size = 500;
my $sample_count = 10;
my $filename = 'wahlausgang2013.nstore';
my $population_count = 5_000_000;

my %p = (
SPO => 27,
OVP => 22,
FPO => 21,
Grune => 14,
Stronach => 6,
BZO => 4,
KPO => 1,
PIRAT => 1,
NEOS => 4,
);

my $population = [];

if (! -f $filename) {
my @dist;
foreach my $party (keys %p) {
printf "%s: %s%%\n", $party, $p{$party};
for (my $i = 1 ; $i <= $p{$party}; $i++) {
push (@dist, $party);
}
}

my $stats = {};
for (my $i = 0; $i < $population_count; $i++) {
my $r = int(rand(100));
die "*** out of bounds" if $r < 0 || $r > 100;
push $population, $dist[$r];
$stats->{$dist[$r]}++;
}

foreach my $party (keys %$stats) {
printf "%s [%s]%%\n", $party, $stats->{$party}/$population_count;
}
Storable::nstore($population, $filename);
} else {
$population = Storable::retrieve($filename);
}

printf "Population Size [%s], Sample Size [%s]\n", $population_count, $sample_size;

my $stats = [];
for (my $j = 0; $j <= $sample_count; $j++) {
for (my $i = 0; $i <= $sample_size; $i++) {
my $r = int(rand($population_count));
$stats->[$j]->{$population->[$r]}++;
}
}

foreach my $party (keys %{$stats->[0]}) {
printf "%s", $party;
for (my $j = 0; $j <= $sample_count; $j++) {
printf " %3.2f", $stats->[$j]->{$party}*100/$sample_size;
}
print "\n";
}

Geburtseinleitung
Okt 8th, 2011 by mark

Auf diesem Weg vielen Dank für die vielen Glückwünsche!

geburtsbillet-matilda-w

Erdbebenstärke, oder das Rechnen mit Zehnerpotenzen
Mrz 10th, 2011 by mark

Nun nach dem Erdbeben von heute (dem 10.3.2011) in Japan mit einer Magnitude von 8.9 möchte ich endlich den Artikel fertigschreiben den ich nach dem Erdbeben in Chile begonnen habe.
Nach dem schweren Erdbeben in Chile am 27. März 2010 mit der Stärke von 8,8 auf der Richter Skala war immer wieder zu hören, daß das etwa 64 mal so stark wie das Beben in Haiti mit einer Stärke von 7 war.

Wieso 64, woher kommen, wie kommt man da drauf? Viele physikalische Skalen oder Meßeinheiten sind logarithmisch, daß bedeutet,daß es sich bei diesen Zahlen nicht um den kompletten Wert handelt, sondern nur um die “Hochzahl” zu der Basis von zehn.

Das bedeutet eine Stärke von 7 ist eigentlich ein Wert von 107 = 10,000,000 also 10 Millionen. 8,8 ist also dann 108,8 was sich dann zu 630,957,344 also grob 631 Millonen ergibt. Dazu brauchen die meisten Leute dann allerdings einen Taschenrechner um mit gebrochenen Hochzahlen zu rechnen.

Wie kann man aber im Kopf abschätzen wie sich diese beiden Zahlen 107 zu 108.8 zueinander verhalten? An dieser Stelle muß man sich nun eine Zahl merken, nämlich 0.3. Was hat es mit dieser Zahl (0.3) nun auf sich, 100.3~2. Das bedeutet, daß jede Zunahme der Erdbebenstärke (oder jeder anderen Hochzahl zur Basis 10) um 0.3 eine Verdoppelung bedeutet.
Gut wir bilden die Differenz aus 7 und und 8.8, daß ist 1.8. 1.8 müssen wir nun also durch 0.3 dividieren was 6 zum Ergebnis hat. Man muß also 6 mal verdoppeln. Daß kann man natürlich auch als 26 schreiben. Da natürlich jedermann/frau die 2er Potenzen auswendig kann sind wir nun schon zum Ergebnis gekommen, nämlich 64.

Bei diesem Beispiel haben wir zahlenwertmäßig “Glück” gehabt, weil 1.8 ohne Rest durch 0.3 teilbar ist. Ist die Differenz zB 1.9, dann wissen wir, daß das Ergebnis zwischen 64 und 128 liegen muß (26 und 27). Da kann man dann fünf gerade sein lassen und linear interpolieren, dh 128-64=64, das wiederum dritteln wir, weil zwischen den 1.8 (64) und 2.1(128) drei 0.1 Schritte liegen. Somit kommen wir auf 64+21=85. Dh 8.9 nach Richter ist grob 85 mal so stark wie 7 – der richtige Wert wäre 79.4, wir sind also hinlänglich genau mit dieser Methode.

Das war ja ganz einfach …

neue Homepage
Apr 13th, 2006 by mark

nun habe ich endlich auch meine Homepage auf wordpress umgestellt

»  Substance: WordPress   »  Style: Ahren Ahimsa