Ero sivun ”Radonin terveysvaikutukset” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
Rivi 27: Rivi 27:


<rcode graphics=1 embed=1 variables="
<rcode graphics=1 embed=1 variables="
name:n|default:10|
name:N|default:100|
name:talo|type:selection|options:'Kerrostalo';Kerrostalo;'Pientalo';Pientalo|default:'Pientalo'|
name:talo|type:selection|options:'Kerrostalo';Kerrostalo;'Pientalo';Pientalo|default:'Pientalo'|
name:tupakka|type:selection|options:'Kyllä';Kyllä;'Ei';Ei|
name:tupakka|type:selection|options:'Kyllä';Kyllä;'Ei';Ei|
Rivi 44: Rivi 44:


collapsemarg <- function(object, marginals, fun = sum) {
collapsemarg <- function(object, marginals, fun = sum) {
object@output <- dropall(object@output)
object@output <- dropall(object@output)
temp <- as.data.frame(as.table(tapply(result(object), object@output[marginals], fun)))
temp <- as.data.frame(as.table(tapply(result(object), object@output[marginals], fun)))
colnames(temp)[colnames(temp) == "Freq"] <- "Result"
colnames(temp)[colnames(temp) == "Freq"] <- "Result"
out <- EvalOutput(Ovariable(object@name, data = temp))
out <- EvalOutput(Ovariable(object@name, data = temp))
return(out)
return(out)
}
}


objects.latest('Op_en6007', code_name = 'answer') # [[OpasnetUtils/Drafts]] fetches fillna function.
objects.latest('Op_en6007', code_name = 'answer') # [[OpasnetUtils/Drafts]] fetches fillna function.
N <- 2


###### VÄESTÖ
###### VÄESTÖ
Rivi 63: Rivi 66:
# Summaa taloista pois perhekoko ja muodosta uusi ovariable asukkaat.
# Summaa taloista pois perhekoko ja muodosta uusi ovariable asukkaat.


talot@output <- talot@output[talot@output$Kunta == "Akaa" , ] ########### POISTA TÄMÄ
#talot@output <- talot@output[talot@output$Kunta == "Akaa" , ] ########### POISTA TÄMÄ


levels(talot@output$Talotyyppi) <- ifelse(
levels(talot@output$Talotyyppi) <- ifelse(
Rivi 73: Rivi 76:


talot <- collapsemarg(talot, c("Kunta", "Talotyyppi"), sum)
talot <- collapsemarg(talot, c("Kunta", "Talotyyppi"), sum)
#colnames(dat)[colnames(dat) == "Freq"] <- "Result"
#asukkaat <- EvalOutput(Ovariable("asukkaat", data = dat), N = N)


kunnat <- EvalOutput(kunnat, N = N)
kunnat <- EvalOutput(kunnat, N = N)
Rivi 97: Rivi 98:


väestö <- kunnat * talot * aluevastaavuus * tupakointi
väestö <- kunnat * talot * aluevastaavuus * tupakointi
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))


###### altistus
###### altistus
Rivi 121: Rivi 134:
#colnames(temp)[colnames(temp) == "altistusResult"] <- "Result"
#colnames(temp)[colnames(temp) == "altistusResult"] <- "Result"
#temp <- EvalOutput(Ovariable("temp", data = temp))
#temp <- EvalOutput(Ovariable("temp", data = temp))
cat("Altistus\n")
oprint(head(altistus@output))


######## Syöpäkuolleisuus
######## Syöpäkuolleisuus
Rivi 129: Rivi 145:


syopakuolleisuus <- EvalOutput(syopakuolleisuus, N = N)
syopakuolleisuus <- EvalOutput(syopakuolleisuus, N = N)
cat("Syöpäkuolleisuus\n")
oprint(head(syopakuolleisuus@output))


####### Relative risk
####### Relative risk
Rivi 137: Rivi 156:


RR <- exp(log(ERF) * (altistus - tausta.altistus)) # Relative risk given the exposures
RR <- exp(log(ERF) * (altistus - tausta.altistus)) # Relative risk given the exposures
cat("ERF\n")
oprint(head(ERF@output))
cat("RR\n")
oprint(head(RR@output))


####### taustariski
####### taustariski


# Calculate subgroup-specific background risks by first calculating a temporary burden estimate.
# Calculate subgroup-specific background risks by first calculating a temporary burden estimate.
# temp is a population-weighted sum of relative risks. The actual disease risk is divided by this value and then multiplied
# 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.
# by the subgroup-specific relative risk. In this way, the total burden of all subgroups equals to what is actually seen.


