8 Exempel och case studies

Här följer några exempel på när R användts i analyser på Demoskop och inspiration om vad som är möjligt i R. Jag går inte igenom exemplen i detalj utan länkar till projekten eller vidareläsning.

8.1 Gapmindervisualisering av Demoskops värderingskarta

I det här dokumentet har vi inte pratat så mycket om visualiseringar i R. Det är i huvudsak på grund av att de flesta av våra visualiseringar (på gott och ont) görs i PowerPoint. R är också mycket bra för visualiseringar, men är man vad vid “point and klick” så kan det kännas lite ovant att programmera grafer.

Jag kommer inte att gå in på det i detalj på hur man skapar grafer utan mer visa exempel. Om du är intresserad av att skapa visualiseringar i R rekommenderar jag den här kursen.

Det här exemplet känner ni säkert igen, det bygger på data från Gapminder. Med paketet plotly går det att skapa interaktiva datavisualiseringar över vår egen data. Ett exempel där vi gjort det är i visualiseringen av vår värderingskarta. Kod till det finns här: "P:\1exempel\R\Värderingskartan".

Här kan du läsa mer om plotly och komma igång med paketet.

library(plotly)
library(gapminder)

gapminder %>%
  plot_ly(
    x = ~gdpPercap, 
    y = ~lifeExp, 
    size = ~pop, 
    color = ~continent, 
    frame = ~year, 
    text = ~country, 
    hoverinfo = "text",
    type = 'scatter',
    mode = 'markers'
  ) %>%
  layout(
    xaxis = list(
      type = "log"
    )
  )

8.2 Spara grafer i Plotly

I princip tar plotly grafer från R och översätter dom till HTML. Det innebär att det krävs något som kan läsa html, exempelvis en webbläsare, för att läsa graferna. Senare PowerPoint-versioner har stöd för HTML-grafer men i dagsläget har PowerPoint 2007 (som vi använder på Demoskop) inte det.

Grafer som du vill spara i Plotly sparas på plotlys hemsida.

Demoskop betalar för att använda Plotlys tjänster för att spara grafer privat på plot.ly. Du kan logga in och kolla på graferna själv:

username: demoskop password: floragatan13

Hur du skapar och sparar grafer kan du titta på i denna tutorial. Vi använder bland annat Plotly för att visualisera boprisindikatorn på hemsidan. Koden för att göra det finns här i "P:\_Kund\SEBB\1019\Till hemsidan".

8.3 Beräkna bilavstånd mellan platser

I en undersökning för Parken Zoo använde vi R för att beräkna avståndet från där respondenterna bodde till Parken Zoo. Det gjorde vi genom Google’s öppna API. Kod för projektet finns i "P:\_Kund\PAZO\0001\PAZO0001 R-project".

8.4 Koppla Google Analytics till R

Många av våra kunder har Google Analytics. Vissa använder och utvärderar det frekvent, andra har det mest för att man ska ha det. Oavsett vilket så kan man genom R erbjuda dem att koppla deras GA till R och på så sätt ladda ner data från Googles tjänst. Fördelen är om man ska göra det flera gånger, exempelvis en gång i månaden, då sparar vi tid på att bara köra ett R-script istället för att logga in med deras konto på Google.

Ä du nyfiken på hur man kopplar R till Google Analytics? Här finns en superbra tutorial. Där finns också exempel på olika analyser som är möjliga.

8.5 Koppla Meltwater till R

Demoskop använder framför allt Meltwater för omvärldsbevakning. Meltwater har en API för sin data som jag byggt ett paket för att kommunicera med. Om vi exempelvis har en kund som vi ska göra frekvent omvärldsanalys för kan det vara värt att bygga script i R som automatiskt laddar ner data från Meltwater.

Hur du använder paketet kan du se här.

Nyfiken på hur man skapar automatiskt uppdaterade script i R? Kika här.

8.6 Tidsserieanalys i R

R har flera olika paket för att göra så kallade tidsserieanalyser. Tidsserieanalys är ett samlingsbegrepp för olika tillvägagångssätt att hantera data över tid. Med hjälp av tidsserieanalys kan man dela upp tidsserier i observerade värden, trend, säsong och random noise. Tidsserieanalys kräver i regel data som helst går ett flertal enheter tillbaka i tiden. I en månadsmätning vill man gärna ha minst 24 stycken.

