Jeg poster denne her fordi der stadig ingen er som har opsat et aktindsigtportal.

Jeg har per dags dato sendt aktindsigter til Rigspolitiet og Udlændingestyrelsen. Det sker på baggrund af dette citat:

Asylsøgere fra nordafrikanske lande som Marokko, Algeriet og Tunesien er overrepræsenterede i kriminalitetsstatistikkerne. Det viser tal fra Rigspolitiet og Udlændingestyrelsen for perioden fra 2014 til første halvår af 2016.

Hviderusland og Georgien topper listen over nationaliteter, der relativt set oftest bliver sigtet for overtrædelser af straffeloven. Men derefter følger fire nordafrikanske lande. som bl.a. omfatter tyveri og vold.

For hver 100 asylsøgere fra Algeriet er der rejst 115 sigtelser, mens tallet er 98 for Marokko. Marokkanere tegner sig i absolutte tal for flest sigtelser af alle.

Til sammenligning var der under 3 sigtelser pr. 100 asylsøgere fra store asyllande som Syrien og Eritrea.

Det lyder jo spændende, men der er som sædvanligt ingen kilder. Derfor:

Jeg søger hermed om aktindsigt i de data som ligger til grund for denne artikel:

jyllands-posten.dk/indland/ECE9032897/nordafrikanske-asylsoegere-dominerer-opgoerelse-over-sigtelser/

Jeg gør opmærksom på at jeg gerne vil modtage dataene i regneark format (fx XLSX). Der er præcedens for at offentlige myndigheder skal sende data i et maskinlæseligt format, jf. www.aabenhedstinget.dk/nyside/skat-nej-til-data-adgang/

Mvh.
Emil

Internt på Open Knowledge Denmark maillisten, skriver en person som kommentar til mit forslag til en aktindsigtportal:

Det lyder godt, jeg kan godt programmere lidt i Python men har ikke særligt godt styr på det. Har læst dit forslag fra bloggen og tænker om man ikke kan automatisere nogle af tingene mere, så man ex ikke skal uploade besvarelserne til aktindsigt men det kan foregå automatisk fra en mailserver kun lavet til aktindsigtmails.

I mit forslag skrev jeg:

Den optimale løsning ville være at det offentlige selv lavede en central platform hvor alle aktindsigter blev noteret i og hvor man kunne gøre tingene offentlige hvis man ville (som den som søger). Men nu ved vi godt hvordan det plejer at gå med offentlige IT-projekter, så den ide må nok opgives. I hvert fald er der ingen offentlig portal lige nu.

Lad mig beskrive nogle forskellige scenarier: fra drømmeland til virkelighed.

Det offentlige laver deres egen åbne portal og alle aktindsigter foregår via den automatisk.

I det mest usandsynlige scenario laver det offentlige sin egen åbne portal. Koden ligger på Github og alle aktindsigter skal fremover køre via deres system. Systemet har åben adgang til anonyme statistikker via API som kan bruges til forskning og bare generelt at holde øje med om tingene virker som de skal. Det offentlige formår på magisk vis at bygge en sådan portal op relativt hurtigt og billigt. Der er en overgangsperiode til at skifte til den nye portal på fx 1 år. Når man laver en aktindsigt, så kan man markere den som offentlig hvilket betyder at alle andre også kan få adgang til at se al kommunikation vedrørende og alt materiale udleveret.

Nogle private laver en åben portal og det offentlige bruger den

I det lidt mere sandsynlige scenario laver nogle private i stedet portalen, og det offentlige bruger den i varierende grad. Dvs. at det er muligt for nogen fra det offentlige at logge ind på systemet og besvare en aktindsigt. Overgangsperioden er på mange år fordi ingen regler tvinger det offentlige til at bruge den, og siden at den er på private hænder (non-profit), så er det også juridisk tvivlsomt om man kan gøre det. Man kan godt sende aktindsigter til det offentlige via portalen, men de svarer som regel ikke på dem via portalen, så man skal manuelt oploade deres svar.

Nogle private laver en åben portal og det offentlige ignorerer den

Her antages det at portalen primært er med til at holde styr på aktindsigterne, og ikke at man kan modtage aktindsigter via portalen. Hvis man da får et svar fra det offentlige før man dør, så sendes svaret typisk per epost eller sneglepost og man skal selv lægge det ind i systemet.

Jeg havde designet mit forslag til scenario #3, men det skulle relativt simpelt kunne tilpasses #2 hvis det offentlige er villige til at gøre det. Det tror jeg dog næppe. Jeg vil gætte på at man i næsten alle tilfælde ville få svar via epost/sneglemail eller email hvis man er meget heldig, selvom man udtrykkeligt har bedt om at få svar via systemet.

