Ero sivun ”Radonin terveysvaikutukset” versioiden välillä
Siirry navigaatioon
Siirry hakuun
(→Laskenta: tuntuu toimivan) |
|||
Rivi 56: | Rivi 56: | ||
# Yksinkertaista talotyyppiluokittelua ja summaa taloista pois perhekoko. | # Yksinkertaista talotyyppiluokittelua ja summaa taloista pois perhekoko. | ||
levels(talot@output$Talotyyppi) <- ifelse( | levels(talot@output$Talotyyppi) <- ifelse( | ||
Rivi 71: | Rivi 69: | ||
objects.latest('Op_fi3907', code_name = 'alusta') # [[Suomen kunnat]], ovariable kunnat. | objects.latest('Op_fi3907', code_name = 'alusta') # [[Suomen kunnat]], ovariable kunnat. | ||
### TUPAKOINTI JA ALUEVASTAAVUUS | ### TUPAKOINTI JA ALUEVASTAAVUUS | ||
tupakointi <- | tupakointi <- Ovariable("tupakointi", # Tupakoivien osuus väestöstä. Result-sarake summautuu ykköseen. | ||
data = data.frame( | data = data.frame( | ||
Sukupuoli = rep(c("Miehet", "Naiset"), 2), | Sukupuoli = rep(c("Miehet", "Naiset"), 2), | ||
Rivi 82: | Rivi 78: | ||
Result = c(0.11, 0.08, 0.39, 0.42) | Result = c(0.11, 0.08, 0.39, 0.42) | ||
) | ) | ||
) | |||
aluevastaavuus <- Ovariable("aluevastaavuus", | |||
aluevastaavuus <- | |||
data = { | data = { | ||
dat <- tidy(opbase.data("Op_fi2760.maakunnat_ja_sairaanhoitopiirit")) | dat <- tidy(opbase.data("Op_fi2760.maakunnat_ja_sairaanhoitopiirit")) | ||
Rivi 92: | Rivi 87: | ||
dat | dat | ||
} | } | ||
) | |||
### VÄESTÖN LASKENTA | ### VÄESTÖN LASKENTA | ||
väestö <- kunnat | väestö <- Ovariable("väestö", | ||
dependencies = data.frame(Name = c("kunnat", "talot", "aluevastaavuus", "tupakointi")), | |||
formula = function(...) { | |||
out <- kunnat * talot * aluevastaavuus * tupakointi | |||
return(out) | |||
} | |||
) | |||
###### OSA 2: RISKISUHTEET | ###### OSA 2: RISKISUHTEET | ||
Rivi 119: | Rivi 109: | ||
objects.latest('Op_fi2759', code_name = 'alusta') # [[Radon sisäilmassa]], ovariable radonpit, data.frame radon. | objects.latest('Op_fi2759', code_name = 'alusta') # [[Radon sisäilmassa]], ovariable radonpit, data.frame radon. | ||
radon$Altiste <- "Radon" # Uusi sarake kuvaamaan sitä, minkä altisteen altistumisesta tai riskistä on kyse ko. rivillä. | |||
# TUPAKKA. Väestö on jo jaettu tupakoiviin ja tupakoimattomiin. | # TUPAKKA. Väestö on jo jaettu tupakoiviin ja tupakoimattomiin. | ||
tupakkaaltistus <- | tupakkaaltistus <- Ovariable("tupakkaaltistus", | ||
data = data.frame(Tupakka = c("Kyllä", "Ei"), Result = c(1, 0)) | data = data.frame(Tupakka = c("Kyllä", "Ei"), Altiste = "Tupakka", Result = c(1, 0)) | ||
) | |||
# | # ALTISTUS YHTEENSÄ | ||
altistus <- Ovariable("altistus", | altistus <- Ovariable("altistus", | ||
Rivi 135: | Rivi 124: | ||
formula = function(...) { | formula = function(...) { | ||
out <- orbind | out <- orbind(tupakkaaltistus * 1, radonpit * 1) | ||
) | |||
out <- out[!colnames(out) %in% c("tupakkaaltistusSource", "radonpitSource")] | |||
out <- fillna(out, c("Tupakka", "Maakunta", "Talotyyppi")) # Tätä on muutettava, jos toiseen lisätään indeksejä. | |||
return(out) | return(out) | ||
} | } | ||
) | ) | ||
### SUHTEELLINEN RISKI | ### SUHTEELLINEN RISKI | ||
Rivi 165: | Rivi 137: | ||
# Annosvasteiden perustiedot. | # Annosvasteiden perustiedot. | ||
ERF <- | ERF <- Ovariable("ERF", data = data.frame( | ||
Altiste = c("Radon", "Tupakka"), | |||
Primaaripaikka = "Keuhkot, henkitorvi", # ICD.10.koodi == "C33-34" | |||
Result = c(1.0016, 20) | |||
)) | |||
tausta.altistus <- 0 # Radonille voisi olla 5. | tausta.altistus <- 0 # Radonille voisi olla 5. | ||
RR <- | RR <- Ovariable("RR", | ||
dependencies = data.frame(Name = c("ERF", "altistus", "tausta.altistus")), | |||
formula = function(...) { | |||
out <- exp(log(ERF) * (altistus - tausta.altistus)) # Relative risk given the exposures | |||
return(out) | |||
} | |||
) | |||
### SYÖPÄKUOLLEISUUS | ### SYÖPÄKUOLLEISUUS | ||
Rivi 182: | Rivi 159: | ||
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 | |||
### ARVIO PERUSTUEN POPULATION ATTRIBUTABLE FRACTIONIIN | |||
# Tässä oletetaan, että riskisuhteiden avulla voidaan suoraan laskea eri teijöiden osuus tautikuormasta. | |||
# Luku on yliarvio, koska jokainen altiste lasketaan ikään kuin muita altisteita ei olisi tautia aiheuttamassa. | |||
# Etuna on, että jokaiselle altisteelle saadaan arvio erikseen. | |||
väestöosuus <- 1 | |||
vaikutuspaf <- Ovariable("vaikutuspaf", | |||
dependencies = data.frame(Name = c("väestöosuus", "RR", "väestö", "syopakuolleisuus")), | |||
formula = function(...) { | |||
PAF <- väestöosuus * (RR - 1) / (väestöosuus * (RR - 1) + 1) | |||
out <- väestö * syopakuolleisuus * PAF | |||
return(out) | |||
} | |||
) | |||
### | ### ARVIO PERUSTUEN TAUSTARISKIIN | ||
# Tässä oletetaan, että on olemassa populaatiokohtainen taustariski, jota ei altistumisen takia havaita. | |||
# Se voidaan kuitenkin laskea ottamalla havaittu tautikuorma ja poistamalla altistumisen vaikutus. | |||
# Arvio lienee tarkempi kuin PAF-menetelmällä, mutta altistekohtainen tieto menetetään. | |||
# Calculate subgroup-specific background risks by first calculating a temporary burden estimate. | # Calculate subgroup-specific background risks by first calculating a temporary burden estimate. | ||
Rivi 197: | Rivi 194: | ||
# by the subgroup-specific relative risk. In this way, the total burden of all subgroups equals to what is actually seen. | # by the subgroup-specific relative risk. In this way, the total burden of all subgroups equals to what is actually seen. | ||
temp1 <- | vaikutusrr <- Ovariable("RRkok", | ||
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 | ||
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", | |||
# "tupakointiSource", "väestöSource", "ERFSource") | |||
vaikutuspaf <- EvalOutput(vaikutuspaf, N = N) | |||
vaikutusrr <- EvalOutput(vaikutusrr, N = N) | |||
if(verbose) { | |||
cat("Väestö\n") | |||
oprint(head(väestö@output)) | |||
cat("Kunnat\n") | |||
oprint(head(kunnat@output)) | |||
cat("Talot\n") | |||
oprint(head(talot@output)) | |||
cat("Aluevastaavuus\n") | |||
oprint(head(aluevastaavuus@output)) | |||
cat("Tupakointi\n") | |||
oprint(head(tupakointi@output)) | |||
cat("Altistus\n") | |||
oprint(head(altistus@output)) | |||
cat("ERF\n") | |||
oprint(head(ERF@output), digits = 4) | |||
cat("RR\n") | |||
oprint(head(RR@output)) | |||
cat("Syöpäkuolleisuus\n") | |||
oprint(head(syopakuolleisuus@output), digits = 6) | |||
cat("Kokonaisvaikutus PAF-menetelmällä\n") | cat("Kokonaisvaikutus PAF-menetelmällä\n") | ||
oprint(head( | oprint(head(vaikutuspaf@output)) | ||
cat(" | cat("Kokonaisvaikutus RR-menetelmällä\n") | ||
oprint(head(vaikutusrr@output)) | oprint(head(vaikutusrr@output)) | ||
} | } | ||
Versio 19. marraskuuta 2013 kello 21.47
Moderaattori:Jouni (katso kaikki)
Sivun edistymistä ei ole arvioitu. Arvostuksen määrää ei ole arvioitu (ks. peer review). |
Lisää dataa
|
Kysymys
Mitkä ovat radonin terveysvaikutukset Suomessa?
Vastaus
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
- Päivittäin tupakoivien osuus Suomessa: Tupakoivat [1]
- Tupakan annosvaste: UK: päivittäin tupakoivia 22 % Miehet, 20 % Naiset. Tämä aiheuttaa 88 % ja 84 % keuhkosyövistä vastaavasti. [2] Tämän perusteella voidaan laskea riskisuhde RR = AF / (EF(RR-1)+1), missä AF on attributable fraction eli altisteen aiheuttama osuus koko tautikuormasta ja EF on altistuneiden osuus koko väestöstä. Tämän perusteella päivittäisen tupakoinnin riskisuhteeksi keuhkosyövälle saadaan 20 - 30. (Laskennassa käytetään 20:tä.)
- Syöpäkuolleisuus Suomessa
- en:Attributable risk#Combined_PAR
- op_en:Population attributable fraction
- op_en:OpasnetUtils/Drafts
Data
Obs | Maakunta | Sairaanhoitopiiri |
---|---|---|
1 | Ahvenanmaa | Åland |
2 | Etelä-Karjala | Etelä-Karjala |
3 | Etelä-Pohjanmaa | Etelä-Pohjanmaa |
4 | Etelä-Savo | Etelä-Savo |
5 | Uusimaa | Helsinki ja Uusimaa |
6 | Itä-Uusimaa | Helsinki ja Uusimaa |
7 | Itä-Savo | |
8 | Kainuu | Kainuu |
9 | Kanta-Häme | Kanta-Häme |
10 | Keski-Pohjanmaa | Keski-Pohjanmaa |
11 | Keski-Suomi | Keski-Suomi |
12 | Kymenlaakso | Kymenlaakso |
13 | Länsi-Pohja | |
14 | Lappi | Lappi |
15 | Päijät-Häme | Päijät-Häme |
16 | Pirkanmaa | Pirkanmaa |
17 | Pohjanmaa | Vaasa |
18 | Pohjois-Karjala | Pohjois-Karjala |
19 | Pohjois-Pohjanmaa | Pohjois-Pohjanmaa |
20 | Pohjois-Savo | Pohjois-Savo |
21 | Satakunta | Satakunta |
22 | Varsinais-Suomi | Varsinais-Suomi |
23 | Yhteensä | Koko maa |
Katso myös
- heande:Radon sisäilma altistus Suomi
- op_en:Radon
- Suomen kunnat
- Radon sisäilmassa
- Talotyypit Suomessa
Viitteet
Aiheeseen liittyviä tiedostoja
<mfanonymousfilelist></mfanonymousfilelist>