Ero sivun ”Väestön kohdekohtainen ympäristöperäisen haitta-ainealtistumisen arviointi” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
(edistymisluokitus lisätty)
pEi muokkausyhteenvetoa
Rivi 3: Rivi 3:
{{metodi|moderator=Virpi Kollanus}}
{{metodi|moderator=Virpi Kollanus}}


==R-koodi==
<rcode graphics="1" label="Arvioinnin tulos"
variables="name:altiste|description:Mitä altistetta tarkastellaan?|type:selection|options:
'Arseeni';Arseeni;
'Elohopea';Elohopea;
'Kadmium';Kadmium;
'Koboltti';Koboltti;
'Kromi (3+)';Kromi (3+);
'Kupari';Kupari;
'Lyijy';Lyijy;
'Lyijy';Lyijy;
'Nikkeli';Nikkeli;
'Sinkki';Sinkki;
'Vanadiini';Vanadiini|
default:'Arseeni'
"
>


<rcode
library(OpasnetUtils)
graphics="1"
library(ggplot2)
include="page:Funktioita_R-toolsiin|name:generic"
variables="
name:Bw.adult|default:78|description:Kehon paino, aikuinen (kg)|
name:Bw.child|default:15|description:Kehon paino, lapsi (kg)|
name:C.dw|default:0.5|description:Haitta-aineen pitoisuus juomavedessä (mg/l)|
name:Ir.dw.adult|default:0.8|description:Päivittäinen juomaveden kulutus, aikuinen (l)|
name:Ir.dw.child|default:0.25|description:Päivittäinen juomaveden kulutus, lapsi (l)|
name:Ef.dw|default:365|description:Päivien määrä vuodessa, jolloin juodaan haitta-ainetta sisältävää vettä|
name:C.soil|default:1000|description:Haitta-aineen pitoisuus maaperässä (mg/kg)|
name:Ir.soil.adult|default:25|description:Päivittäin ruuansulatuskanavaan kulkeutuvan maa-aineksen määrä, aikuinen (mg)|
name:Ir.soil.child|default:100|description:Päivittäin ruuansulatuskanavaan kulkeutuvan maa-aineksen määrä, lapsi (mg)|
name:Ef.soil|default:265|description:Päivien määrä vuodessa, jolloin haitta-ainetta sisältävälle maaperälle altistutaan|
name:C.food.plant|default:5|description:Haitta-aineen pitoisuus ravintokasvissa (mg/kg)|
name:Ir.food.plant.adult|default:0.1|description:Päivittäinen ravintokasvin kulutus, aikuinen (kg)|
name:Ir.food.plant.child|default:0.05|description:Päivittäinen ravintokasvin kulutus, lapsi (kg)|
name:Ef.food.plant|default:100|description:Päivien määrä vuodessa, jolloin syödään haitta-ainetta sisältävää ravintokasvia|
name:TDI|default:100|description:Turvallisen päivittäisen saannin viitearvo (µg/kg/d)
">


library(OpasnetBaseUtils)
N <- 1
library(xtable)


Bw <- c(Aikuinen=Bw.adult, Lapsi=Bw.child)
pitoisuusviitearvo <- rbind(
tidy(opbase.data("Op_fi3373.maapera"), objname = "pitoisuusviitearvo"),
tidy(opbase.data("Op_fi3373.talousvesi"), objname = "pitoisuusviitearvo")
)
pitoisuusviitearvo <- EvalOutput(Ovariable(name = "pitoisuusviitearvo", data = pitoisuusviitearvo))


# Haitta-aineen päivittäinen saanti juomaveden kautta (mg/kd/d):
altistusviitearvo <- tidy(opbase.data("Op_fi3373.haitta-aine"), objname = "altistusviitearvo")
altistusviitearvo <- EvalOutput(Ovariable(name = "altistusviitearvo", data = altistusviitearvo))