Men hvis man skulle lave noget til scenario #2: En ide ville være at sige at de skal svare til en bestemt email, og at alle emails modtaget til denne antages at komme fra systemet som svar på denne aktindsigt. Her ville man generere en ny semi-tilfældig email-adresse til hver aktindsigt, fx akt_20_12_16_kljbwe@aktindsigtportalen.dk. En mail til en aktindsigt som blev sendt den 20. december 2016. De sidste tilfældige bogstaver er blot tilføjet for at andre ikke kan svare på det offentliges vegne ved at sende emails. Det ville de nemt kunne hvis emailen blot var akt_20_12_16@aktindsigtportalen.dk og i øvrigt ville der være flere aktindsigter fra den samme dato, så man skulle alligevel tilføje noget. Alternativt kunne man opsætte godkendte svarmail-lister, men så skulle man holde styr på hvilke emails folk har i det offentlige, eller i hvert fald hvilke domæner de sender fra. Det er en mulighed.

figur69

Information omtaler, Rapport: Ikkevestlige børn er mindre empatiske end danske , en ny rapport som har set på forskelle på børn fordelt på forskellige kategorier som alder, moderens uddannelse, om forældrene er sammenlevende og oprindelsesland. Rapporten hedder Børns tidlige udvikling og læring og er nem at finde på Google.

Rapporten er skrevet i typisk blank slate manér. Der er ingen omtale af gener eller arvelighed, skønt det er velkendt at disse træk er meget arvelige og at arveligheden gør observerede korrelationer mellem fx moderens uddannelsesbaggrund og børnenes træk umulige at fortolke. Rapporten nævner selv problemet, kind of:

Derudover belyser undersøgelsen også betydningen af familiebaggrund (moderens uddannelse, familiestatus og etnisk oprindelse) for udviklingen på forskellige alderstrin. Det er vigtigt at huske, at vi alene ser på sammenhænge (korrelationer), ikke årsagssammenhænge, og at de enkelte baggrundsfaktorer ikke er uafhængige af hinanden.

Trods det er rapporten som regel skrevet på en måde som inviterer kausale fortolkninger og de anvendte analyser antager implicit blank slate modeller (begår dermed det som kaldes den sociologiske fejlslutning).

Det empiriske udgangspunkt for rapporten er stærkt:

Hvilke data bygger rapportens analyser på?
De data, som forskningsrapporten bygger på, er indsamlet som led i følgeforskningen til udviklingsprogrammet Fremtidens Dagtilbud. I alt 14 kommuner deltager i programmet med tilsammen ca. 13.000 børn fordelt på 400 dagplejere i 65 legestuegrupper samt 140 institutioner, herunder vuggestuer, børnehaver og integrerede institutioner. Programmet er igangsat af Ministeriet for Børn, Undervisning og Ligestilling (MBUL) i perioden 2014 – 2017 med det formål at udvikle og afprøve indsatser og pædagogiske redskaber til at støtte det pædagogiske personale i en tilrettelagt og reflekteret praksis, som bidrager til at styrke børns trivsel, udvikling og læring i dagtilbuddene.

g-faktoren som ikke bliver nævnt

Rapporten omtaler mange gange at der er positive sammenhænge mellem de forskellige kompetencer de måler. Det er på trods af at de har brugt metoder som fjerner disse forskelle (partielle korrelationer hvor man har fjernet sammenhængen med kontrolvariabler). Andre ting bliver nævnt som er utroligt åbenlyse for nogen som har læst differentialpsykologi:

Ovenstående betyder noget for børnenes skolegang og livsmuligheder på sigt. Såvel dansk som international forskning viser, at socioemotionelle, sproglige og tidlige matematiske kompetencer tidligt i livet påvirker senere læring i skolen. En sammenfatning af sammenhænge mellem tidlige kompetencer i børnehaven til 2. klasse, baseret på en såkaldt metaanalyse af 70 undersøgelser (dvs. en sammenfattende analyse af tidligere undersøgelser med samme fokus), viser fx en moderat sammenhæng mellem tidlige sproglige og tidlige matematiske kompetencer og senere tilsvarende faglige kompetencer i skolen, mens der er en svag sammenhæng mellem socioemotionelle kompetencer i dagtilbuddet og tilsvarende mål i skolen (La Paro & Pianta, 2000). En anden metaanalyse baseret på 299 undersøgelser, der alene fokuserer på sproglige kompetencer viser, at børns sproglige kompetencer inden skolestart er en stærk indikator for, hvordan børn lærer at læse og stave, når de kommer i skole (National Early Literacy Panel, 2008).
Et nyt dansk studie, der har undersøgt sammenhængen mellem ordforrådsudviklingen hos 2.120 børn mellem 16 og 30 måneder og deres senere læse- og matematikkompetencer målt i nationale læsetest i 6. klasse, viser, at størstedelen af de børn, der havde et lille ordforråd i de tidlige år, ligger under middel i læsning i 6. klasse (Bleses, Makransky, Dale, Højen, Aktürk Ari & Vach, 2016). Der er også en sammenhæng mellem ordforråd og nationale test i matematik, om end den er svagere. Og tilsvarende viser amerikanske studier, at børnenes tidlige matematiske kompetencer har betydning for tilegnelsen af tidlige matematiske kompetencer i grundskolen (Clements & Sarama, 2008).

