Tilbake til dashboard

Metode og formler

Appen analyserer parlamentarisk voteringsnærhet. Den estimerer ikke velgerideologi eller partiprogram, og bør leses sammen med sakene, komiteene og den politiske konteksten.

Ordliste og faguttrykk

Disse begrepene brukes i grafene og metodeforklaringene. De er definert slik de brukes i denne appen, ikke nødvendigvis som generelle statsvitenskapelige standarddefinisjoner.

Ankerpartier
Partiene som inngår i den faste venstre-høyre-rekkefølgen R, SV, MDG, AP, Sp, V, H, KrF og FrP. De får ikke forhåndsbestemte tallverdier, men brukes til å orientere den beregnede aksen slik at venstre side havner mot -1 og høyre side mot +1.
Uankrede partier
Partier som finnes i dataene, men som ikke er plassert i ankerrekkefølgen. De kan vises i tabeller, saker og heatmap, men de påvirker ikke kalibreringen av venstre-høyre-aksen.
Personlig votering
En votering der representantenes individuelle stemmer er registrert. Hovedmodellene bruker slike voteringer fordi partienes for-/mot-andel kan beregnes fra representantstemmer.
Support share / partistemmeandel
Partiets andel for-stemmer blant representantene fra partiet som stemte for eller mot. Fravær inngår ikke i nevneren.
Partikohesjon
Et mål på hvor samlet partiet stemmer i en votering. Verdien er nær 1 når partiet stemmer samlet for eller samlet mot, og nær 0 når partiet er delt omtrent 50/50.
Rullerende vindu
Et analysepunkt basert på en gruppe etterfølgende voteringer, normalt 120 informative voteringer. Neste punkt flytter vinduet videre i tid og beregner posisjonen på nytt.
Informativ votering
En votering som faktisk skiller partier eller blokker fra hverandre. Enstemmige eller nesten enstemmige voteringer regnes som mindre informative for partinærhet.
Voteringsvekt
Hvor mye en votering teller i beregningen. Vekten påvirkes blant annet av om voteringen er personlig, hvor nær den er 50/50, om flere forslag er bundet sammen, og om den virker prosedyrepregget.
Empirisk partiskille
I robust-modellen: et mål på hvor mye ankerpartiene faktisk skiller seg fra hverandre i en votering. Hvis alle ankerpartiene stemmer likt, er partiskillet lavt.
Regularisering
En metode for å dempe ekstreme utslag og gjøre modellen mindre følsom for støy. I robust-modellen brukes regularisering i vektene og i tidsstabiliseringen mellom vinduer.
Effektivt utvalg
Et vektet mål på hvor mange voteringer som reelt bærer et analysepunkt. Hvis noen få voteringer får svært høy vekt, blir effektivt utvalg lavere enn det rene antallet voteringer.
Modellstress
Et mål på hvor godt én dimensjon gjenskaper de observerte partiavstandene. Høyt modellstress betyr at mønsteret kan være vanskelig å beskrive presist på én venstre-høyre-akse.
1D-embedding
Prosessen der partiene plasseres på én linje slik at avstanden mellom partiene på linjen ligner mest mulig på de observerte voteringsavstandene.
Blokkdrift
Et mål på om valgt parti stemmer nærmere posisjonsflertallet eller opposisjonen i et tidsvindu. Det er ikke det samme som venstre-høyre-drift.
Leave-one-out
Når valgt parti selv inngår i en referanseblokk, tas partiet ut av blokken før avstand beregnes. Dette hindrer at partiet delvis sammenlignes med seg selv.
Datakvalitetsflagg
Varsler som markerer forhold som kan svekke tolkningen, for eksempel lavt fremmøte, manglende partidata, få voteringer, prosedyrepreg eller nesten enstemmige voteringer.

Venstre/høyre-drift

Denne funksjonen forsøker å svare på om et parti stemmer mer likt med partier som ligger til venstre eller høyre i en forhåndsdefinert ankerrekkefølge. Resultatet er en statistisk posisjon basert på roll-call-lignende stemmelikhet i Stortingets voteringer. Det er ikke et mål på ideologisk overbevisning, regjeringsstrategi, programtekst eller velgerplassering.

