Ero sivun ”Radonin terveysvaikutukset” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
(sivurakennetta järjestetty)
Rivi 126: Rivi 126:
objects.latest('Op_en6007', code_name = 'answer') # [[OpasnetUtils/Drafts]] fetches fillna function.
objects.latest('Op_en6007', code_name = 'answer') # [[OpasnetUtils/Drafts]] fetches fillna function.


objects.latest('Op_en2261', code_name = 'initiate') # [[op_en:Health impact assessment]] ovariables totcases, attrcases.
objects.latest('Op_en2261', code_name = 'initiate') # [[op_en:Health impact assessment]] ovariables totcases, AF.  


objects.latest('Op_fi2761', code_name = 'alusta') # [[Talotyypit Suomessa]], ovariable asunnot, asuntovaesto.
objects.latest('Op_fi2761', code_name = 'alusta') # [[Talotyypit Suomessa]], ovariable asunnot, asuntovaesto.
Rivi 241: Rivi 241:
###################### ACTUAL MODEL
###################### ACTUAL MODEL


attrcases <- EvalOutput(attrcases)
AF <- EvalOutput(AF)


casescen <- Ovariable("casescen",
casescen <- Ovariable("casescen",
dependencies = data.frame(Name = c(
dependencies = data.frame(Name = c(
"population",  
"population",  
"attrcases",  
"totcases",
"AF",  
"ERF",  
"ERF",  
"exposure",  
"exposure",  
Rivi 254: Rivi 255:


population2 <- unkeep(population, sources = TRUE, prevresults = TRUE)
population2 <- unkeep(population, sources = TRUE, prevresults = TRUE)
disbg <- attrcases / population2
disbg <- AF * totcases / population2
disbg@output <- disbg@output[!is.nan(result(disbg)) & ! grepl("\\+", disbg@output$Causes) , ]
disbg@output <- disbg@output[!is.nan(result(disbg)) & ! grepl("\\+", disbg@output$Causes) , ]
disbg <- unkeep(disbg, cols = c("Tupakoija", "Causes"))
disbg <- unkeep(disbg, cols = c("Tupakoija", "Causes"))
Rivi 310: Rivi 311:


####################### OUTPUT GRAPHS AND TABLES
####################### OUTPUT GRAPHS AND TABLES
attrcases <- totcases * AF


oprint(head(attrcases@output))
oprint(head(attrcases@output))


ggplot(attrcases@output, aes(weight = attrcasesResult / N, x = Causes, fill = Talotyyppi)) + geom_bar(position = 'stack') + labs(y = "Keuhkosyöpäkuolemia (lung cancer deaths) (#/a)")
ggplot(attrcases@output, aes(weight = Result / N, x = Causes, fill = Talotyyppi)) + geom_bar(position = 'stack') + labs(y = "Keuhkosyöpäkuolemia (lung cancer deaths) (#/a)")


ggplot(attrcases@output, aes(weight = attrcasesResult / N, x = Causes, fill = Tupakoija)) +
ggplot(attrcases@output, aes(weight = Result / N, x = Causes, fill = Tupakoija)) +
geom_bar(position = 'stack') + labs(y = "Keuhkosyöpäkuolemia (lung cancer deaths) (#/a)")
geom_bar(position = 'stack') + labs(y = "Keuhkosyöpäkuolemia (lung cancer deaths) (#/a)")


ggplot(attrcases@output, aes(weight = attrcasesResult / N, x = Causes, fill = Maakunta)) +
ggplot(attrcases@output, aes(weight = Result / N, x = Causes, fill = Maakunta)) +
geom_bar(position = 'stack') + labs(y = "Keuhkosyöpäkuolemia (lung cancer deaths) (#/a)")
geom_bar(position = 'stack') + labs(y = "Keuhkosyöpäkuolemia (lung cancer deaths) (#/a)")


ggplot(attrcases@output, aes(weight = attrcasesResult / N, x = Tupakoija, fill = Talotyyppi)) + geom_bar(position = "dodge") +
ggplot(attrcases@output, aes(weight = Result / N, x = Tupakoija, fill = Talotyyppi)) + geom_bar(position = "dodge") +
theme_grey(base_size = 24) + labs(title = "Tapauksia vuodessa")
theme_grey(base_size = 24) + labs(title = "Tapauksia vuodessa")


Rivi 327: Rivi 330:
theme_grey(base_size = 24) + labs(title = "Väestö")
theme_grey(base_size = 24) + labs(title = "Väestö")


ggplot(exposure@output[exposure@output$Pollutant == "Radon" , ], aes(x = exposureResult, colour = Talotyyppi)) + geom_density(adjust = 4, size = 1) + labs(title = "Radonpitoisuuden jakauma talotyypeittäin")
ggplot(exposurebau@output[exposure@output$Pollutant == "Radon" , ], aes(x = exposureResult, colour = Talotyyppi)) + geom_density(adjust = 4, size = 1) + labs(title = "Radonpitoisuuden jakauma talotyypeittäin")


ggplot(radonpit@output, aes(x = Maakunta, y = radonpitResult, fill = Talotyyppi)) + geom_boxplot() + coord_flip(ylim = c(0, 1000)) + labs(y = "Radonpitoisuus (Radon concentration) (Bq/m3)")
ggplot(radonpit@output, aes(x = Maakunta, y = radonpitResult, fill = Talotyyppi)) + geom_boxplot() + coord_flip(ylim = c(0, 1000)) + labs(y = "Radonpitoisuus (Radon concentration) (Bq/m3)")
Rivi 369: Rivi 372:
}
}


## POISTETTIIN KOKO KUNTAKARTTATOIMINNALLISUUS, KOSKA JOTKIN OSAT OVAT VANHENTUNEET. ON HELPOMPI RAKENTAA ALUSTA UUDESTAAN.
## POISTETTIIN KOKO KUNTAKARTTATOIMINNALLISUUS, KOSKA JOTKIN OSAT OVAT VANHENTUNEET. ON HELPOMPI RAKENTAA  
 
 
####################################################3
 
attrisk <- Ovariable("attrcases", # Probabilities of disease attributed to specific (combinations of) causal exposures.
dependencies = data.frame(Name = c(
"ERF", # Exposure-response function
"exposure", # Total exposure to an agent or pollutant
"bgexposure" # Background exposure to an agent (a level below which you cannot get in practice)
)),
formula = function(...) {
 
# First calculate risk ratio and remove redundant columns because they cause harm when operated with itself.
RR <- unkeep(exp(log(ERF) * (exposure - bgexposure)), prevresults = TRUE, sources = TRUE)
PAF <- (RR - 1) / RR
 
# pollutants is a vector of pollutants considered.
pollutants <- unique(exposure@output$Pollutant)
pollutants <- levels(pollutants)[pollutants]
 
out <- 1
for(i in 1:length(pollutants)) {
# Attributable fraction of a particular pollutant is combined with all pollutant AFs.
# The combination has 2^n rows (n = number of pollutants). Pollutant is either + or - depending on
# whether it caused the disease or not.
temp <- Ovariable(data = data.frame(
Pollutant = pollutants[i],
Temp1 = c(paste(pollutants[i], "-", sep = ""), paste(pollutants[i], "+", sep = "")),
Result = c(-1, 1) # Non-causes are temporarily marked with negative numbers.
))
temp <- temp * PAF
 
# Non-causes are given the remainder (1-AF) of attributable fraction AF.
result(temp) <- ifelse(result(temp) > 0, result(temp), 1 + result(temp))
# Causes with 0 AF are marked 1. This must be corrected.
result(temp) <- ifelse(result(temp) == 1 & grepl("\\+", temp@output$Temp1), 0, result(temp))
out <- out * temp
out <- unkeep(out, cols = "Pollutant", sources = TRUE, prevresults = TRUE)
 
# Combine and rename columns.
if(i == 1) {
colnames(out@output)[colnames(out@output) == "Temp1"] <- "Causes"
} else {
out@output$Causes <- paste(out@output$Causes, out@output$Temp1)
out@output$Temp1 <- NULL
}
}
 
return(out)
}
)




############################


# Tämän laskennan on tarkoitus palauttaa altistustieto riskimuuttujaan. Mutta mieti parempi toteutus. Entä sisällyttäminen  
# Tämän laskennan on tarkoitus palauttaa altistustieto riskimuuttujaan. Mutta mieti parempi toteutus. Entä sisällyttäminen  

Versio 1. toukokuuta 2014 kello 05.16





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?

Päätösvaihtoehdot

  • Tupakointi vähenee yhden prosenttiyksikön
Päätökset(-)
ObsDecision makerDecisionOptionVariableCellChangeValueDescription
1ValtioRadontoimiBAUexposurenewPollutant:RadonMultiply1Business as usual
2ValtioRadontoimiRadontalkootexposurenewPollutant:RadonMultiply0.5Raju vähennys

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

Sivuja, joissa on mahdollisesti mallissa käytettävää tietoa

Katso myös

Viitteet


Aiheeseen liittyviä tiedostoja

<mfanonymousfilelist></mfanonymousfilelist>