Med andre ord: generel intelligens forudsiger fremtiden og der er diverse sammenhænge af evner (“kompetencer”) på tværs af type af tests.

Forskellene

Rapporten omhandler forskelle på tre områder: 1) socioemotionelle, 2) sproglige, 3) matematiske. De måles på forskellige måde og har forskellige subdimensioner

Figurerne skriver “dansk” vs. “ikke-vestlig”, hvilket kan synes at være en underlig skelnen da data for vestlige således må formodes at blive ignoreret. Det er ikke tilfældet. Figurerne er forkerte da “dansk” faktisk betyder “vestlige”. De skriver ikke hvordan personerne præcist er kategoriseret, så det er nok noget i retning af vestlig = Europa + områder engelsktalende personer har besat dvs. USA, Canada, Australien, New Zealand). Det er vigtigt fordi en meget inklusiv gruppe af vestlige betyder at forskellene minimeres. Vestlig inkluderer fx Bulgarien. Omvendt set inkluderer ikke-vestlig velfungerende asiatiske lande som Japan.

Socioemotionelle

Det socioemotionelle omhandler primært to ting:

Empati beskriver udvikling af evnen til at skelne mellem sig selv og andre personer, og dermed evnen til at kommunikere egne følelser, afkode andres følelser og sætte sig ind i andre personers følelser.
Selvregulering & Samarbejde beskriver barnets interesse for at udforske sin omverden samt beskriver barnets evne til at regulere og tilpasse sin adfærd til omgivelserne. Derigennem bliver barnets interaktion med omverden stimuleret og raffineret. Dette medfører udviklingen af adaptive færdigheder og samarbejdsevne, der fremmer samspillet mellem barn og omverden i dagligdagen.

Vi springer primært over de forskelle som har med alder og forældrekarakteristika at gøre da disse er relativt uinteressante. Eksempel:

figur3

Forskellene på oprindelse ser således ud:

figur7 figur8

De er ret store. Over 2.5 års forskel. Det kan man se ved at sammenligne scoren for de ikke-vestlige på 5.5 år vs. de vestlige på 3 år. Der er ikke paritet, så forskelle i udviklingen er over 2 år.

Ikke inkluderet i brødteksten, men som kan findes i bilaget er forskellene på de tidligere aldre:

figur56 figur57 figur58 figur59

Altså, forskellene kan ses mere eller mindre fra fødsel (fra 0.5 år og opefter).

Jeg ved ikke hvorfor de har brugt 3 forskellige figurer på noget der burde være 1 figur: forskellene fra 0.5 til 5.5 år.

Sproglige

De sproglige evner måles forskelligt for forskellige aldersgrupper, men inkluderer velkendte tests som ordforråd. Det betyder nok ikke så meget præcis hvilken test man bruger, skønt ordforråd plejer at have en meget høj g-loading, så den er generelt at foretrække.

Resultater for de 3-5.5-årige:

figur16 figur15

figur71figur72

For de 0.5-2.5-årige:

figur69 figur70

Tilfældige udsving taget i betragtning, så er forskellene meget konsistente over tid. Forskellene i ordforråd er temmelig store. De vestlige er over 2 år foran i aldersgruppen 3-5 år. De kan ses allerede fra ca. 1 års-alderen. Forskellene for rim er lidt mindre end 2 år, men skyldes nok at det er en nemmere (mindre g-loadet) test. Per Spearmans hypotese vil vi forvente de største forskelle på de bedste tests.

Matematiske

Den matematiske test har to dimensioner: geometri og talforståelse, og de måles via 8 forskellige subtests.

Der er tilsyneladende kun resultater for de 3-5.5-årige:

figur20figur76

Forskellene i matematiske evner er ret små, lidt over et halvt år. Et fund som er konsistent med sproglige bias i målingerne. Hvis forældrene ikke taler dansk, så giver det jo fin mening at børnene er bagud i dansk også selvom de er lige så smarte som de danske. Det kræver en nøjere undersøgelse at finde ud af.