Inkluderes i hovedmodellen

  • Voteringer fra valgte/importerte perioder eller sesjoner.
  • Bare voteringer med personlig_votering = true bidrar med vekt.
  • Bare voteringer der minst to partier har beregnbar for-/mot-andel kan påvirke partilikhet.
  • Partienes stemmeandel beregnes fra representanter som faktisk stemte for eller mot.
  • Fravær lagres og vises som datakvalitet, men inngår ikke i for-/mot-nevneren.
  • Uankrede partier kan vises i tabeller og heatmap, men brukes ikke til å kalibrere venstre/høyre-aksen.

Ekskluderes eller får lav/null vekt

  • Ikke-personlige voteringer får P_j = 0 i hovedmodellen.
  • Voteringer uten partifordelte representantstemmer kan ikke brukes i avstandsberegningen.
  • Voteringer der et parti mangler møtende representanter får support_share = null for partiet.
  • Enstemmige og nesten enstemmige voteringer nedvektes kraftig via informasjonsvekten.
  • Prosedyrepregede voteringer beholdes i databasen, men flagges og nedvektes.
  • Voteringer med for lite datagrunnlag kan gi low_vote_count, missing_party_data eller low_attendance.

Datagrunnlaget per votering

For hver votering hentes representantenes stemmer fra Stortingets API og grupperes per parti. Appen teller for-stemmer, mot-stemmer og fravær. Partiets støtteandel i voteringen beregnes bare av for og mot, fordi fravær ikke bør tolkes som en politisk stemme. Fravær er likevel viktig datakvalitet: lavt fremmøte kan gjøre partiets observerte støtteandel mer ustabil.

Hva et analysepunkt i grafen betyr

Hvert punkt er ikke én enkelt sak. Det er et rullerende vindu av informative voteringer, normalt 120 voteringer. Punktets dato er slutten av vinduet. Når du klikker på et punkt, vises voteringene og sakene som ligger i vinduet, slik at kurven kan ettergås mot konkrete saker.

Hvorfor en votering får ulik vekt

En votering der nesten alle stemmer likt sier lite om avstand mellom partier. En votering rundt 50/50 sier mer. Derfor brukes en informasjonsvekt som er høyest når total for-andel er nær 0,5 og lav når voteringen er nær konsensus. I tillegg nedvektes voteringer der mange forslag er bundet sammen, og voteringer som ligner prosedyre- eller tekniske voteringer.

Hvordan venstre/høyre-aksen kalibreres

Partiene får ikke faste tall som R = -1 eller FrP = +1. I hvert tidsvindu beregnes først hvor like partiene stemmer med hverandre. Deretter plasseres partiene på én dimensjon slik at avstandene på linjen best mulig ligner de observerte voteringsavstandene. Den politiske rekkefølgen R, SV, MDG, AP, Sp, V, H, KrF og FrP brukes bare til å orientere aksen, slik at venstresiden havner mot -1 og høyresiden mot +1.

Hva drift betyr

Drift fra start er endringen i valgt partis beregnede posisjon fra første analysepunkt til senere punkter. Positiv drift betyr at partiet i modellen beveger seg mot høyre/blå side av den beregnede voteringsaksen. Negativ drift betyr bevegelse mot venstre/rød side. Det betyr ikke automatisk at partiet ideologisk har endret standpunkt; sakssammensetning, regjeringsrolle og hvilke saker som faktisk kommer til votering kan påvirke resultatet.

Datakvalitetsflagg som påvirker tolkningen

non_personal_vote
Voteringen er lagret som kontekst, men bidrar ikke til hovedmodellen.
consensus_vote
Voteringen er nær enstemmig og har lav informasjonsverdi for partiskille.
low_attendance
Ett eller flere partier har svært få møtende representanter i voteringen.
missing_party_data
Partifordelte stemmer mangler eller er ufullstendige for voteringen.
bundle_unknown
Antall forslag bak voteringen er ukjent, så bundlingsvekten kan være mindre presis.
low_vote_count
Vinduet har få brukbare voteringer og bør tolkes varsomt.
unanchored_party
Partiet vises i dataene, men påvirker ikke kalibreringen av aksen.
api_payload_incomplete
Rådata fra API-et var mangelfullt eller uventet strukturert.

