Skip to main content

Konfidensialitet

Bakgrunn

Lov om offisiell statistikk og Statistisk sentralbyrå (LOV-2019-06-21-32) § 14 (tilgang til opplysninger for statistiske resultater og analyser) ledd (5) sier at «Taushetsplikten etter § 8 gjelder tilsvarende for den som får tilgang til opplysninger». Slike data kan kun utleveres til forskere i godkjente forskningsinstitusjoner og til offentlige myndigheter. Det stilles derfor strenge krav for tilgang til mikrodata, og søknad om tilgang til mikrodata for forskning er en lang prosess. Kriteriene for å søke om tilgang til registerdata for forskning kan du finne på SSBs sider om data til forskning.

Microdata.no er utviklet for å gjøre det mulig å få tilgang til mikrodata fra registre uten å måtte gå gjennom den omstendelige søknadsprosessen det er for å få data utlevert. Men det er en betingelse for en slik forenkling at sikkerheten og konfidensialiteten til mikrodataene er like godt ivaretatt som ved utlevering, helst bedre. Det har derfor fra begynnelsen vært et eksplisitt krav at brukerne ikke skal kunne se mikrodata eller på annen måte være i stand til å avsløre informasjon om enkeltpersoner. Når SSB publiserer offisiell statistikk er det aggre­ger­te data. Likevel må SSB passe på ved ulike typer tiltak at det ikke er mulig å føre infor­ma­sjon tilbake til enkelt­personer eller andre typer statistiske enheter som statistikken dreier seg om.

De resultatene som microdata.no produserer for sine brukere, tabeller eller analyser, er i likhet med SSBs statistikk aggregerte data. Men uten begrensninger vil en bruker av microdata.no lett kunne produsere tabeller og andre typer statistiske resultater som SSB ikke ville kunne publisere. For å forhindre at det skjer er det innført flere typer tiltak som skal begrense mulig­hetene for å kunne avsløre informasjon som skal være konfidensiell.

Dette vedlegget vil beskrive de tiltakene som er implementert for å ivareta konfidensialitet i microdata.no. Tiltakene er basert på scenarier for hvordan konfidensialitet i microdata.no kan angripes eller utilsiktet komme i fare. Disse scenariene vil ikke bli beskrevet. Det vil bli lagt vekt på det som er nødvendig for at brukeren skal kunne forstå tiltakene og forholde seg til de statistiske resultatene på riktig måte.

De tiltakene som er beskrevet nedenfor er de som er implementert så langt. Det vil kunne komme flere tiltak etter hvert eller også justeringer av de tiltakene som er beskrevet nedenfor. Dette vedlegget vil bli oppdatert når det kommer endringer.

Tiltak 1: Minste populasjonsstørrelse

Det er ikke tillatt å definere undersøkelsespopulasjoner med færre enn 1000 personer. Forsøk på å definere slike populasjoner vil bli møtt med en melding av typen

Tiltak 2: Winsorisering

Winsorisering er en teknikk som ofte brukes i analyser for å hindre at ekstreme observa­sjon­er skal få for stor innvirkning på analyseresultatene. Teknikken anvendes på alle numer­iske variabler og består i å kutte av fordelingen i begge ender ved bestemte prosentiler. Vi benyt­ter 2% winsorisering som betyr at de 1% høyeste verdiene settes til 99-prosentilen (nedre grenseverdi) og de 1% laveste verdiene settes til 1-prosentilen (øvre grenseverdi). Dette skjer kun ved visning av statistiske resultater, med utgangspunkt i den aktuelle populasjon som statistikken beregnes ut i fra.

Siden fordelingene til mange numeriske statistiske variabler er skjevfordelte, typisk med lange haler i øvre ende (eks. inntekter og formuer), vil winsorisering påvirke gjennomsnitt og standardavvik til en viss grad. Begge typer statistikker vil typisk bli estimert for lave. På den andre siden vil medianer, kvartiler og andre prosentiler ikke bli påvirket.

Eksempel: Betrakt følgende skript hvor målet er å lage deskriptive statistikker og histogram for aldersfordelingen i befolkningen per 1. januar 2010.

 create-dataset befolkning
import db/BEFOLKNING_FOEDSELS_AAR_MND as f_årmnd
generate alder2010 = 2010 - int(f_årmnd/100)
summarize alder2010
histogram alder2010, discrete
 

Resultatet vil se slik ut:

summarize alder2010

Variabelmeanstdcount1%25%50%75%99%
alder201038.746722.681255743121375589

Alle som er eldre enn 89 år vil bli satt til 89 år og 0-åringer vil bli satt til 1 år. Dette er årsaken til den store søylen til høyre i histogrammet. 0-åringer er her kun dem født 1. januar 2010. Vi er oppmerksomme på at winsoriseringen kan skape problemer ved statistiske fremstillinger av de aller eldste. Det samme gjelder andre grupper som er definert ved å tilhøre halen i fordelingen til en numerisk variabel.

Winsorisering påvirker alle deskriptive statistikker og grafiske plott, og hindrer at de mest ekstreme verdiene blir synlige.

Aggregering av data (collapse):

Så lenge man bruker commandoen collapse() til å aggregere et datasett opp til et nivå hvor deskriptiv statistikk winsoriseres, kjøres selve collapse-aggregeringen uten winsorisering. Aggregering fra arbeidsforhold til personnivå eller fra person- til familienivå er eksempler på aggregeringer som gjøres uten winsorisering. Bruk av collapse() hvor by()-leddet angir en pseudonymisert variabel winsoriseres altså ikke i selve aggregeringssteget.

Men dersom mål-enhetstypen til collapse() (angitt i by()-leddet) er en enhetstype gitt ved en vanlig ikke-pseudonymisert variabel, f.eks. kommune, fylke, næringstype, eller utdanningsnivå, vil beregninger gjort gjennom collapse() være gjenstand for winsorisering. Grunnen til dette er at disse enhetstypene ikke vil bli winsorisert ved generering av deskriptiv statistikk. Derfor må altså winsoriseringen gjøres i forbindelse med selve aggregeringen.

Resultater som fremstilles gjennom regresjonsanalyser er ikke å betrakte som personidentifiserende informasjon. Ved slike analyser benyttes derfor de underliggende ikke-winsoriserte data. Regresjonsestimater vil derfor ikke bli påvirket av winsorisering.

Tiltak 3: Støylegging

Alle opptellinger av antall enheter i et datasett som vises i forbindelse med diverse operasjoner, eller statistiske opptellinger som vises gjennom blant andre kommandoene tabulate eller summarize er støylagte. Summer av numeriske statistikk­vari­abler knyttet til enhetene i for eksempel en tabellcelle, for eksempel inntekter, er justert propor­sjonalt med støylegg­ingen slik at gjennomsnittstall er upåvirket. Der hvor støyleggingen resulterer i at antall enheter bak summen blir 0, blir summen satt til 0 og gjennomsnittet, som da blir 0/0 blir satt til NaN.

Tiltak 4: Grafiske plott. Hexbinplott

Det er vanlig å bruke spredningsplott for å etablere et visuelt bilde av data eller også vise sammenheng mellom numeriske variabler. Slike plott kan være veldig avslørende, spesielt hvis det er få observasjoner i forhold til det grafiske området og for de punktene i plottet som ligger utenfor hovedmassen av punkter. Hvis vi for en enhet/person i populasjonen kjenner verdien på en av de variablene som spenner ut plottet kan vi ofte lese av verdien til den andre variabelen med for stor nøyaktighet.

For å hindre at dette kan skje har vi i microdata.no valgt å glatte slike plott med en glatteteknikk. For dette formålet har vi forsøksvis valgt å fokusere på en teknikk som kalles hexbin-plott. I et hexbin-plott deles det grafiske området inn i regulære sekskanter. Et eksempel på et hexbin-plott laget i microdata.no er følgende:

I et hexbin-plott skaleres det grafiske området på grunnlag av de største og minste verdiene som forekommer for de variablene som plottes. De største og minste verdiene er påvirket av winsoriseringen omtalt i tiltak 2. Sekskantene gis en farge eller fargetone som angir et intervall for hvor mange enheter det er i dem, for eksempel 30-59, 60-89 osv. Intervallet for antall enheter/­personer hver fargetone representerer er like langt for hver fargetone og tilpasses automatisk av fordelingen i data.

Hexbin plot er under utprøving. I den versjonen som foreløpig er lagt ut er alle sekskanter hvor antall personer er færre enn 20% av det mest befolkede hexagonet blanket. Dette kriteriet vil bli justert så snart det er mulig å gi det prioritet.

Tiltak 5: Skjuling av tabeller med for mange lave verdier