Sammenlagt

  • Man kan se tydelige forskelle på vestlige vs. ikke vestlige i alle næsten aldersgrupper og på alle tests.
  • Forskellene kan ses fra de tidligste aldre, fx 1 år. De kan dermed ikke forklares med skoler, pædagoger, skolelærere osv.
  • Forskellene er størst på de vigtigste tests. Fx er forskellen på ordforråd over 2 år i aldersgruppen 3-5. Vestlige børn på 3 år har større ordforråd end ikke-vestlige på 5 år.
  • De nævner ikke ét ord om arvelighed.
  • De giver ingen d-scorer, så det er lidt svært at vurdere forskellene. Heller ingen standardafvigelser, så man kan ikke udregne d-scorerne. Jeg har lavet gæt baseret på forskellen i udviklingsår, jf. mental alder.
  • Der er ingen faktoranalyse som finder g-faktoren, men den bliver dog nævnt indirekte i et af deres afsnit fordi de bliver ved med at finde positive korrelationer mellem deres tests. Også selvom de har brugt partielle korrelationer.
  • Tallene kan bruges til at studere Spearmans hypotese, men det kræver at de giver adgang til dem.
  • Tallene kræver i alt fald en genanalyse for at udregne forskellene i d-værdier og på g-faktoren.

Jeg har netop sendt denne email:

Emil O. W. Kirkegaard <the.dfx@gmail.com> Mon, Jun 13, 2016 at 2:22 AM

Hej Statsforvaltning,

I 2012 skrev version2 en artikel om jer:

www.version2.dk/artikel/e-mail-lastbilen-toeffer-stadig-paa-landevejen-afloeseren-forsinket-44120

Jeg søger hermed aktindsigt i denne sag, særligt om hvad der er sket siden 2012.

Jeg vil også gerne have et estimat på de samlede omkostninger per år (eller per måned) med denne praksis med at printe e-mails ud og køre dem med lastbil.

Med venlig hilsen,

Emil

Automatisk svar:

post@statsforvaltningen.dk <post@statsforvaltningen.dk> Mon, Jun 13, 2016 at 2:23 AM

**Automatisk kvittering for modtagelse af din e-mail**

Dette er en kvittering for, at Statsforvaltningen har modtaget din email. Din e-mail vil blive behandlet hurtigst muligt. Denne e-mail kan ikke besvares.

Efter reglerne i Persondataloven må vi ikke sende e-mails til dig med personfølsomme oplysninger, medmindre e-mailen kan signeres og krypteres. Vi kan kun sende signerede og krypterede e-mails som svar på en allerede signeret og krypteret e-mail. En e-mail signeres og krypteres ikke automatisk, hvis du sender en almindelig e-mail til os til post@statsforvaltningen.dk. Vi svarer dig derfor ikke pr. e-mail, men sender vores breve til dig som almindelig post, medmindre du har sendt din e-mail krypteret.

Hvis du gerne vil have din post fra os i din dokumentboks, skal du sende en besked til os fra din dokumentboks på borger.dk.

Hvis din henvendelse vedrører De Sociale Nævn eller Beskæftigelsesankenævnene vil e-mailen blive videresendt til Ankestyrelsen, da sagsbehandlingen af klager på disse områder pr. 1. juli 2013 overgik til Ankestyrelsen, som blev klageinstans.

Husk at skrive dit navn, adresse, eventuelt telefonnummer og journalnummer, hvis du allerede har en sag i Statsforvaltningen. På Statsforvaltningens hjemmeside www.statsforvaltningen.dk kan du finde svar på de mest almindelige spørgsmål, finde
ansøgningsblanketter, m.m.

Venlig hilsen
Statsforvaltningen

At de vil sende et papirbrev tyder jo ikke godt. Hvorfor ikke bare sende mig en krypteret besked med min offentlige PGP-nøgle? Jeg er sikker på at jeg kunne finde på andre løsninger som er sikre nok og ikke kræver at man bruger 8 kroner i porto og en konvolut, og tid på at sende et papirbrev.

Har faktisk kun fået et par hadebeskeder personligt, men der er naturligvis mange som mener at det er uetisk og som diskuterer på i kommentarsektioner på nettet osv. Det skal de naturligvis have lov til. Men hvis man sender mig direkte hadefulde personlige beskeder, så offentliggør jeg dem.

(via Facebook privatbesked)
lø. 23:34
jeg håber du sover godt om natten med din grænseoverskridende tilgang til dine ufrivillige respondenter. du får ikke en særlig lovende videnskabelig karriere med den etik, du lægger for dagen, så du bør bestemt anonymisere alle links mellem de indsamlede karakteristika og profilidentiteterne for at mennesker ikke kommer i fare. må jeg minde dig om, at det ikke er lovligt at være eks. homoseksuel i alle stater i verden. du risikerer i yderste konsekvens at bringe uskyldige menneskers liv i fare.

sø. 21:17
Hør her, nazisvin. Du kan godt regne med at blive anmeldt for videnskabelig uredelighed, hvis vi ved gennemgangen af datasættet kan konstatere, at du har fjernet dine egne profiloplysninger fra undersøgelsen. Det betyder nok også enden på din ‘forsker’karriere, når du tydeligvis ingen respekt har over for faget.

