1c 5. Statistik: 5.3 Analys och hantering av statistiska data
Simulering
Vi skapar ett litet dataprogram i Python 3. I första raden tar vi in slumptalsfunktionerna.
import random
Därefter definierar vi variabler och en for-slinga.
socdem, annat=0,0 for n in range(0,5000): slumptal = random.random() if slumptal <= 0.283:socdem = socdem + 1 else: annat = annat + 1
Programmet genererar godtyckliga slumptal mellan #0# och #1#. Om talet är mindre eller lika med #0,283# (motsvarande #28,3~\%#), räknar vi det som en röst på Socialdemokraterna. Är talet större, räknar vi det som en röst på något annat parti. Slingan bestämmer att slumptal ska genereras #5 \; 000# gånger, motsvarande det antal personer som svarade i undersökningen, och räknar ihop antalet ”röster” för respektive alternativ
Sist definierar vi en variabel för procentandel, avrundad till en decimal, och låter programmet skriva ut resultatet. Hela koden blir:
import random socdem, annat = 0,0 for n in range(0,5000): slumptal = random.random() if slumptal <= 0.283: socdem = socdem + 1 else: annat = annat + 1 procentandel = round(100*socdem/5000, 1) print('socialdemokraterna: ',socdem,' annat parti: ',annat,' andel: ',procentandel,'%')
Kopiera programmet och kör det tio gånger. Hur ofta får du ett procentvärde under #27,6#?
Att köra simuleringen tio gånger är inte tillräckligt för att dra någon bestämd slutsats. Genom att ”bygga in” programmet i ytterligare en for-slinga, kan vi i stället automatiskt köra det exempelvis #3 \ 000# gånger. Vi definierar en variabel för procentvärden mindre eller lika med #27,6# och låter programmet räkna ihop hur många gånger av de #3 \ 000# vi får sådana. Till slut får programmet räkna ut procentandelen för detta och skriva ut alltihop. För att slippa få #3 \ 000# rader med utskrivna delresultat, kommentarsmarkerar vi print-kommandot i den inre for-slingan med #
. Hela programmet blir:
import random under276=0 for n in range(0,3000): socdem, annat = 0,0 for n in range(0,5000): slumptal = random.random() if slumptal <= 0.283: socdem = socdem + 1 else: annat = annat + 1 procentandel = round(100*socdem/5000, 1) # print('socialdemokraterna: ',socdem,' annat parti: ',annat,' andel: ',procentandel,'%') if procentandel <= 27.6: under276 = under276 + 1 sannolikhet = round(under276/3000,3) print('sannolikhet för ett värde under 27,6 %: ', sannolikhet)
Kör detta program några gånger. Ungefär hur stor är sannolikheten för ett värde under #27,6~\%#?
I riksdagsvalet 2018 fick Centerpartiet #8,6~\%# av rösterna. I den senare väljarundersökningen var värdet för partiet #9,7~\%#, det vill säga #1,1# procentenheter högre.
Justera programmet, så att det i stället mäter sannolikheten för att ett stickprov på #5 \ 000# skulle ge ett värde större eller lika med #9,7~\%#, om det verkliga värdet var #8,6~\%#. Ungefär hur stor är denna sannolikhet?
I samma väljarundersökning fick Sverigedemokraterna #16,4~\%#. I det föregående riksdagsvalet 2018 hade partiet fått #17,5~\%# av rösterna. Antag att det verkliga värdet för partiet i hela populationen låg kvar på #17,5~\%#. Ungefär hur stor skulle då sannolikheten vara för att ett stickprov med #5 \ 000# svarande gav #16,4~\%# eller lägre?