Tabeller som lages ved kommandoen tabulate vil i noen tilfeller kunne inneholde mange celler med lave verdier for antallet enheter. Dette kan være problematisk ettersom det gjør det lettere å indirekte identifisere individer ved å studere kombinasjoner av verdier for de kategoriske variablene som utgjør en tabell. Et annet problem med slike tabeller er at støyleggingen beskrevet under «Tiltak 3» gir en relativt høy usikkerhet for de aktuelle celleverdiene (den prosentvise støyen blir relativt stor ved små tall), slik at den statistiske nytteverdien av tabellen blir lav.

I microdata.no opereres det med en grenseverdi på 50%, dvs. tabeller der mer enn 50% av cellene inneholder frekvensverdier lavere enn 5, vil bli stoppet. I tillegg vil det vises en feilmelding om dette.

Det er mulig å unngå problemet med tabeller som stoppes pga. for mange lave verdier: Ved å lage grovere inndelinger for de kategoriske variablene som utgjør tabellen, eller ved å øke størrelsen på tabellpopulasjonen, vil en kunne øke antallet enheter i hver celle og dermed komme under 50%-grensen slik at tabellen blir godkjent og vises.

Tiltak 6: Ikke tillatt med endringer som påvirker færre enn 10 enheter

Det er ikke tillatt å gjøre endringer i et datasett som påvirker færre enn 10 enheter, gjennom bruk av kommandoene generate, replace eller recode(). Om dette inntreffer, vil man få en feilmelding og kjøringen vil stoppe.

Det er heller ikke tillatt å gjøre endringer som påvirker alle enheter bortsett fra et antall færre enn 10.

Eksempler:

Et viktig unntak er at man kan gjøre endringer som påvirker alle eller ingen enheter.

Eksempler (koden 9999 finnes ikke i datasettet):

(Merk at antallet missingverdier som rapporteres er ulikt antall enheter i eksempelet over. Dette skyldes støyleggingen av frekvensverdier, jfr. Tiltak 3. I praksis vil variabelen test bare inneholde missingverdier.)

Ved bruk av recode, så gjelder regelen for hvert av omkodingsleddene i uttrykket (man ser på hver av kodene det kodes til, og hvert av leddene må kode om minst 10 observasjoner).

Eksempel:

Tiltak 7: Ikke tillatt med deskriptiv statistikk for populasjoner som utgjør færre enn 10

Deskriptiv statistikk gjennom kommandoene summarize eller summarize i kombinasjon med tabulate kan ikke kjøres på populasjoner som utgjør færre enn 10. Unntak er summer og frekvenser.

Eksempel:

Tiltak 8: Median- og prosentilverdier vises kun med tresifret nøyaktighet

Median- og prosentilverdier viser faktiske verdier som kan knyttes til enkeltpersoner (eller andre enheter). Derfor vises slike verdier kun med tresifret nøyaktighet, og påvirker visningen av tall ved bruk av kommandoene summarize, summarize i kombinasjon med tabulate, og grafer der slike tall inngår.

Eksempler:

Tiltak 9: Konstantledd skjules fra regresjonsresultat dersom analysepopulasjonen har for unike kombinasjoner av kategoriske verdier

For å styrke konfidensialiteten ved regresjonsanalyser, har vi innført en begrensning knyttet til analyser på datasett med for høy grad av unikhet. Hvis kombinasjoner av kategoriske variabelverdier i analysen utgjør veldig små grupper, vil konstantledd-estimatene bli skjult fra regresjonsresultatene. Analysen påvirkes ikke siden konstantleddet inngår i estimeringen.

Det er prinsippet for k-anonymity som benyttes på det underliggende analysedatasettet, definert av populasjonen og settet av forklaringsvariabler for den aktuelle analysen, der grenseverdien er satt til 5. Skjuling av konstantledd skjer altså for regresjoner som kjøres på datasett med færre enn 5 enheter med samme kombinasjon av variabelverdier.

Merk at kontinuerlige variabler inngår ikke ved vurderinger av unikhet, kun kategoriske variabler.

I tilfeller der tiltak 9 slår inn, og man ønsker å se konstantleddet, er det noen grep man kan foreta for å gjøre datasettet mindre unikt (slik at antallet unike kombinasjoner kommer over 5):

  • Øke populasjonsstørrelsen
  • Bruke grovere inndeling av kategorier
  • Begrense antallet kategoriske forklaringsvariabler