Denne er fra: www.facebook.com/ballademis Kar Mus, vist et falsk navn. Han lader til at være del af venstre-aktivisme segmentet.

Politikerne fra de centrale partier har gjort det (endnu) sværere at få fat i information som det offentlige ligger inde med men som ikke umiddelbart er offentligt tilgængelige. Det er dog stadig muligt at kræve informationer udleveret og nogle gange lykkedes det, og ofte ikke. Siden mange aktindsigter omhandler informationer man alligevel har tænkt sig at dele frit bagefter, så ville det give mening hvis der var en åben platform til aktindsigter.

Den optimale løsning ville være at det offentlige selv lavede en central platform hvor alle aktindsigter blev noteret i og hvor man kunne gøre tingene offentlige hvis man ville (som den som søger). Men nu ved vi godt hvordan det plejer at gå med offentlige IT-projekter, så den ide må nok opgives. I hvert fald er der ingen offentlig portal lige nu.

Men opgaven med at bygge en platform til aktindsigter er en relativ beskeden opgave som nok kunne klares på under en uge hvis man havde en lille gruppe duelige programmører men samtidig ville det samfundsmæssige udbytte måske være meget stort. At have en åben platform ville også gøre det muligt at samle detaljeret statistik om hvor ofte folk får afslag, hvilke love som bruges til at give afslag (relevant for debatten om den nye offentlighedslov) og hvor lang tid det tager (meget lang tid). Faktisk har det offentlige en interesse i at have en platform fordi det betyder at de vil modtage færre kopier af de samme anmodninger.

Forslag til opsætning

Her er et lille bud på hvordan en sådan side kunne sættes op. Databasen tænker jeg ville se nogenlunde sådan her ud:

aktindsigt_database

Jeg har skrevet det på engelsk fordi det er nemmere at arbejde med da alt andet i programmering står på engelsk og fordi det i så fald er nemmere at arbejde sammen på tværs af sprog.

Databasen består af 4 primære objekter:

  1. User (bruger). Denne type er som regel indbygget i det web framework man bruger. Det er i Django, som er det Python framework jeg har tænkt mig at bruge. Brugerobjektet har folks kode-hash, emails og den slags.
  2. Request (anmodning). Dette er de anmodninger om aktindsigt som folk har lavet. Der er en henvisning til den bruger som har oprettet den i systemet. Endvidere er der information om hvor der er søgt aktindsigt (fx Finansministeriet; recipient), hvad status er på anmodningen (godkendt, afvist, venter på svar) og hvis den er afslået, hvilken paragraf har de så brugt til at afvise den med. Her burde man måske også tilføje om der er klaget over afgørelsen til ombudsmanden da det er mit indtryk at dette ofte bliver gjort, nogle gange med succes.
  3. Communication (kommunikation). Ideen er at hver gang der er et stykke kommunikation om en given anmodning så oprettes den som et objekt i sig selv. Den har så sin egen dato og modtager/afsender, så det er nemt at søge i. Der er også teksten hvis det er tekstbaseret. Teoretisk kunne det også være et telefonopkald, så ville man blive nødt til at vedhæfte en lydfil. Det er dog nemmere at holde det til tekst, og man kunne evt. nedskrive ting der bliver sagt i en telefonsamtale. Kommunikationsobjekterne er bundet til den anmodning som de hører til.
  4. Content (indhold). Hvis indsigten resulterer i at man får noget data udleveret, så oploader man her det man har fået udleveret. Det kunne være ting som PDF- eller excel-filer. Loven siger at de skal give én informationen i det format man ønsker.

Jeg forestiller mig at processen med at lave en anmodning ville være nogenlunde sådan her:

  1. Opret en bruger på siden hvis nødvendigt.
  2. Skriv en email til et offentligt embede om noget information man ønsker udleveret.
  3. Opret derefter en anmodning på systemet, notér hvem anmodningen er sendt til og indsæt den email du skrev til embedet i en kommunikation.
  4. Herefter venter man på at de svarer. Som regel får man en bekræftelse i løbet af et par dage. Den indsættes man så i systemet også, inkl. hvilke dato den er fra. Det er fra den dato som de har et par uger til at svare (sker dog sjældent i praksis).
  5. Efter som regel et halvt år eller sådan, så får man et svar, enten med de informationer man ønskede sig eller med et afslag. Uanset hvad, så indsætter man deres email i systemet og opdaterer statussen på anmodningen. Fik man nogle informationer, så oploader man dem til systemet også.

