• No results found

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

Related documents