Ero sivun ”Radonin terveysvaikutukset” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
(pientä viilausta)
(→‎Laskenta: vaikutusrr poistettu ja muuta säätöä; ei toimi)
Rivi 79: Rivi 79:


*[http://www.cookbook-r.com/Graphs/Axes_%28ggplot2%29/ Axis formatting] (e.g. log2 format)
*[http://www.cookbook-r.com/Graphs/Axes_%28ggplot2%29/ Axis formatting] (e.g. log2 format)
* vaikutusrr poistettu kokonaan toistaiseksi, koska se ei toimi. Löytyy [http://fi.opasnet.org/fi_wiki/index.php?title=Radonin_terveysvaikutukset&oldid=21810 vanhasta versiosta].


<rcode graphics=1 embed=1 variables="
<rcode graphics=1 embed=0 variables="
name:N|default:1|
name:N|default:1|
name:erottelu1|description:Minkä tekijän mukaan haluat erotella terveysvasteen (x-akseli)?|type:selection|
name:erottelu1|description:Minkä tekijän mukaan haluat erotella terveysvasteen (x-akseli)?|type:selection|
Rivi 99: Rivi 100:
name:verbose|description:Haluatko nähdä välivaiheet?|type:selection|options:FALSE;En;TRUE;Kyllä|default:FALSE
name:verbose|description:Haluatko nähdä välivaiheet?|type:selection|options:FALSE;En;TRUE;Kyllä|default:FALSE
">
">
N <- 1
erottelu1 <- 'Maakunta'
erottelu2 <- 'Altiste'
verbose <- FALSE
library(OpasnetUtils)
library(OpasnetUtils)
library(ggplot2)
library(ggplot2)
Rivi 110: Rivi 116:
### ASUNTOVÄESTÖ
### ASUNTOVÄESTÖ


objects.latest('Op_fi2761', code_name = 'alusta') # [[Talotyypit Suomessa]], ovariable talot.
objects.latest('Op_fi2761', code_name = 'alusta') # [[Talotyypit Suomessa]], ovariable asunnot, asuntovaesto.


# Yksinkertaista talotyyppiluokittelua ja summaa taloista pois perhekoko.
# Yksinkertaista talotyyppiluokittelua ja summaa taloista pois perhekoko.


levels(asuntoväestö@data$Talotyyppi) <- ifelse(
levels(asuntovaesto@data$Talotyyppi) <- ifelse(
levels(asuntoväestö@data$Talotyyppi) == "Asuinkerrostalo",  
levels(asuntovaesto@data$Talotyyppi) == "Asuinkerrostalo",  
"Kerrostalo",  
"Kerrostalo",  
"Pientalo"
"Pientalo"
)
)
asuntovaesto <- oapply(EvalOutput(asuntovaesto), cols = "Asuntokunta", FUN = sum)


### KUNNAT
### KUNNAT
Rivi 146: Rivi 154:


väestö <- Ovariable("väestö",  
väestö <- Ovariable("väestö",  
dependencies = data.frame(Name = c("kunnat", "asuntoväestö", "aluevastaavuus", "tupakointi")),
dependencies = data.frame(Name = c("kunnat", "asuntovaesto", "aluevastaavuus", "tupakointi")),
formula = function(...) {
formula = function(...) {


asuntoväestö <- collapsemarg(asuntoväestö, c("Asuntokunta"), "sum")
out <- kunnat * asuntovaesto * aluevastaavuus * tupakointi
 
out <- kunnat * asuntoväestö * aluevastaavuus * tupakointi


return(out)
return(out)
Rivi 175: Rivi 181:


# ALTISTUS YHTEENSÄ
# ALTISTUS YHTEENSÄ
radonpit <- EvalOutput(radonpit, N = N)


altistus <- Ovariable("altistus",  
altistus <- Ovariable("altistus",  
Rivi 194: Rivi 202:


ERF <- Ovariable("ERF", data = data.frame(
ERF <- Ovariable("ERF", data = data.frame(
Primaaripaikka = "Keuhkot, henkitorvi", # ICD.10.koodi == "C33-34"
Altiste = c("Radon", "Tupakka"),  
Altiste = c("Radon", "Tupakka"),  
Primaaripaikka = "Keuhkot, henkitorvi", # ICD.10.koodi == "C33-34"
Result = c(1.0016, 20)
Result = c(1.0016, 20)
))
))
Rivi 206: Rivi 214:


out <- exp(log(ERF) * (altistus - tausta.altistus)) # Relative risk given the exposures
out <- exp(log(ERF) * (altistus - tausta.altistus)) # Relative risk given the exposures
out <- unkeep(oapply(out, cols = "Altiste", FUN = prod), sources = TRUE)


return(out)
return(out)
Rivi 215: Rivi 225:
objects.latest('Op_fi3912', code_name = 'alusta') # [[Syöpäkuolleisuus Suomessa]], ovariable syopakuolleisuus.
objects.latest('Op_fi3912', code_name = 'alusta') # [[Syöpäkuolleisuus Suomessa]], ovariable syopakuolleisuus.


# syopakuolleisuus@data <- syopakuolleisuus@data[syopakuolleisuus@data$Primaaripaikka == "Keuhkot, henkitorvi" , ] # ICD.10.koodi == "C33-34"
syopakuolleisuus@data <- syopakuolleisuus@data[syopakuolleisuus@data$Primaaripaikka == "Keuhkot, henkitorvi" , ]  
 
# ICD.10.koodi == "C33-34"
#syopakuolleisuus <- EvalOutput(syopakuolleisuus, N = N)


###### OSA 3: TAUTIKUORMA
###### OSA 3: TAUTIKUORMA
Rivi 226: Rivi 235:
# Etuna on, että jokaiselle altisteelle saadaan arvio erikseen.
# Etuna on, että jokaiselle altisteelle saadaan arvio erikseen.


väestöosuus <- 1
#vaestoosuus <- 1
 
temp3 <- unkeep(väestö, cols = c("Maakunta", "Sairaanhoitopiiri"), sources = TRUE, prevresults = TRUE)
vaestoosuus <- temp3 / sum(result(temp3))


vaikutuspaf <- Ovariable("vaikutuspaf",  
vaikutuspaf <- Ovariable("vaikutuspaf",  
dependencies = data.frame(Name = c("väestöosuus", "RR", "väestö", "syopakuolleisuus")),
dependencies = data.frame(Name = c("vaestoosuus", "RR", "väestö", "syopakuolleisuus")),
formula = function(...) {
formula = function(...) {


PAF <- väestöosuus * (RR - 1) / (väestöosuus * (RR - 1) + 1)
PAF <- vaestoosuus * (RR - 1) / (vaestoosuus * (RR - 1) + 1)


out <- väestö * PAF * syopakuolleisuus
out <- väestö * PAF * syopakuolleisuus
Rivi 240: Rivi 252:
)
)


vaikutuspaf <- EvalOutput(vaikutuspaf)


### ARVIO PERUSTUEN TAUSTARISKIIN
PAF <- Ovariable("PAF",
# Tässä oletetaan, että on olemassa populaatiokohtainen taustariski, jota ei altistumisen takia havaita.  
dependencies = data.frame(Name = c("vaestoosuus", "RR", "väestö", "syopakuolleisuus")),
# Se voidaan kuitenkin laskea ottamalla havaittu tautikuorma ja poistamalla altistumisen vaikutus.
formula = function(...) {
# Arvio lienee tarkempi kuin PAF-menetelmällä, mutta altistekohtainen tieto menetetään.


# Calculate subgroup-specific background risks by first calculating a temporary burden estimate.
out <- vaestoosuus * (RR - 1) / (vaestoosuus * (RR - 1) + 1)
# temp is a population-weighted average of relative risks. The actual disease risk is divided by this value and then multiplied
# by the subgroup-specific relative risk. In this way, the total burden of all subgroups equals to what is actually seen.


#### vaikutusrr laskee jotain pahasti väärin. Älä käytä ennen kuin on korjattu.
#out <- väestö * PAF * syopakuolleisuus
#vaikutusrr <- Ovariable("vaikutusrr",
# dependencies = data.frame(Name = c("väestö", "RR")),
# formula = function(...) {
#
# RRkok <- collapsemarg(RR, c("Altiste"), "prod")
#
# temp1 <- RRkok * väestö # Population-weighted sum of the relative risk.
# temp2 <- (RRkok * 0 + 1) * väestö # Population-weighted sum of ones with the same dimensions.
#
# integrate <- colnames(temp1)[
# colnames(temp1) %in% temp1@marginal & !
# colnames(temp1) %in% c("Sairaanhoitopiiri", "Sukupuoli", "Iter")
# ]
#
#c("Tupakka", "Maakunta", "Talotyyppi", "Primaaripaikka", "ERFSource", "altistusSource", "RRSource", "Kunta",
# "kunnatSource", "talotSource", "väkiSource", "aluevastaavuusSource", "Sukupuoli", "tupakointiSource", "väestöSource"
#)
#
# temp1 <- collapsemarg(temp1, integrate, "sum") # Aggregate to the same indices as kokonaisvaikutus.
# temp2 <- collapsemarg(temp2, integrate, "sum")
#
# tausta <- syopakuolleisuus / (temp1 / temp2) # syopakuolleisuus without any exposure
#
#cat("väestö * tausta, väestö * RRkok, tausta * RRkok\n")
#print(nrow((väestö * tausta)@output))
#print(nrow((väestö * RRkok)@output))
#print(nrow((tausta * RRkok)@output))
#
#print(ograph(RRkok, x = "Maakunta", fill = "Tupakka"))
#
#print(ograph(tausta, x = "Maakunta", fill = "Sukupuoli"))
#
# out <- väestö * tausta * RRkok
#
# out <- collapsemarg(out, c("Iter", "Kunta", "Tupakka", "Talotyyppi"), "sum")
#
# return(out)
# }
#)


#turhat <- c("Maakunta", "kunnatSource", "talotSource", "väkiSource", "Sairaanhoitopiiri", "aluevastaavuusSource",
return(out)
# "tupakointiSource", "väestöSource", "ERFSource")
}
 
)
radonpit <- EvalOutput(radonpit, N = N)
väestö <- EvalOutput(väestö, N = N)
#väestö <- collapsemarg(väestö, "Maakunta", fun = "pick", picks = "Itä-Uusimaa")
vaikutuspaf <- EvalOutput(vaikutuspaf)
#vaikutusrr <- EvalOutput(vaikutusrr, N = N)


if(verbose) {
if(verbose) {
Rivi 308: Rivi 274:
oprint(head(kunnat@output))
oprint(head(kunnat@output))
cat("Asuntoväestö\n")
cat("Asuntoväestö\n")
print(nrow(asuntoväestö@output))
print(nrow(asuntovaesto@output))
oprint(head(asuntoväestö@output))
oprint(head(asuntovaesto@output))
cat("Aluevastaavuus\n")
cat("Aluevastaavuus\n")
print(nrow(aluevastaavuus@output))
print(nrow(aluevastaavuus@output))
Rivi 335: Rivi 301:
print(nrow(vaikutuspaf@output))
print(nrow(vaikutuspaf@output))
oprint(head(vaikutuspaf@output))
oprint(head(vaikutuspaf@output))
# cat("Kokonaisvaikutus RR-menetelmällä\n")
# print(nrow(vaikutusrr@output))
# oprint(head(vaikutusrr@output))
# oprint(vaikutuspaf)
# oprint(vaikutusrr)
}
}


temp <- vaikutuspaf@output
ggplot(vaikutuspaf@output, aes(weight = vaikutuspafResult / N, x = Tupakka, fill = Talotyyppi)) +
temp$vaik <- temp$vaikutuspafResult / N
geom_bar(position = 'dodge')
ggplot(temp, aes(weight = vaik, x = Tupakka, fill = Talotyyppi)) + geom_bar(position = 'dodge')





Versio 24. huhtikuuta 2014 kello 12.15





Kysymys

Mitkä ovat radonin terveysvaikutukset Suomessa? Erityisesti pitäisi tarkastella näitä kysymyksiä:

  • Mikä on radonin kokonaistautitaakka?
  • Kuinka suuri on radonin ja tupakan yhteisvaikutus?
    • Onko kyseessä riippumaton, additiivinen, multiplikatiivinen tai yhteisvaikutus, ja mitä nämä tarkoittavat?
  • Miten radonin tautitaakka jakautuu erilaisissa asunnoissa asuvien kesken (esim. yli tai alle 300 Bq/m3)?
  • Mitä eri toimenpiteitä olisi mahdollista tehdä radonin tautitaakan pienentämiseksi?
    • Mitä muita vaikutuksia näillä toimepiteillä on (kustannukset, kiellot, elämäntapamuutokset, terveyssynergiat?)
  • Mitkä arvoarvostelmat määräävät sitä, mitkä toimepidevaihtoehdoista näyttäytyvät suositeltavina?

Vastaus

Radonin kokonaistautitaakka näyttäisi olevan 1973 DALY /vuosi (ks. Tautitaakka Suomessa ja SETURI/TEKAISU: Sisäilman radonin tautitapausmäärä ja tautitaakka arviot

Kuinka suuri on radonin ja tupakan yhteisvaikutus?

  • Riippumaton: BoD = Tr + Tt - T(r ja t)
  • Additiivinen: BoD = BG * RRr * RRt
  • Multiplikatiivinen: BoD > BG * RRr * RRt
  • Yhteisvaikutus: jotain muuta vai mikä tahansa noista?

Jossa

  • BoD: burden of disease eli tautitaakka
  • T: tapausmäärä (ilmoitettuna DALYina)
  • r: radon
  • t: tupakka
  • BG: taustariski

Ne asunnot, joissa radonpitoisuus on yli 300 Bq/m3, johtavat arviolta 65-80 keuhkosyöpätapaukseen vuodessa. Näistä pelkän radonin aiheuttamia on noin kymmenen tapausta (loput: radon + tupakka). Tämän verran siis vähenisivät tapaukset , jos kaikki 300 Bq/m3 ylitykset korjattaisiin tasolle 0 Bq/m3.

Jos yli 300 Bq/m3 radonpitoisuudet korjataan tasolle 300 Bq/m3, vähenevät keuhkosyöpätapaukset noin 25-40 tapauksella vuodessa (näistä 3- 5 keuhkosyöpää on pelkän radonin aiheuttamaa).

Arvioinnissa on otettu huomioon 300 Bq/m3 ylittävän väestön altistusarvion epätarkkuus 95% luottamusvälillä (10%). Kaikkien radonin (tai radon+tupakka) aiheuttamien keuhkosyöpien määrä, 300 kpl vuodessa, on oletettu tässä arvioinnissa tarkaksi, vaikka vaihteluväli onkin 100 – 600 tapausta. Eli näihin lukuihin täytyy suhtautua lähinnä suuntaa antavina.R↻

Toimenpiteitä radonin tautitaakan pienentämiseksi?

  • Radontuuletus kaikkiin uusiin rakennuksiin.
  • Radontuuletusvalmius kaikkiin uusiin rakennuksiin, tuuletus vain jos mittaus osoittaa korkeita pitoisuuksia.
  • Radontuuletus myös vanhoihin rakennuksiin.
  • Tupakointikielto.
  • Kansalaistiedotus.
  • Radonmittausten kannustaminen tiedolla tai rahallisella tuella.
  • Edellä mainittujen toimien kohdistaminen vain tupakoiviin.
  • Edellä mainittujen toimien kohdistaminen vain radonalueille.

Radontoimepiteiden muita kuin terveysvaikutuksia:

  • Kustannukset.
  • Kiellot ja itsemääräämisoikeus.
  • Elämäntapamuutokset.
  • Vaikutusten kohdistuminen erilaisena kansalaiseen, lähimmäiseen tai yhteiskuntaan.

Arvoarvostelmia:

  • Tautitaakkaa on pienennettävä.
  • Tautitaakkaa on pienennettävä kaikilla toimilla, jotka ovat halvempia kuin 10000 € / DALY (tai jokin muu raja).
  • Kansalaisten itsemääräämisoikeuteen ei saa puuttua.
  • Kansalaisia ja erityisesti lapsia on suojeltava altisteilta, jonka määrään ei voi itse vaikuttaa.

Näkökulmia radonhaitan torjuntaan

Perustelut

Vastaus on alustava, ja malli pitäisi tarkistaa ennen kuin vankkoja päätelmiä tehdään. Kehityskohteita:

  • Maakuntien ja kuntien yhdistäminen pitäisi tehdä jotenkin älykkäästi skräpätystä datasta eikä tässä koodissa.
  • Itä-Uudenmaan kunnat voisi korjata näin: out$Kunta[out$Kunta %in% c("Mäntsälä", "Pornainen", "Porvoo", "etc", "", "", "")] <- "Itä-Uusimaa"
  • Radonpitoisuudet pitää sämplätä maakunnittain, ei kunnittain kuten nyt. Pienillä ännän arvoilla tulee isoja eroja kuntien välille, mutta se on pelkkää harhaa.
  • Epävarmuudet voiti ottaa myös annosvasteisiin.
  • Pitoisuusjakaumat voisi toteuttaa oikeasti jakaumina olettaen esim. lognormaalijakauman epävarmoilla parametreilla joka maakuntaan. Nyt kuvaajiin tulee harhaisia piikkejä. Jos olisi alkuperäisdata, niin voisi tehdä pikku Bayes-mallin.
  • Kartan piirtäminen ja muutamat muut jutut voisi tehdä funktioiksi ja pistää jollekin järkevälle sivulle, josta ne inkludeerataan tähän.
  • Miksi yksikköriski näyttää tosi isolta, mutta kun summataan yli koko väestön, talo*tupakointikohtaiset luvut näyttävät tosi pieniltä.
  • Pitäisi katsoa, onko puuttuvia arvoja, jotka mergatessa slaissaavat dataa pois.
  • Satunnaistaminen pitäisi tehdä sellaisissa vaiheissa, että se olisi nopeaa.
  • Miten pitäisi käsitellä asuntojen radonpitoisuuksien vaihtelu vs. epävarmuus syöpäriskistä? Meneekö 2DMC liian raskaaksi ja onko siitä vastaavaa hyötyä? Voiko saman toteuttaa 1DMC:na siten, että haluttu epävarmuus käsitellään vaihteluna eri tavalla kuin muut?

Laskenta

N:

Minkä tekijän mukaan haluat erotella terveysvasteen (x-akseli)?:

Minkä toisen tekijän mukaan haluat erotella terveysvasteen (väri)?:

Haluatko nähdä välivaiheet?:

+ Näytä koodi

Riippuvuudet

Data

Maakunnat ja sairaanhoitopiirit(-)
ObsMaakuntaSairaanhoitopiiri
1AhvenanmaaÅland
2Etelä-KarjalaEtelä-Karjala
3Etelä-PohjanmaaEtelä-Pohjanmaa
4Etelä-SavoEtelä-Savo
5UusimaaHelsinki ja Uusimaa
6Itä-UusimaaHelsinki ja Uusimaa
7Itä-Savo
8KainuuKainuu
9Kanta-HämeKanta-Häme
10Keski-PohjanmaaKeski-Pohjanmaa
11Keski-SuomiKeski-Suomi
12KymenlaaksoKymenlaakso
13Länsi-Pohja
14LappiLappi
15Päijät-HämePäijät-Häme
16PirkanmaaPirkanmaa
17PohjanmaaVaasa
18Pohjois-KarjalaPohjois-Karjala
19Pohjois-PohjanmaaPohjois-Pohjanmaa
20Pohjois-SavoPohjois-Savo
21SatakuntaSatakunta
22Varsinais-SuomiVarsinais-Suomi
23YhteensäKoko maa

Katso myös

Viitteet


Aiheeseen liittyviä tiedostoja

<mfanonymousfilelist></mfanonymousfilelist>