Hvis man laver et sådant system, så ville det være relativt nemt at gøre alle dataene åbent tilgængelige og med søgesystemer som gør det meget nemmere for andre at finde ting andre har fået udleveret og holde øje med hvad der bliver udleveret, hvem der er langsom til at udlevere dem, og hvilke paragraffer som bliver brugt til at afvise dem med.

Domæner

Der er flere mulige domæner man kunne bruge. Vi overvejer:

Vi hører gerne fra folk der er interesserede i et samarbejde. Vi er to som kan Django men som er mindre gode til front-end design, og heller ikke kender juraen alt for godt.

Jeg har dags dato, 28. april 2016, sendt en aktindsigt til Københavns Politi:

Kære Københavns Politi,
Jeg ved at I bruger meget tid på at holde vagt ved politiske demonstrationer. Særligt her på det sidste omkring Pegida/For Frihed og andre lign. anti-indvandring demonstrationer. Ofte hører man senere i medierne at nogen blev anholdt. Her er et eksempel:
www.dr.dk/nyheder/indland/fem-anholdt-ved-islamkritisk-demo
I denne artikel skriver journalisten hvem der blev anholdt: 5 pro-indvandring folk. Men I mange andre artikler fremgår det ikke. Fx:
www.dr.dk/nyheder/indland/islamkritisk-demonstration-moedt-af-vrede-antifascister-en-anholdt
Det fremgår kun at 1 person blev anholdt.
Jeg vil gerne have en oversigt over de sidste 10 års anti-indvandring og pro-indvandrings demonstrationer. På den liste skal det fremgå:
1. Hvor mange deltagere der var (politiets eget estimat). Også deltagere til samtidige moddemonstrationer hvis disse forefindes.
2. Hvor mange anholdte der var.
3. Blandt de anholdte, hvilken side konflikten de var på.
Jeg vil gerne have dataene i en excel-fil.
Jeg har vedhæftet en fil som viser eksempel data fra den første artikel ovenfor.
Formålet er forskning i politisk ekstremisme i Danmark.
Hvis I har nogen spørgsmål, så kontakt mig gerne på denne email.

Jeg poster den her så jeg kan referere til hvornår den blev afsendt.

Bloggen Kulturradikalisme Smadrer Danmark har lavet en analyse som forsøger at kvantificere antallet og stigningen af muslimer i Danmark. Han har brugt en temmelig simpel metode:

  • KSD har “kategoriseret et land som muslimsk, når islam er den mest udbredte religion”.
  • Talt 100% af personer fra muslimske lande.

Det er dermed en approksimering som kun virker såfremt at fordelingen af muslim% er symmetrisk og at størrelsen på gruppen ikke har nogen sammenhæng med muslim%. Disse antagelser er nok ikke helt rigtige.

Det kan gøres bedre. Man kan finde muslim% i hjemlandet (via Pew Research) og gange det med antallet af personer i Danmark fra det land. Det kan man gøre over tid og dermed se ændringen. Der er dog stadig problemer:

1) Nogle personer bliver muslimer mens andre falder fra (konvertitter og dekonvertitter). Modellen giver kun rigtige tal hvis disse to grupper er lige store (evt. 0). Det er nok ikke rigtigt da jeg vil tro at der er langt flere dekonvertitter end konvertitter mht. Islam i Danmark (negativ bias).

2) DSTs tal underestimerer personer fra andre lande fordi de klassificerer personer som “dansk oprindelse” givet en relativ lempelig juridisk definition:

I statistikken kan befolkningen opdeles i tre grupper afhængig af deres oprindelse: Personer med dansk oprindelse, indvandrere og efterkommere.
En person har dansk oprindelse, hvis han eller hun har mindst én forælder, som både er dansk statsborger og født i Danmark. Hverken indvandrere eller efterkommere har én forælder, som både er dansk statsborger og født i Danmark. Forskellen mellem indvandrere og efterkommere er, at indvandrere er født i udlandet, mens efterkommere er født i Danmark.

I praksis betyder det at der er flere muslimer her end tallene viser (positiv bias).

Jeg har gjort det ovenstående og det gav følgende resultat:

number_year

Hvis vi ser på 2005 til 2015 (som han gør), er tallene 173923.41 til 221908.34. En stigning på 27.6%. Hans estimat var 26%, så det er ca. det samme.

Der er en anden mulighed for at undersøge problemet. Man kan tælle antal personer med muslimske fornavne hvert år via DSTs side (“Hvor mange hedder”). De personer som har muslimske navne men som tælles som “dansk oprindelse” vil blive inkluderet der. Omvendt så vil personer som får et ikke-muslimsk navn ikke blive talt med. Det kan potentielt betyde at man undgår problemet med konvertitter og dekonvertitter som beskrevet ovenfor.

Det er nemt nok at skrabe dataene fra DSTs side med et lille script. Vi gjorde det i forbindelse med vores paper What is a good name? The S factor in Denmark at the name-level.