Forklaring av kontrollene

Blokkmodell

Velger hvordan regjering og opposisjon beregnes. Standardvalget bruker regjeringen som satt på selve voteringsdatoen og vekter partiene etter møtende representanter i voteringen. Dette er tilstedeværelsesvekt, ikke et påstått fast mandattall. Partivektet blokk lar hvert parti telle likt. Valgt parti tas alltid ut av egen referanseblokk.

Alle perioder

Valget 'Alle perioder' analyserer alle støttede og importerte perioder, inkludert SIKT-periodene tilbake til 1979 der datadekningen er god nok. Rullerende vinduer får aldri krysse et stortingsvalg. Samlet partilikhet beregnes først innen hver periode og kombineres deretter med lik vekt per periode, slik at perioder med mange voteringer ikke automatisk dominerer.

Blokkdelende terskel

Terskelen brukes når 'Kun blokkdelende' er slått på. En votering tas med bare hvis forskjellen mellom posisjonsblokkens støtteandel og opposisjonsblokkens støtteandel er minst terskelen. Med standard 0,4 må blokkene altså skille seg med minst 40 prosentpoeng. Eksempel: 0,75 mot 0,30 gir forskjell 0,45 og tas med. 0,62 mot 0,35 gir 0,27 og filtreres bort.

Hvorfor 0,4 som standard?

0,4 er valgt som et konservativt kompromiss. Det fjerner voteringer der blokkene i praksis stemmer ganske likt, men beholder voteringer der blokkforskjellen er tydelig nok til at blokkdrift gir mening. Lavere terskel gir flere voteringer, men mer støy. Høyere terskel gir renere blokk-konflikter, men færre datapunkter og bredere usikkerhet.

Kun blokkdelende

Når denne er aktiv, analyseres blokkdrift bare på voteringer der posisjonsblokken og opposisjonsblokken faktisk stemmer forskjellig nok. Dette hindrer at saker med bred enighet eller lite blokkskille får uforholdsmessig betydning for spørsmålet om et parti stemmer nærmere posisjon eller opposisjon.

Uankrede

Uankrede partier er partier som finnes i dataene, men som ikke ligger i den konfigurerte venstre-høyre-aksen. De vises i rådata, tabeller og heatmap når dette er slått på. De påvirker ikke selve aksekalibreringen før de eksplisitt plasseres på aksen.

Hendelser

Viser politiske tidsmarkører i grafene, for eksempel regjeringsskifte, regjeringsuttreden eller valg. Hendelsene endrer ikke beregningene; de er visuelle holdepunkter som gjør det lettere å tolke endringer før og etter viktige datoer.

Avanserte filtre

Panelet viser bare filtre som påvirker valgt analyse. Felles filtre er sesjon, dato, komité, emne, sakstype, dokumentgruppe, utfall og datakilde. Modellspesifikke valg omfatter blant annet vindusstørrelse, bootstrap-iterasjoner, minste antall felles voteringer, mindretallsandel, fremmøte og krav om kjent forslagstekst. Skjulte filtre sendes ikke til analysen.

Nye kontrollanalyser

Partidisiplin

Rice-indeksen beregnes som abs(F-M)/(F+M), tilsvarende abs(2s-1), blant møtende representanter i partiet. Analysen viser også andel enstemmige partistemmer og registrerte representantstemmer som avviker fra partiets flertall. Fravær regnes ikke som avvik.

Forslagsgjennomslag

Forslag grupperes etter partier som kan identifiseres i «på vegne av»-feltet. Gjennomslag er antall vedtatte forslag delt på antall forslag med identifiserbar forslagsstiller og kjent utfall. Dette må ikke tolkes som et fullstendig innflytelsesmål, fordi kompromisser og komitéinnstillinger kan gi innflytelse uten eksplisitt forslag.

Gjennomsnittlig partiavstand

