Tomma poster

Postad 2019-10-12 av Karl Pettersson. Taggar:

I förra inlägget diskuterade jag resultat som rapporterats från PURE-studien, bl.a. att cancer blivit vanligare dödsorsak än cirkulationssjukdom bland medelålders personer i höginkomstländer. Resultaten har även kommenterats av Hake (2019), som är inne på delvis samma saker som jag tog upp. Även om fler dör av cancer än av cirkulationssjukdom i åldersgrupperna under 80 år i Sverige, och det inte är någon direkt nyhet, gäller det inte befolkningen som helhet, där de flesta dödsfall inträffar efter 80 års ålder. Samma sak gäller i andra höginkomstländer med hög medellivslängd, och skribenten anser att detta tydligare kunde ha klargjorts i artikeln i Lancet (Dagenais m.fl. 2019) och utskickade pressmeddelanden, då det blivit väldigt många rubriker i världens medier som förkunnat att cancer är en vanligare dödsorsak än hjärta-kärlsjukdom. Larsson (2019), som jag refererade till i förra inlägget, är ett exempel på en sådan rubrik.

Av diagrammen i förra inlägget framgår att trenden med minskande kvot mellan antalet dödsfall i cirkulationssjukdom över tumörer i Sverige i åldersgrupperna under 75 år verkar ha planat ut sedan mitten av förra årtiondet. Kan en sådan utplaning även ses för hela åldersspannet? Hur ser trenden ut i olika delar av Sverige? Det är känt sedan länge att vissa delar av Sverige, t.ex. i Norrland och Svealands inland, har högre dödstal i cirkulationssjukdom än andra områden, som Stockholm, Uppsala och delar av Sydsverige. Är det kanske så att kvoten redan nått 1 i dessa senare områden?

Socialstyrelsens statistikdatabas för dödsorsaker innehåller data över orsaksspecifika dödstal i Sveriges län från 1997 och framåt (den tid ICD-10 använts), och innehållet i denna har dumpats i CSV-filer tillgängliga via Socialstyrelsen (2020). Filerna har nedanstående format.

Mått;År;Region;Diagnos;Kön;Ålder;Värde
1;1997;0;99;1;1;241
1;1997;0;99;1;2;53

I vissa avseenden är den information som finns tillgänglig via statistikdatabasen och filerna inte så detaljerad som kunde vara önskvärt. Framför allt görs grupperingen efter ålder fortfarande i femåriga åldersintervall upp till 80–84 år och ett öppet intervall 85- år, något som ter sig ganska märkligt när mer än hälften av dödsfallen bland kvinnor inträffar efter 85 års ålder, som jag skrev om den 25 augusti 2016. Något som kan te sig ännu märkligare är att varje årsfil innehåller mer än 2,4 miljoner rader, samtidigt som det inträffar ca 90 000 dödsfall per år i Sverige. En fil med mycket begränsad information innehåller alltså nära 30 gånger så många poster som vi skulle få om hela dödsorsaksregistret dumpades och publicerades rakt av (vilket förstås inte är juridiskt möjligt). Förklaringen är att de flesta raderna i de publicerade filerna utgörs av kombinationer av dödsorsaker, åldrar, kön och regioner där det inte inträffat några dödsfall, vilket gäller för majoriteten av alla dödsorsaker i låga åldersgrupper.

Hur skall dessa klumpiga dumpar hanteras för att kunna göra någorlunda smärtfria analyser? Här har jag låtit mig inspireras av Drake (2014), som handlar om hur enkla skalverktyg, som finns i Unixliknande system, kan användas för att göra sammanställningar av data i textfiler på några GB mycket snabbare än Big Data-verktyg som Hadoop. Exemplet i inlägget handlar om statistik för schackpartier.

I underkatalogen postdata/2019-10-12-tomma i bloggförrådet finns ett skalskript propyrs_allreg.sh, som kan användas för att sammanställa kvoten mellan antalet dödsfall i två grupper av dödsorsaker per region, kön, ålder och år. Skriptet använder sig av find för att hitta CSV-filer i underkatalogen data (det förutsätter att filerna med antalet dödsfall per år från Socialstyrelsens ZIP-fil med årsvis data packats upp där). Därefter används xargs för att skicka dessa filer till grep, som sorterar ut de rader som innehåller relevanta data. Här görs, som i Drakes exempel, parallellisering med argumentet -P4, för att snabba upp körningen. Utdata från grep filtreras sedan till awk, för att göra själva sammanställningen. Nedanstående kommando ger kvoten mellan antalet dödsfall i cirkulationssjukdom (ICD-10 I00–I99+F01) och tumör (C00–D48) per region och kön för alla åldersgrupper.

./propyrs_allreg.sh [12] 99 "I00-I99|F01" "C00-D48"

Detta kommando, som alltså sammaställer information med reguljära uttryck från 22 CSV-filer med över 50 miljoner rader totalt, körs på 1,04 sekunder på min laptop (en ganska ny ThinkPad T580 med Arch Linux), efter att systemets sidcache rensats. Utdata är i följande format.

år;region;kön;antal orsak 1;antal orsak 2;(antal orsak 1)/(antal orsak 2)
2018;12;1;2019;1708;1.182
2018;12;2;2192;1480;1.481
2018;13;1;508;433;1.173
2018;13;2;493;356;1.385

Dessa utdata kan förstås sedan användas i program som Python eller Julia för vidare analys eller visualisering. Skriptet sdb_reg.jl använder Julia för att generera fig. 1 och fig. 2, som visar utvecklingen av kvoten för riket och de tre län som hade lägst och högst kvot 1997, bland kvinnor och män i alla åldrar.

Figur 1: Kvot mellan dödsfall cirkulationsorgan och tumörer län Sverige 1997–2018
Figur 2: Kvot mellan dödsfall cirkulationsorgan och tumörer län Sverige 1997–2018

Län med initialt låg kvot har alltså haft en relativt långsam minskning, och kvoten har fortfarande inte nått 1. Kvoten för riket som helhet har närmat sig dessa län och kan möjligen ha planat ut bland män efter 2015. Det har skett kraftigare minskningar i flera län med initialt hög kvot, men i vissa fall har dessa också planat ut på en relativt hög nivå, som kvoten för män i Norrbottens län.

Referenser

Dagenais, Gilles R., Darryl P. Leong, Sumathy Rangarajan, Fernando Lanas, Patricio Lopez-Jaramillo, Rajeev Gupta, Annika Rosengren, m.fl. 2019. ”Variations in common diseases, hospital admissions, and deaths in middle-aged adults in 21 countries from five continents (PURE): a prospective cohort study”. The Lancet. doi:10.1016/S0140-6736(19)32007-0.
Drake, Adam. 2014. ”Command-line Tools can be 235x Faster than your Hadoop Cluster”. https://adamdrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html.
Hake, Carl-Magnus. 2019. ”Mer nyans om svenskarnas främsta dödsorsaker”. https://www.dagensmedicin.se/blogg/carl-magnus-hake/2019/09/10/mer-nyans-om-svenskarnas-framsta-dodsorsaker.
Larsson, Anna. 2019. ”Cancer tar flest liv i rika länder”. https://sverigesradio.se/sida/artikel.aspx?programid=83&artikel=7292603.
Socialstyrelsen. 2020. ”Datafiler för utvecklare [Socialstyrelens statistikdatabas]”. https://www.socialstyrelsen.se/statistik-och-data/statistik/for-utvecklare/.