I “P:exempel” hittar du bland annat ett exempel på tidsserieanalys i R.

Tidsserieanalys kan vara en väldigt bra analysmetod på data från Google Analytics.

8.7 Regression i R

R är byggt för statisisk analys. Att göra en linjär regressionsanalys är därför inte särskilt svårt. Däremot finns det massa saker runt omkring regression som man även bör kontrollera: fördelning i data, heteroskedasticitet, multikollinearitet m.m. Det här dokumentet täcker inte allt det. Det finns bra tutorials för det här på www.datacamp.com och här är en gratis-variant.

Här är ett kort exempel på logistiskt regression i R. Vi testar hur avståndet till Parken Zoo påverkar sannolikheten att i första hand åka till Parken Zoo om man väljer att åka till en djurpark.

library(haven)
data <- read_sas("P:\\_Kund\\PAZO\\0001\\Data\\pazomvikt_tidig.sas7bdat")

# Skapa beroende dummy-variabel
data <- data %>%
  mutate(helst_pz = ifelse(helst == 1, 1, 0))

model <- glm(helst_pz ~ h_pazo, data = data, family = binomial)

summary(model)
## 
## Call:
## glm(formula = helst_pz ~ h_pazo, family = binomial, data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -0.6501  -0.3507  -0.3309  -0.2631   2.8848  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -1.3664     0.3641  -3.753 0.000175 ***
## h_pazo       -1.0226     0.2644  -3.867 0.000110 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 450.7  on 1018  degrees of freedom
## Residual deviance: 435.6  on 1017  degrees of freedom
##   (2 observations deleted due to missingness)
## AIC: 439.6
## 
## Number of Fisher Scoring iterations: 6

8.8 Faktoranalys och klustering

Att genomföra faktoranalys och (segmentering)klustering i R är förhållandevis enkelt. Det som ställer till det något med undersökningsdata är vikterna. R:s grundfunktioner för faktoranalys och klustering tar inte hänsyn till vikt. Däremot finns det ett paket specifikt byggt för avancerade analyser av undersökningar där funktionerna i princip alltid tar hänsyn till vikterna.

Läs mer om paketet survey här.

8.9 Viktning i R

Här finns en tutorial för hur du konstruerar vikter i R. Algoritmen som används är i princip densamma som SAS och generar näst intill identiska resultat.

8.10 Skapa automatiska rapporter i R

En av R:s främsta styrkor är förmågan att kunna skapa automatiserade rapporter. Det här görs med formatet Rmarkdown. Exempelvis är det så det här dokumentetet är skapat. Man kan genom RMarkdown skapa PDF, Word, Hemsidor, HTML-rapporter m.m. Här finns mer information om Rmarkdown.

8.11 Skapa PowerPoint-rapporter med R

Jag har flertalet gånger gjort grafer i R och sedan skrivit dom till PowerPoint. Det kräver att man har kunskap om ggplot2 och sedan är det lite pilligt att via kod placera graferna rätt och se till att storleken är bra. Men när det väl är gjort kan man återanvända koden, vilket underlättar om det är någonting man gör återkommande.

Graferna blir inte “native” Excel-grafer (med en workbook bakom) utan de blir en samling shapes. Så det går inte att editera graferna i efterhand, mer än att ändra färger och typsnitt, men de ser väldigt snygga ut.

Det här har jag gjort med paketet ReporteRs, läs mer om det här.

Paketet mschart gör det möjligt att skapa native Excel-grafer och skriva dessa till Excel eller PowerPoint. För att graferna ska bli i vår mall så behöver graferna vara förutbestämda i en mall. Läs mer om hur du skapar native Excel-grafer i R här.

8.12 Skapa Dashboards i R

Utvecklingen av Dashboards och efterfrågan på dem har ökat lavinartat de senaste åren. Det finns flera olika sätt att skapa Dashboards i R. Det främsta sättet, och det som jag rekommenderar, är Shiny.

Shiny är ett paket i R som möjliggör skapande av HTML-sidor i R. Man kan genom Shiny skapa avancerade Dashboards med korstabeller, nedbrytningar och mycket mer.

Läs mer om Shiny här.

Här finns några häftiga exempel på Dashboards som gjorts i Shiny.