For hvert rullerende vindu beregnes vektet parvis avstand mellom partier med nok felles voteringer. Målet er gjennomsnittet av disse avstandene, ikke generell politisk polarisering. Nettverksmål som betweenness og deltakelseskoeffisient beskriver separat hvordan partier er plassert i likhetsnettverket.

Partisplitt og representantavvik

Partikohesjon er abs(2s-1), der s er støtteandel blant møtende representanter. 0 betyr maksimal splitt og 1 enstemmighet. Ved 50/50 lages ikke et kunstig partiflertall, og representantavvik registreres bare når partiet har et entydig flertall.

Analysemanifest

Hver analyse returnerer modellversjon, tidspunkt, antall voteringer, effektiv vekt, kildefordeling, aktive backendfiltre, kvalitetsflagg og metodiske varsler. Manifestet kan åpnes under nøkkeltallene og gjør resultatet lettere å reprodusere og ettergå.

Formler for Venstre/høyre-drift

Partistemmeandel

present_pj = count_for_pj + count_mot_pj. s_pj = count_for_pj / present_pj hvis present_pj > 0, ellers null. Fravær inngår ikke i nevneren.

Partikohesjon

c_pj = abs(2 * s_pj - 1). c_pj = 1 betyr at partiet stemte samlet for eller samlet mot. c_pj = 0 betyr at partiet var delt omtrent 50/50.

Total for-andel

q_j = total_for_j / (total_for_j + total_mot_j), beregnet blant alle møtende representanter med for- eller mot-stemme.

Informasjonsvekt

I_j = 4 * q_j * (1 - q_j). Vekten er 1 ved 50/50-votering og nær 0 ved nesten enstemmige voteringer.

Bundlingsvekt

B_j = 1 / sqrt(k_j), der k_j er antall forslag knyttet til voteringen, minimum 1. Hvis k_j er ukjent settes B_j = 1 og voteringen flagges.

Samlet voteringsvekt

w_j = P_j * I_j * B_j * R_j. P_j = 1 for personlig votering og 0 ellers. R_j er en nedvekting for prosedyrepregede voteringer.

Parvis partiavstand i én votering

d_abj = abs(s_aj - s_bj). 0 betyr lik stemmegivning, 1 betyr motsatt stemmegivning. Delte partier gir verdier mellom 0 og 1.

Avstand i rullerende vindu

D_ab(t) = weighted_mean(d_abj, w_j) for alle brukbare voteringer j i vinduet W_t.

1D-embedding

Finn x_p(t) som minimerer sum_{a<b}(abs(x_a(t)-x_b(t)) - D_ab(t))^2 for de ankrede partiene.

Orientering og skalering

Aksen orienteres slik at korrelasjonen med de partiene som faktisk er representert fra ankerrekkefølgen R, SV, MDG, A, Sp, V, H, KrF, FrP er positiv. En felles referanseembedding skaleres til [-1, 1], og hvert vindu justeres lineært mot denne referansen. Dermed blir ikke hvert vindu strukket på nytt til egne ytterpunkter.

Bootstrap-usikkerhet

Voteringene i hvert vindu trekkes med tilbakelegging. Posisjonen beregnes på nytt for hver trekning, og 5- og 95-persentilene vises som et 90 prosent usikkerhetsbånd. Antall trekninger kan velges i avanserte filtre.

Drift fra start

drift_from_start_t = x_p(t) - x_p(t0), der t0 er første beregnbare vindu for valgt parti og filter.

Statistisk vurdering og begrensninger

Hva modellen er god til

Modellen er godt egnet til å beskrive observerte mønstre i parlamentarisk stemmelikhet over tid, særlig når mange personlige voteringer ligger bak hvert punkt og når de samme partiene har stabil representasjon i perioden.

Hva modellen ikke kan bevise

Modellen kan ikke alene bevise at et parti har flyttet ideologisk standpunkt. Den kan vise at partiets observerte voteringsatferd er blitt mer lik eller ulik andre partiers voteringsatferd. Årsaken kan være ideologisk endring, regjeringsrolle, forhandlinger, saksmiks, komitéarbeid eller hvilke forslag som faktisk settes under votering.

Elastisk skala

