SIDEBAR
»
S
I
D
E
B
A
R
«
Stichprobenfehler
September 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";
}


Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

»  Substance:WordPress   »  Style:Ahren Ahimsa