[Jeg poster scriptet her når jeg finder det.]

R kode

Jeg har brugt følgende R kode. Bemærk at det kræver at man allerede har megadatasettet. Det findes her: osf.io/zdcbq/files/

library(pacman)
p_load(devtools, kirkegaard, psych, plyr, stringr, dkstat, magrittr, reshape2, tidyr, ggplot2)

### estimates the number of muslims by using countries of origin and their Muslim%
# Denmark -----------------------------------------------------------------
#load data with persons from each country of origin by year
d_dk_FOLK2_meta = dst_meta(table = "FOLK2", lang = "en")
d_dk_FOLK2_meta$variables

#structure
str(d_dk_FOLK2_meta$values)

#fetch data
query = list(IELAND = d_dk_FOLK2_meta$values$IELAND$text, Tid = d_dk_FOLK2_meta$values$Tid$text)
d_dk_FOLK2 = dst_get_data(table = "FOLK2", lang = "en", meta_data = d_dk_FOLK2_meta, query = query)

#convert date to string with year
d_dk_FOLK2$TID %<>% format(format = "%Y")

#melt to wide
d_dk_FOLK2_wide = spread(d_dk_FOLK2, TID, value)

#remove empty countries (cleaning)
v_which_drop = apply(d_dk_FOLK2_wide, 1, function(x) {
  x[-1] %>% as.numeric() %>% sum()
}) %>% equals(0)
d_dk_FOLK2_wide = d_dk_FOLK2_wide[!v_which_drop, ] #drop the ones we dont want

#abbreviate the names
d_dk_FOLK2_wide$abbrev = as_abbrev(d_dk_FOLK2_wide$IELAND)

#remove unrecognized names
d_dk_FOLK2_wide = d_dk_FOLK2_wide[!is.na(d_dk_FOLK2_wide$abbrev), ]

#merge rows of duplicates
d_dk_FOLK2_wide = merge_rows(d_dk_FOLK2_wide, key = "abbrev", func = sum)

#set rownames
rownames(d_dk_FOLK2_wide) = d_dk_FOLK2_wide$abbrev

#remove cols
d_dk_FOLK2_wide$IELAND = NULL
d_dk_FOLK2_wide$abbrev = NULL

#load muslim data
d_mega = read.csv("Megadataset_v2.0m.csv", sep = ";", row.names = 1)

#merge with muslim data, leftwards (keep only overlap with danish data)
d_dk_FOLK2_wide = merge_datasets(d_dk_FOLK2_wide, d_mega["IslamPewResearch2010"], join = "left")

#remove Denmark
d_dk_FOLK2_wide = d_dk_FOLK2_wide[!str_detect(rownames(d_dk_FOLK2_wide), "DNK"), ]

#calculate estimated muslims by cell
d_dk_est = apply(d_dk_FOLK2_wide, 1, function(row) {
  v_len = length(row)
  row[1:(v_len-1)] * row[v_len]
}) %>% t %>% as.data.frame()

#sum by year
d_dk_est_by_year = data.frame(number = colSums(d_dk_est, na.rm = T), year = as.numeric(colnames(d_dk_est)))

#plot
ggplot(d_dk_est_by_year, aes(year, number)) + geom_line() + ylab("Antal muslimer i Danmark, estimeret") + xlab("År") + scale_x_continuous(breaks = seq(1980, 2015, by = 5))
ggsave("figures/number_year.png")

#increase 2005-2015
v_temp = d_dk_est_by_year[c("2005", "2015"), "number"]
((v_temp[2] / v_temp[1]) - 1) %>% round(3)

TV2 har købt data fra Danmarks Statistik om andelen af indvandrere på konstanthjælp per kommune. De har derefter lavet et interaktivt kort.

nyhederne.tv2.dk/2015-12-20-flere-flygtninge-paa-kontanthjaelp-mohamad-vil-gerne-tjene-sine-egne-penge

Dataene findes nemt i sidens kildekode i json format. Jeg har konverteret til det csv:

indvandrere_kontanthjælp_kort_kommuner.json

indvandrere_kontanthjælp_kommuner.csv

Informationen fra kortet (kommunernes placeringer og grænser findes i en json fil som hentes i baggrunden;

denmark-municipals.json

Bonus: Estimeret udgift til flygtninge per kommune

TV2 har også indsamlet tal om udgifterne til flygtningene, dog kun fra 63 kommuner.

nyhederne.tv2.dk/samfund/2015-12-20-udgifter-til-flygtninge-eksploderet-tjek-din-kommune-her

Dataene findes på samme måde som før.

indvandrere_kontanthjælp_kommuner_udgift.csv

R kode til at konvertere

library(jsonlite);library(stringr)

json = fromJSON("indvandrere_kontanthjælp_kort_kommuner.json")

data = sapply(json$regions, function(x) {
  x$valueheat %>% as.numeric
})

write.csv(data, "indvandrere_kontanthjælp_kommuner.csv")

DR er så venlig at lave en side som viser alle valgresulterne efter område i et fint kort. Uheldigvis er det ikke så nemt at få fat i dataene.

valg_dr

Så er det godt at vi kan skrabe dem. :)