kokonaisvaikutus <- syopakuolleisuus * väestö
temp <- collapsemarg(RR, c("Maakunta", "Iter", "Tupakka", "Talotyyppi"), prod)
 
temp1 <- temp * väestö # Population-weighted sum of the relative risk.
temp1 <- collapsemarg(temp1, c("Sairaanhoitopiiri", "Sukupuoli", "Iter"), sum) # Aggregate to the same indices as kokonaisvaikutus.
 
temp2 <- (temp * 0 + 1) * väestö # Population-weighted sum of ones with the same dimensions.
temp2 <- collapsemarg(temp2, c("Sairaanhoitopiiri", "Sukupuoli", "Iter"), sum)
 
tausta <- syopakuolleisuus / (temp1 / temp2) # syopakuolleisuus without any exposure


temp <- collapsemarg(RR, c("Maakunta", "Iter", "Tupakka", "Talotyyppi"), prod)  
cat("Taustariski\n")
temp <- temp * väestö
oprint(head(tausta@output))
temp <- temp / collapsemarg(temp, c("Sairaanhoitopiiri", "Sukupuoli", "Iter"), sum)
tausta <- kokonaisvaikutus * temp


########### PAF
########### PAF


väestöosuus <- 1
väestöosuus <- 1
RR <- exp(log(ERF) * (altistus - tausta.altistus))


PAF <- väestöosuus * (RR - 1) / (väestöosuus * (RR - 1) + 1)
PAF <- väestöosuus * (RR - 1) / (väestöosuus * (RR - 1) + 1)
#PAF@output <- fillna(PAF@output, c("Tupakka", "Talotyyppi", "Maakunta"))


######### vaikutus
######### vaikutus
Rivi 166: Rivi 193:
vaikutus@output <- vaikutus@output[!is.na(vaikutus@output$Result) , ]
vaikutus@output <- vaikutus@output[!is.na(vaikutus@output$Result) , ]


vaikutusrr <- väestö * tausta * RR
kokonaisvaikutuspaf <- collapsemarg(vaikutus, c("Iter", "Tupakka", "Talotyyppi", "Altiste"), sum)
 
RRkok <- collapsemarg(RR, c("Iter", "Tupakka", "Maakunta", "Talotyyppi"), prod)
 
vaikutusrr <- väestö * tausta * RRkok
 
kokonaisvaikutusrr <- collapsemarg(vaikutusrr, c("Iter", "Tupakka", "Talotyyppi"), sum)
 
cat("PAF\n")
oprint(head(PAF@output))
cat("VaikutusPAF\n")
oprint(head(vaikutus@output))
cat("Kokonaisvaikutus PAF-menetelmällä\n")
oprint(head(kokonaisvaikutuspaf@output))
cat("RRkok\n")
oprint(head(RRkok@output))
cat("VaikutusRR\n")
oprint(head(vaikutusrr@output))
cat("Kokonaisvaikutus RR-menetelmällä\n")
oprint(head(kokonaisvaikutusrr@output))
 
geombar <- function(object, title = "", y = "", x = "") {
out <- ggplot(object@output, aes(weight = Result, x = Tupakka, fill = Talotyyppi)) + geom_bar(position = "dodge") +
theme_grey(base_size = 24) +
labs( # label names
title = title,
y = y,
x = x
)
return(out)
}
 
geombar(vaikutus, title = "Vaikutus PAF-menetelmällä")
geombar(vaikutusrr, title = "Vaikutus RR-menetelmällä")
 
ggplot(väestö@output, aes(x = Talotyyppi, weight = Result)) + geom_bar() + labs(title = "Väestö")


ggplot(asukkaat@output, aes(x = asukkaatResult)) + geom_density()
ggplot(altistus@output[altistus@output$Altiste == "Radon" , ], aes(x = altistusResult, fill = Talotyyppi)) + geom_density(alpha = 0.2)
ggplot(altistus@output, aes(x = altistusResult)) + geom_density()
ggplot(altistus@output, aes(x = altistusResult, fill = Altiste)) + geom_density()
ggplot(vaikutus@output, aes(weight = vaikutusResult, fill = Altiste)) + geom_bar()
ggplot(vaikutus@output, aes(weight = Result, x = Altiste)) + geom_bar()
ggplot(vaikutusrr@output, aes(weight = Result, x = Altiste)) + geom_bar()





Versio 17. marraskuuta 2013 kello 08.04





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?

Kaava

N:

talo:

tupakka:

vaste:

+ Näytä koodi

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

Katso myös

Viitteet


Aiheeseen liittyviä tiedostoja

<mfanonymousfilelist></mfanonymousfilelist>