Ir.dw <- c(Aikuinen=Ir.dw.adult, Lapsi=Ir.dw.child)
tf <- function(
Intake.dw <- (C.dw*Ir.dw*Ef.dw)/(Bw*365)
condition,
data = tidy(opbase.data("Op_fi2814"), direction = "long"),
col.condition = "Lyhenne",
col.common = "Ikä",  
resultcol = "Result", ...
) {
########################## tf is a function that takes one large table, finds matching rows and
#### produces a standard-format vector that can be operated with easily. Parameters:
# condition  = a vector with conditions for each condition column. The length must be ncol(col.condition).
############ External parameters (these must be defined as objects before the function is run;
##### they are not given in the function but they are used by it):
# data          = a data frame that contains the data
# col.condition = vector with names of columns that contain the indices that must match in the data
# col.common    = vector with names of columns that are used as indices in calculations.
# resultcol    = the column that contains the actual values.


# Haitta-aineen päivittäinen saanti maaperän kautta (mg/kg/d)
# Take the part of data that fits the condition. Drop all columns but col.common and resultcol.


out <- Ovariable(
# ovariable cannot have a name because several ovariables are created and merged.
data = data[data[col.condition] == condition, c(col.common, resultcol)]
)


Ir.soil <- c(Aikuinen=Ir.soil.adult, Lapsi=Ir.soil.child)
out <- EvalOutput(out, N = N)
Intake.soil <- (C.soil*Ir.soil/1000000*Ef.soil)/(Bw*365)
out@output <- out@output[ , colnames(out@output) != "Source"]


# Haitta-aineen päivittäinen saanti ravintokasvin kautta (mg/kg/d)
return(out)
}


Ir.food.plant <- c(Aikuinen=Ir.food.plant.adult, Lapsi = Ir.food.plant.child)
#Chronic.environmental.exposure <- function(pitoisuus, ...) {
Intake.food.plant <- (C.food.plant*Ir.food.plant*Ef.food.plant)/(Bw*365)


####################Funktio väestön ympäristöperäisen haitta-ainealtistumisen määrittelyyn
######## Saanti lasketaan yksikössä µg/kg/vrk kun ympäristön haitta-ainepitoisuudet on ilmoitettu yksiköissä µg/m3 (ilma),
######## mg/l (vesi) sekä mg/kg (kiinteät väliaineet)
######## Haitta-aineen taustasaanti tulee ilmoittaa muodossa µg/kg/vrk
######## Parametri: pitoisuus on data.frame, jossa täytyy olla sarake Result, joka sisältää pitoisuuden ja Altiste, joka sisältää altistavan yhdisteen nimen.


cat("Keskimääräinen päivittäinen altistuminen haitta-aineelle (µg/kg)\n")
########## Pharmacokinetic parameters


Intake <-data.frame(Juomavesi=Intake.dw, Maaperä=Intake.soil, Ravinto=Intake.food.plant, Kokonaissaanti=(Intake.dw+Intake.soil+Intake.food.plant))
temp <- tidy(opbase.data("Op_fi3378.vesi"), objname = "Kp")
print(xtable(Intake*1000), type = 'html')
temp <- temp[ , c("Altiste", "KpResult")]
Kp <- EvalOutput(Ovariable(name = "Kp", data = temp), N = N)  


cat("Eri altistumisreittien osuus kokonaissaannista (%)\n")
temp <- tidy(opbase.data("Op_fi3378.maapera"), objname = "Abs.skin.soil")
temp <- temp[ , !colnames(temp) %in% c("Obs", "Abs.skin.soilYksikkö", "Abs.skin.soilKuvaus")]
Abs.skin.soil <- EvalOutput(Ovariable(name = "Abs.skin.soil", data = temp), N = N)
Skin.sa <- (4 * tf("Bw") + 7) / (tf("Bw") + 90) * 10000 #Lasketaan ihon kokonaispinta-ala


Intake.fraction <- Intake/Intake$Kokonaissaanti
F1 <- function(pitoisuus, rate, fraction) { # Ulkoilma-altistuminen
print(xtable(Intake.fraction*100), type = 'html')
out <- pitoisuus * (24 - tf(fraction) / 24) * tf(rate) / (tf("Bw") * tf("At"))


return(out)
}
F2 <- function(pitoisuus, rate, fraction) { # Sisäilma-altistuminen
out <- pitoisuus * tf(fraction) / 24 * tf(rate) / (tf("Bw") * tf("At"))


cat("Vaaraosamäärä\n")
return(out)
}


