Denna bilaga är i första hand tänkt för lärare och innehåller all R kod som behövs för att genomföra lektion 1 till 3, se bilaga 4 för mer detaljer.
##############################
#All kod i R exekveras genom att trycka ned Ctrl och R.
#Man kan exekvera en eller flera rader kod samtidigt.
#Mest pedagogiskt är att köra en rad åt gången.
#Hashtag (#) är markeringen för kommentar i R och det
#som står efter tecknet kommer inte att exekveras.
#########
#Datasteg (inmatning/inläsning)
#########
#Matar in data från grafen: "Honey producing bee
#colonies (US) correlates with marriage rate in Vermont"
#(tylervigen.com). Matar in de tre variablerna
#(som här döpts till "bin", "gifta", "år") som separata
#vektorer/kolumner.
bin <- c(2652, 2622, 2550, 2574, 2599, 2554, 2409, 2394, 2443, 2342, 2498)
gifta <- c(10, 10, 9.8, 9.8, 9.7, 9.4, 8.9, 8.6, 8.5, 7.9, 8.7)
år <- c(1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009)
#Om man vill kontrollera kolumnerna man matat in skriver
#man bara kolumnens namn.
bin gifta år
58
#De tre kolumnerna sammanbinds till ett dataset (här
#kallat "data1") för att möjliggöra analyser.
data1 <- data.frame(bin, gifta, år)
#Kontroll så att data1 ser korrekt ut.
data1
#Notera: för att anropa en variabel i data1 behöver vi
#skriva följande:
data1$bin data1$gifta data1$år
#Fråga: På vilket steg i flödesschemat i statistiska
#undersökningar är vi nu?
#########
#Lägesmått (centralmått) för variablerna "bin" och
#"gifta". Koppla till data för att förklara.
#SE ÄVEN BILAGA 4, 2.1 FÖR EXEMPEL PÅ FÖRKLARINGAR mean(data1$bin)
median(data1$bin) mean(data1$gifta) median(data1$gifta)
#Spridningsmått för variablerna "bin" och "gifta".
#Koppla till data för att förklara.
#Kommentera skillnader i sd mellan variablerna (skala!).
#SE ÄVEN BILAGA 4, 2.2 FÖR EXEMPEL PÅ FÖRKLARINGAR sd(data1$bin)
sd(data1$gifta)
###
#Visualisering
###
#Histogram och lådagram (boxplot) för ”bin och ”gifta”.
#Diskutera.
#SE ÄVEN BILAGA 4, 2.3 FÖR EXEMPEL PÅ FÖRKLARINGAR
59
#Problematisera: vad ska vara x och vad ska vara
#y variabel i plot!
#(Beror på påstående/frågeställning i detta fall).
#I plotfunktionen kommer den variabel som anges först
#sättas som x och den andra variabeln som y.
#Detta punktdiagram säger att om antalet bin ökar, ökar
#andelen gifta.
plot(data1$bin, data1$gifta)
#Och denna säger att om andelen giftermål ökar,
#ökar antalet bin.
plot(data1$gifta, data1$bin)
#De säger i stort samma sak i form av samband, men den
#tolkning vi gör är olika, eller hur?
#Fråga: På vilket steg i flödesschemat i statistiska
#undersökningar är vi nu?
#########
#Statistisk metod/analys
#########
###
#Korrelation (Pearson - vanligaste metoden)
###
#Definiera korrelation: linjärt samband, -1<= r <=1
#(0 ingen korrelation)
#SE BILAGA 4, 2.4 FÖR EXEMPEL PÅ FÖRKLARINGAR
#I corfunktionen kommer den variabel som anges först
#vara x och den andra variabeln y; men det spelar ingen roll hur man sätter dem i praktiken eftersom korrelat-ionen blir densamma - visas nedan.
#Denna korrelation x=antalet bin, y=andelen gifta.
cor(data1$bin, data1$gifta, method = c("pearson"))
#Denna korrelation x=andelen gifta, y=antalet bin.
cor(data1$gifta, data1$bin, method = c("pearson"))
60
#Sammanfattning: Hög korrelation, vi kan grafiskt se att
#det är rimligt att korrelationen är hög.
#MEN: vad påverkar vad egentligen? Dvs. vad är
orsak-#verkan (relation mellan x och y)?
#Fråga: Är det rimligt att det finns ett samband mellan
#variablerna överhuvudtaget?
#Varför tror vi det? Vem påstår det? Även om vi utgår
#från att data är korrekt, vilka mekanismer kan koppla
#ihop antalet bin med giftermål?
#Kan det finnas någon annan variabel som förklarar det
#samband vi ser?
#SE ÄVEN BILAGA 4, 2.4 FÖR EXEMPEL PÅ FÖRKLARINGAR
#År?
plot(data1$år, data1$bin) plot(data1$år, data1$gifta)
#Både antalet bin och andelen giftermål sjunker över tid
#(förutom 2009).
#Sambandet mellan bin och giftermål beror alltså på år.
#Nedan finns en närmare förklaring vid behov.
#Om man vill se korrelationen mellan alla variabler i
#data1, t.ex. hur "bin" respektive "gifta" korrelerar
#till "år" kan man skriva så här:
cor(data1, method = c("pearson"))
#I matrisen ser man att det är en hög negativ
#korrelation mellan bin och år samt gifta och år (vilket
#man också ser i graferna ovan), därför ser det ut som
#att det finns ett samband mellan bin och gifta.
#VIKTIGT att koppla till originalfiguren (Tyler Vigen),
#se bilaga 5 och jämföra grafen där med det som tagits
#fram ovan.
##################
#LEKTION 3, EXEMPEL 3
##################
##DENNA FÖRSTA DEL BARA FÖR LÄRARE##
#Importering av dataset till R.
#Ibland behöver man importera data från andra filformat,
#om man tex önskar byta dataset i lektionsserien. Ett
#vanligt filformat är csv.
#I det här exemplet importeras datasetet "Fire" som är i
#csv format till R.
61
#Notera att SÖKVÄGEN MÅSTE ÄNDRAS och datasetets namn
#måste ändras.
#För att veta sökvägen till en fil, läs instruktionerna
#i http://www.dator.xyz/System/basic-computer-skills/201297.html
#Datasetet döps till "fire".
fire <- read.csv("C:/Users/Katarina/Desktop/Fire.csv", header = TRUE, sep =";")
fire
#Ibland kan variabelnamnen se konstiga ut vid import
#till R. Då kan man ändra dem så här:
#Be R lista kolumnnamnen i datasetet.
colnames(fire)
#Ändring av variabelnamn kan göras på många olika sätt.
#Ett bassätt är att utgå från kolumnens position i
#matrisen enligt nedan.
names(fire)[1] <- "damage"
names(fire)[2] <- "fire"
names(fire)[3] <- "firefighters"
#Checka så att det blev rätt genom att...
colnames(fire) fire
#Spara datasetet i R format. OBS: sökväg!
save(fire, file = ("C:/Users/Katarina/Desk-top/fire.RData"))
#För att öppna den i R gör enligt nedan. OBS: sökväg!
load("C:/Users/Katarina/Desktop/fire.RData")
#I denna lektionsserie ingår inte att importera data
#eller att ändra variabelnamn. Men skulle det bli
#problem eller nya data ska användas gör enligt ovan.
######################################
##ALLMÄN DEL - BÖRJA GENOMGÅNGEN HÄR##
######################################
#########
#Datasteg (inmatning/inläsning)
#########
#Denna lektion ska färdig inmatat data i R-format
#öppnas.
62
#OBS: Kom ihåg att ändra sökväg i koden nedan! Se:
#http://www.dator.xyz/System/basic-computer-skills/201297.html
load("C:/Users/Katarina/Desktop/fire.RData")
#För att titta på data skriver vi namnet på datasetet.
fire
#Notera också att det går att öppna dataset i en
#dataeditor. Dataseten i denna lektionsserie är små,
#men visa att det går att titta på dem via:
edit(fire)
#Notera att dataeditor fönstret MÅSTE STÄNGAS ned innan
#ytterligare kod kan exekveras.
#########
#Lär-känna-data steg
#(deskriptiv statistik och visualisering)
#########
#Koppla ihop lägesmått (medelvärde) med histogram;
#alla variabler, eller i alla fall för y-variabeln
#damage. Be eleverna själva ta fram medelvärdet för
#variablerna. Om tid finns, be eleverna
#titta på SD också (för damage) i relation till
#histogrammet, samt lådagram (se lektion 2).
hist(fire$damage)
#Titta på samband i punktdiagram. Be eleverna själva ta
#fram graferna.
63
###
#Korrelation (Pearson - vanligaste metoden)
###
#Be eleverna ta fram och tolka korrelationen mellan
#firefighters och damage.
cor(fire$firefighters, fire$damage, method = c("pear-son"))
#Fråga: På vilket steg i flödesschemat i den statistiska
#undersökningar är vi nu?
#Gå igenom regressionsanalys (enkel linjär regression).
#Statistisk modell SE BILAGA 4, 3.1 FÖR EXEMPEL PÅ
#FÖRKLARINGAR
#Bygger på funktionen "rät linje". En rät linje måste ha
#startpunkt (intercept)och lutning. Men i
#regressionsanalys drar man inte vilken rät linje som
#helst, den ska dras ”i mitten av punktsvärmen” - minsta
#kvadratmetoden.
#SE ÄVEN BILAGA 4, 3.1 FÖR EXEMPEL PÅ FÖRKLARINGAR
#I R kan man få fram intercept och slope (startpunkt och
#lutning) med hjälp av följande kommando.
#lm står för linear model. Notera att y ska vara på
#vänstersidan av ~ och x på höger.
lm(fire$damage ~ fire$firefighters)
#Via kommandot ovan får vi fram startpunkt och lutning
#och kan plotta in regressionslinjen i grafen.
plot(fire$firefighters, fire$damage) abline(-11.54, 42.73)
#Tolkning av intercept? Tolkning av slope? Går linjen "i
#mitten" av punkterna? Avstånd mellan punkter och linje?
#Koppla till korrelation: tex. positiv korrelation –
#positiv lutningskoefficent.
##Men är resultatet rimligt? Ju fler brandmän desto
##större skada?
##Finns det något som har samband med antal brandmän och
##också till skadestorlek? Rita.
#Storleken på branden? Påverkar den antalet brandmän?
#Påverkar den skadans storlek? Hur?
#Be eleverna kontrollera själv med hjälp av plot() och cor() #funktionerna.
64
65