Data til download:

Lidt detaljer om koden

Siden loader først et kort (vist ovenfor) og en række mindre områder på kortet (storkredse og kredse) i json format. De egentlige data bliver loadet senere, så vidt jeg kan se. Dataene om kortet indeholder ikke selve valgstederne, som i stedet findes i en liste på siden. Når man vælger et valgsted, så henter browseren en json fil med tallene. Disse filer følger et simpelt ID format, så man kan hente dem alle sammen med et loop. Underligt nok er der en del huller, nemlig IDer som ikke svarer til et valgsted. Når man forsøger at hente en af dem (fx id=4) så gir DR bare en 404. Så hvordan ved man hvor mange der er? Jeg prøver bare alle sammen indtil jeg har fået 100 fejl i træk. Det virker usandsynligt at der skulle være flere bagefter det. Hvis man følger denne regel, så er der 1386 valgsteder. Ved valget til EU i 2014 var der 1396, så det tal lyder plausibelt.

De enkelte json filer indeholder ikke valgstederne beliggenhed, uheldigvis. De indeholder dog id’et på den kreds valgstedet er i, og dette id finder man i dataene fra valgkortet. De indeholder også valgstedets navn, men det er ikke altid brugbart. Fx “Østre” eller “1. Nord”. Sætter man det sammen med kredsens navn, så gir det dog mening: “Østre – Svendborg”, “1. Nord – Østerbro” (Københavns Storkreds).

R kode til skrabning

# udtræk stemmedata fra DR ------------------------------------------------
#json
library(pacman)
p_load(stringr, rjson)

#hent json
json = fromJSON(file = "http://www.dr.dk/tjenester/fa15-result-data/map/fa2015")

#inspicer
#lad hellere vær for det er noget rod! lister i lister i liste
str(json)

#lav en flad version
json_flat = unlist(json)

#for at lave om til 2D, så skal de finde hver kolonne
#det kan gøres efter navnene. Der er 7 slags.
v_kolonnenavne = names(json_flat)[1:7]

#df
d = list()

#loop di loop
for (kolonne in v_kolonnenavne) {
  logi = str_detect(names(json_flat), kolonne)
  
  #kan godt fejle hvis en kolonne ikke findes alle steder
  try({d[[kolonne]] = json_flat[logi]})
}

#lav om til df
#gir en fejl hvis vektorne ikke er lige lange
d = as.data.frame(d)


# download valgsteddata ---------------------------------------------------------
#startobjekter
json2 = list()
fejl_i_træk = 0

#loopy loop
for (id in 1:5000) {
  #stop hvis ikke mere data, måske
  #stop efter 100 fejl i træk
  if (fejl_i_træk == 100) break
  
  #progression
  str_c("prøver id", id) %>% message
  
  #lav url
  url = str_c("http://www.dr.dk/tjenester/fa15-result-data/results/fa2015/afstemningssted/", id)
  
  #download med try
  trial = try({get = fromJSON(file = url)}, T)
  if ("try-error" %in% class(trial)) {
    str_c("id ", id, " fejlede") %>% message
    fejl_i_træk = fejl_i_træk + 1
    next
  }
  
  #ellers gem
  json2[[id]] = get
  fejl_i_træk = 0
}

#gem data
save(json2, file = "valgdata.RDS")

#navne
names(json2) = 1:length(json2)

#fjern de tomme id'er
json2 = json2[sapply(json2, Negate(is.null))]

#konverter til 2D df
#hvilke data vil vi gemme?
v_kolonnenavne2 = c("AreaType", "ID", "ParentID", "GrandParentID", "Name", "Eligable", "Turnout", "Yes", "No", "Invalid", "Abstained")

#objekt
d2 = as.data.frame(matrix(nrow = length(json2), ncol = length(v_kolonnenavne2)))
colnames(d2) = v_kolonnenavne2

#loop de loop
for (idx in seq_along(json2)) {
  #main
  for (var in v_kolonnenavne2[1:5]) {
    d2[idx, var] = json2[[idx]][var]
  }
  
  #metrics
  for (var in v_kolonnenavne2[6:7]) {
    d2[idx, var] = json2[[idx]][["Metrics"]][[var]]
  }
  
  #Chart
  for (var in v_kolonnenavne2[8:11]) {
    d2[idx, var] = json2[[idx]][["Chart"]][[var]]
  }
}