HQ.adult <- Intake[1,4]*1000/TDI
F3 <- function(pitoisuus, rate, fraction) { # Altistusfrekvenssiin perustuva
HQ.child <- Intake[2,4]*1000/TDI
out <- pitoisuus * tf(rate) * tf(fraction) / (tf("Bw") * tf("At"))


HQ <- data.frame(Aikuinen=HQ.adult, Lapsi=HQ.child)
return(out)
print(xtable(HQ), type = 'html')
}
F4 <- function(pitoisuus, rate, fraction) { # Altistumisen osuuteen perustuva
out <- pitoisuus * 1000 * tf(rate) * tf(fraction) / tf("Bw")


return(out)
}
F5 <- function(pitoisuus, rate, fraction) { # Ihoaltistuminen maaperästä
out <- pitoisuus * tf("Soil.ad.skin") * 0.001 * Skin.sa * tf(fraction) *
Abs.skin.soil / (tf("Bw") * tf("At")) * tf(rate)
out@output <- out@output[ , !colnames(out@output) %in% c("Abs.skin.soilResult", "Abs.skin.soilSource")]
return(out)
}
F6 <- function(pitoisuus, rate, fraction) { # Pesuvesi
out <- pitoisuus * Kp * tf(rate) * tf("Ed.bw") * Skin.sa * tf(fraction) /
(tf("Bw") * tf("At"))
out@output <- out@output[ , !colnames(out@output) %in% c("KpResult", "KpSource")]
return(out)
}
F7 <- function(pitoisuus, rate, fraction) { # Pintavesi
out <- pitoisuus * Kp * tf(rate) * tf("Ed.sw") * Skin.sa * tf(fraction) /
(tf("Bw") * tf("At"))
out@output <- out@output[ , !colnames(out@output) %in% c("KpResult", "KpSource")]
return(out)
}
# Get parameters for exposure functions and combine those with concentration data.
# [[Väestön kohdekohtainen ympäristöperäisen haitta-ainealtistumisen ja terveysriskin arviointi]]
temp <- opbase.data("Op_fi2814.funktioparametrit")
temp$Result <- 1
params <- new("ovariable", name = "params", output = temp[ , colnames(temp) != "Obs"])
pitoisuus <- tidy(opbase.data("Op_fi3372"), objname = "pitoisuus")
pitoisuus <- pitoisuus[ , colnames(pitoisuus) != "Obs"]
# Make pitoisuus an ovariable if it isn't yet (assuming that then it is a data.frame).
if(class(pitoisuus) != "ovariable") {
pitoisuus <- Ovariable(name = "pitoisuus", data = pitoisuus)
}
pitoisuus <- EvalOutput(pitoisuus, N = N)
cat("Altistumisen arvioinnin perusteena käytetyt ympäristön haitta-ainepitoisuudet .\n")
oprint(summary(pitoisuus))
cat("Muiden altistumisen arvioinnissa käytettyjen muuttujien arvot.\n")
temp <- opbase.data("Op_fi2814")
oprint(temp)
cat("Ympäristön laadun arvioinnissa käytetyt haitta-ainepitoisuuksien terveysperusteiset viitearvot.\n")
oprint(summary(pitoisuusviitearvo))
cat("Kroonisesta haitta-ainealtistumisesta aiheutuvan terveysriskin arvioinnissa käytetyt toksisuuden viitearvot.\n")
oprint(summary(altistusviitearvo))
pitoisuus <- pitoisuus * params
# Calculate exposures with respective functions.
## Create an ovariable that collects all results.
out <- Ovariable(name = "exposure")
equations <- unique(pitoisuus@output[c("Funktio", "Nopeus", "Osuus")])
for(i in 1:nrow(equations)) {
temp2 <- pitoisuus
temp2@output <- temp2@output[
temp2@output$Funktio == equations$Funktio[i] &
temp2@output$Nopeus == equations$Nopeus[i] &
temp2@output$Osuus == equations$Osuus[i]
, ]
temp2 <- get(as.character(equations$Funktio[i]))(
temp2,
as.character(equations$Nopeus[i]),
as.character(equations$Osuus[i])
)
out@output <- rbind(out@output, temp2@output)
}
# return(out)
#}
# Poistetaan turhat sarakkeet
out@output <- out@output[ , c("Ikä","Altiste", "Matriisi", "Altistumistaso", "Altistus", "Result")]
cat("Altistus kiinnostuksen kohteena olevalle altisteelle altistusreiteittäin (µg/kg/vrk).\n")
oprint(out@output[out@output$Altiste == altiste, ], digits=3)
# Lasketaan elinikäinen altistus
aikuisaltistus <- out
aikuisaltistus@output <- aikuisaltistus@output[aikuisaltistus@output$Ikä == "Aikuinen", ]
aikuisaltistus@output$Ikä <- "Elinikäinen"
lapsialtistus <- out
lapsialtistus@output <- lapsialtistus@output[lapsialtistus@output$Ikä == "Lapsi", ]
lapsialtistus@output$Ikä <- "Elinikäinen"
kokonaisaltistus <- out
kokonaisaltistus@output <- rbind(kokonaisaltistus@output, ((lapsialtistus * 6 + aikuisaltistus * 64) / 70)@output )
# Lasketaan kokonaisaltistus.
kokonaisaltistus@output <- as.data.frame(as.table(tapply(
kokonaisaltistus@output$Result,
kokonaisaltistus@output[c("Ikä", "Altiste", "Altistumistaso")],
sum
)))
colnames(kokonaisaltistus@output) <- gsub("Freq", "Result", colnames(kokonaisaltistus@output))
terveysvertailu <- kokonaisaltistus / altistusviitearvo
terveysvertailu@output <- terveysvertailu@output[ , c("Altiste", "Ikä", "Altistumistaso", "altistusviitearvoKuvaus", "Result")]
terveysvertailu@output <- reshape(
terveysvertailu@output,
timevar = "Ikä",
idvar = c("Altiste", "Altistumistaso"),
v.names = "Result",
direction = "wide"
)
colnames(terveysvertailu@output) <- gsub("Result.", "", colnames(terveysvertailu@output))
# Lasketaan kokonaisaltistuksen keskiarvo
kokonaisaltistus@output <- as.data.frame(as.table(tapply(
kokonaisaltistus@output$Result,
kokonaisaltistus@output[c("Ikä", "Altiste", "Altistumistaso")],
mean
)))
# Käännetään ikä-indeksi leveään muotoon.
kokonaisaltistus@output <- reshape(
kokonaisaltistus@output,
timevar = "Ikä",
idvar = c("Altiste", "Altistumistaso"),
direction = "wide"
)
colnames(kokonaisaltistus@output) <- gsub("Freq.", "", colnames(kokonaisaltistus@output))
cat("Altistumisen arvioinnin tulokset. \n Keskimääräinen päivittäinen haitta-aineen saanti (µg/kg/vrk).\n")
oprint(kokonaisaltistus@output, digits = 4)
#summary(kokonaisaltistus)
cat("Haitta-aineen pitoisuus ympäristössä suhteutettuna terveysperusteiseen viitearvoon.\n")
temp <- pitoisuus / pitoisuusviitearvo
temp@output <- temp@output[ , c("Matriisi", "Altiste", "Altistumistaso", "Altistus", "pitoisuusviitearvoKuvaus", "Result")]
oprint(temp@output)
#summary(pitoisuus/pitoisuusviitearvo)
cat("Kroonisesta ympäristöperäisestä haitta-ainealtistumisesta aiheutuvan terveysriskin karakterisointi. \n")
oprint(terveysvertailu@output)
ggplot(out@output[out@output$Altiste == altiste, ], aes(x = Matriisi, y = Result, colour = Ikä)) +
geom_point(size = 5) +
theme_grey(base_size = 24) +
labs(
title = altiste,
y = "Altistus (µg /kg /d)"
)
#Chronic.environmental.exposure(data.frame(Result = 1))


</rcode>
</rcode>

Versio 12. maaliskuuta 2013 kello 08.21

Edistymisluokitus
Opasnetissa lukuisat sivut ovat työn alla eri vaiheissa. Niiden tietosisältöön pitää siis suhtautua harkiten. Tämän sivun sisällön edistyminen on arvioitu:
Tämä sivu on täysluonnos
Sivu on kirjoitettu kertaalleen alusta loppuun eli kaikki olennaiset sisällöt ovat jo paikoillaan. Kuitenkaan sisältöjä ei ole vielä kunnolla tarkistettu, ja esimerkiksi tärkeitä viitteitä voi puuttua.




Mitä altistetta tarkastellaan?:

+ Näytä koodi