Aksen er fortsatt relativ til voteringsmønsteret, men vinduene skaleres ikke lenger uavhengig til egne ytterpunkter. De justeres mot en felles referanse for valgt datagrunnlag. Endringer i hvilke partier som er representert og hvilke saker som voteres kan fortsatt påvirke posisjonene, særlig ved sammenligning over mange perioder.

Robusthetssjekker

Resultatet bør kontrolleres ved å endre periode, komité, vindusstørrelse, blokkmodell og konsensusfilter, og ved å åpne punktene i grafen for å se hvilke saker som driver bevegelsen. For offentlig konklusjon bør modellen også sammenlignes med en separat idealpunktmodell eller annen roll-call-metode.

Blokkanalyse

Blokkanalysen sammenligner valgt parti med to politiske blokker: posisjonsflertallet og opposisjonen. Den måler ikke om partiet er ideologisk enig med blokkene, men om partiet stemmer mer likt med den ene eller andre blokken i de voteringene som inngår i vinduet.

Mørk linje: blokkdrift

Dette er hovedlinjen. Verdien beregnes som avstand til posisjonsflertallet minus avstand til opposisjonen. Over null betyr at partiet ligger nærmere opposisjonen. Under null betyr at partiet ligger nærmere posisjonsflertallet.

Rød linje: avstand til posisjon

Viser hvor ulikt valgt parti stemmer fra posisjonsflertallet i samme rullerende vindu. Lav verdi betyr at partiet stemmer likt med posisjonsflertallet. Høyere verdi betyr større avstand.

Blå linje: avstand til opposisjon

Viser hvor ulikt valgt parti stemmer fra opposisjonsblokken. Lav verdi betyr at partiet stemmer likt med opposisjonen. Høyere verdi betyr større avstand.

Leave-one-out referanseblokk

Når valgt parti selv inngår i en blokk, tas partiet ut av den referanseblokken før avstanden beregnes. For AP betyr det at posisjonsblokken i AP-analysen beregnes av R, SV, MDG og Sp. Dette hindrer at AP sammenlignes delvis med seg selv og blir kunstig nær posisjonsflertallet.

Hvordan leses aksen?

Y-aksen går fra -1 til +1. Rundt 0 betyr at partiet ligger omtrent like langt fra begge blokker. Positive verdier betyr relativ nærhet til opposisjonen. Negative verdier betyr relativ nærhet til posisjonsflertallet.

Hvorfor kan avstandslinjene ligge høyt samtidig?

Et parti kan stemme annerledes enn begge blokker hvis blokkene selv er splittet, hvis partiet har en særposisjon i sakene, eller hvis vinduet inneholder mange saker der koalisjonsmønsteret varierer. Derfor bør hovedlinjen leses sammen med de to avstandslinjene.

Hva betyr blokkdelende filter?

Når 'Kun blokkdelende' er aktiv, tas bare voteringer med der posisjonsflertallet og opposisjonen faktisk stemmer tydelig forskjellig. Dette gjør blokkdriften mer tolkbar, men kan gi færre datapunkter.

Viktig forbehold

Blokkdrift er en statistisk beskrivelse av voteringsnærhet. Den sier ikke alene hvorfor partiet stemte slik, og bør tolkes sammen med sakstabellen, komitéfilter, emner og politiske hendelser.

Prosedyrevoteringer og kontrollmodell

Prosedyrepregede voteringer

Voteringer som ligner rene prosedyre- eller tekniske voteringer beholdes i datagrunnlaget, men flagges og nedvektes. Dette gjelder blant annet tekst som 'vedlegges protokollen', 'lovens overskrift og loven i sin helhet', subsidiærvoteringer og oversendelses-/protokollformuleringer. De fjernes ikke automatisk fordi de fortsatt kan ha politisk innhold i enkelte saker.

DW-NOMINATE som kontrollspor

Dagens standardmodell er en forklarbar 1D-embedding av partienes voteringslikhet. En mer etablert idealpunktmodell inspirert av DW-NOMINATE er egnet som kontrollmåling, men bør vises separat slik at brukeren kan sammenligne stabilitet og avvik mellom metodene.