Difference between revisions of "Benefit-risk assessment of Baltic herring and salmon intake"
(→Health impact model (Monte Carlo)) |
(→Health impact model (Monte Carlo)) |
||
(45 intermediate revisions by 2 users not shown) | |||
Line 17: | Line 17: | ||
=== Boundaries === | === Boundaries === | ||
* Four baltic sea countries (Denmark, Estonia, Finland, Sweden) | * Four baltic sea countries (Denmark, Estonia, Finland, Sweden) | ||
− | * Current situation (fish use year 2016, pollutant levels in fish year 2010 | + | * Current situation (fish use year 2016, pollutant levels in fish year 2010) |
− | * Estimation for future (year | + | * Estimation for future (not year specific) |
=== Decisions and scenarios === | === Decisions and scenarios === | ||
Line 56: | Line 56: | ||
[[image:Goherr_WP5_HIA_structure.JPG|thumb|Schematic picture of the health benefit-risk model for Baltic herring and salmon intake.]] | [[image:Goherr_WP5_HIA_structure.JPG|thumb|Schematic picture of the health benefit-risk model for Baltic herring and salmon intake.]] | ||
+ | [[File:BRA of Baltic herring and salmon.png|400px|thumb|Detailed modelling diagram of the health benefit-risk model. Green nodes are original data, red nodes are based on scientific literature, and blue nodes are computational nodes. Those with a number are generic nodes designed to be used in several assessments. the number refers to the page identifier in Op_en wiki (this Opasnet wiki).]] | ||
=== Stakeholders === | === Stakeholders === | ||
Line 75: | Line 76: | ||
* totcases (Op_en2261/totcases on page [[Health impact assessment]]) with dose and RR, automatic intermediate variables. Indices: Age, Gender, Country, Response. | * totcases (Op_en2261/totcases on page [[Health impact assessment]]) with dose and RR, automatic intermediate variables. Indices: Age, Gender, Country, Response. | ||
** population, case-specific, from main model. Suggested indices: Age, Gender, Country. | ** population, case-specific, from main model. Suggested indices: Age, Gender, Country. | ||
− | ** disincidence,Incidence of the disease of interest. Op_en5917/initiate [[Disease risk]]. Suggested indices: Age, Gender, Country, | + | ** disincidence,Incidence of the disease of interest. Op_en5917/initiate [[Disease risk]]. Suggested indices: Age, Gender, Country, Response. {{comment|# |Should we use IHME data instead?|--[[User:Jouni|Jouni]] ([[User talk:Jouni|talk]]) 16:03, 13 April 2017 (UTC)}} {{defend|# |Done|--[[User:Arja|Arja]] ([[User talk:Arja|talk]]) 12:07, 19 May 2017 (UTC)}} |
*** [[Burden_of_disease_in_Finland |Burden of disease as DALY in Finland]] {{attack|# |Inactivate and merge?|--[[User:Jouni|Jouni]] ([[User talk:Jouni|talk]]) 16:03, 13 April 2017 (UTC)}} | *** [[Burden_of_disease_in_Finland |Burden of disease as DALY in Finland]] {{attack|# |Inactivate and merge?|--[[User:Jouni|Jouni]] ([[User talk:Jouni|talk]]) 16:03, 13 April 2017 (UTC)}} | ||
** ERF and threshold, exposure-response functions. Op_en2031/initiate [[Exposure-response function]]. Existing indices: Exposure_agent, Response, Exposure, Exposure_unit, ER_function, Scaling. {{defend|# |Done.|--[[User:Jouni|Jouni]] ([[User talk:Jouni|talk]]) 14:22, 19 April 2017 (UTC)}} | ** ERF and threshold, exposure-response functions. Op_en2031/initiate [[Exposure-response function]]. Existing indices: Exposure_agent, Response, Exposure, Exposure_unit, ER_function, Scaling. {{defend|# |Done.|--[[User:Jouni|Jouni]] ([[User talk:Jouni|talk]]) 14:22, 19 April 2017 (UTC)}} | ||
Line 113: | Line 114: | ||
No||||0|| | No||||0|| | ||
</t2b> | </t2b> | ||
+ | |||
+ | <t2b name="Exposure-response functions of interest" index="Exposure_agent,Resp,Response,ER_function,Scaling" obs="Dummy" unit="-"> | ||
+ | TEQ|Tooth defect|Yes or no dental defect|ERS|None|1 | ||
+ | TEQ|Cancer|Cancer morbidity|CSF|BW|1 | ||
+ | TEQ|Dioxin TDI|Dioxin recommendation tolerable daily intake|TDI|BW|1 | ||
+ | DHA|Child's IQ|Loss in child's IQ points|ERS|None|1 | ||
+ | Omega3|Heart (CHD)|CHD2 mortality|Relative Hill|None|1 | ||
+ | Omega3|Stroke|Stroke mortality|Relative Hill|None|1 | ||
+ | Vitamin D|Vitamin D intake|Vitamin D recommendation|Step|None|1 | ||
+ | MeHg|Child's IQ|Loss in child's IQ points|ERS|BW|1 | ||
+ | </t2b> | ||
+ | |||
+ | <t2b name="DALYs of responses" index="Resp" obs="DALY" desc="Description" unit="DALY /case"> | ||
+ | Heart (CHD)|5 - 15|Assumes DW 1 and D 10 U 50% | ||
+ | Stroke|5 - 15|Assumes DW 1 and D 10 U 50 % | ||
+ | Tooth defect|0 - 0.12|DW 0.001 D 60 U 100 %. Or should we use this: Developmental defect: caries or missing tooth, 0.008 (0.003 - 0.017), Periodontitis weight from IHME. D: 1. U from IHME? | ||
+ | Cancer|0 - 0.28|DW 0.1 D 20, in addition loss of life expectancy 5 a. This comes from a lifetime exposure, so it is (linearly( assumed that 1/50 of this is caused by one-year exposure. U 100 % | ||
+ | Vitamin D intake|0.0001 - 0.0101|DW 0.001 D 1 U 101x. 1 if not met | ||
+ | Dioxin TDI|0.0001 - 0.0101|DW 0.001 D 1 U 101x. 1 if not met | ||
+ | Child's IQ|-0.0517 (-0.03 - -0.0817)|Intellectual disability, mild (IQ<70): 0.031 (0.018-0.049) From IHME. D 50 U from IHME. | ||
+ | </t2b> | ||
+ | |||
+ | : DW = disability weight | ||
+ | : D = duration (a) | ||
+ | : U = uncertainty | ||
=== Analyses === | === Analyses === | ||
Line 122: | Line 148: | ||
* Age: 18-45 years or >45 years | * Age: 18-45 years or >45 years | ||
* Fish species (Baltic herring, Baltic salmon) | * Fish species (Baltic herring, Baltic salmon) | ||
− | * Health end-point | + | * Health end-point, specified by name |
* Compound: TEQ (PCDD/F and PCB), Vitamin D, Omega3 (includes EPA and DHA), MeHg | * Compound: TEQ (PCDD/F and PCB), Vitamin D, Omega3 (includes EPA and DHA), MeHg | ||
Line 137: | Line 163: | ||
* Model run 14.3.2017 with exposure graph [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=Rpt6e8XtmK8F4m2i] | * Model run 14.3.2017 with exposure graph [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=Rpt6e8XtmK8F4m2i] | ||
* Model run 14.3.2017 bugs not fixed [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=jCTKrJR6HQ4qXjF5] | * Model run 14.3.2017 bugs not fixed [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=jCTKrJR6HQ4qXjF5] | ||
+ | * Model run 30.5.2017 [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=0jq0LB5tfp7mvvCt] | ||
+ | * Model run 12.6.2017 with 2D Monte Carlo [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=ZwSWfkneUHIUG7Xt] | ||
+ | * Model run 8.9.2017 with known bugs fixed [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=qkyKcACq5MYvJmN4] | ||
− | <rcode name="hia" | + | <rcode name="hia" label="Store intermediate variables (for developers only)"> |
# This is code Op_en7748/hia on page [[Benefit-risk assessment of Baltic herring and salmon intake]] | # This is code Op_en7748/hia on page [[Benefit-risk assessment of Baltic herring and salmon intake]] | ||
− | + | Sys.time() | |
library(OpasnetUtils) | library(OpasnetUtils) | ||
library(ggplot2) | library(ggplot2) | ||
Line 147: | Line 176: | ||
objects.latest("Op_en7749", code_name = "surveyjsp") # Uses jsp directly from survey data. | objects.latest("Op_en7749", code_name = "surveyjsp") # Uses jsp directly from survey data. | ||
− | openv.setN(max(as.numeric(as.character(jsp | + | openv.setN(max(as.numeric(as.character(jsp$Iter)))) # Adjust N to data size |
+ | |||
+ | # For development and testing, use smaller ovariables | ||
+ | openv.setN(200) | ||
+ | jsp <- jsp[as.numeric(as.character(jsp$Iter)) <= 200 , ] | ||
conc <- Ovariable( | conc <- Ovariable( | ||
Line 153: | Line 186: | ||
dependencies = data.frame( | dependencies = data.frame( | ||
Name = c( | Name = c( | ||
− | " | + | "conc_pcddf", # [[EU-kalat]] |
− | " | + | "conc_vit" # [[Concentrations of beneficial nutrients in fish]] |
), | ), | ||
Ident = c("Op_en3104/initiate", "Op_en1838/initiate") | Ident = c("Op_en3104/initiate", "Op_en1838/initiate") | ||
), | ), | ||
formula = function(...) { | formula = function(...) { | ||
− | colnames( | + | colnames(conc_pcddf@output)[colnames(conc_pcddf@output)=="Compound"] <- "Exposure_agent" |
− | out <- combine( | + | conc_pcddf$Fish <- as.factor(conc_pcddf$Fish) # This is character vector for some reason. |
+ | levels(conc_vit$Exposure_agent)[levels(conc_vit$Exposure_agent) == "D_vitamin"] <- "Vitamin D" | ||
+ | conc_vit <- conc_vit / 100 # From /100g to /g | ||
+ | result(conc_vit)[conc_vit$Exposure_agent == "Vitamin D"] <- result(conc_vit)[conc_vit$Exposure_agent == "Vitamin D"] * 1000 # from mg to ug | ||
+ | out <- combine(conc_pcddf, conc_vit) | ||
+ | levels(out$Fish)[levels(out$Fish)=="Baltic herring"] <- "Herring" | ||
+ | result(out) <- pmax(0,result(out)) | ||
return(out) | return(out) | ||
} | } | ||
) | ) | ||
+ | conc@meta = c(conc@meta, list(units = "Vitamin D: ug/g; DHA, EPA, and omega3: mg/g; PCDD/F, PCB: pg/g f.w.")) | ||
#objects.latest("Op_en4004", code_name = "initiate") # [[Mercury concentrations in fish in Finland]] | #objects.latest("Op_en4004", code_name = "initiate") # [[Mercury concentrations in fish in Finland]] | ||
# ^ This code does not exist yet. Use EU-kalat as example. | # ^ This code does not exist yet. Use EU-kalat as example. | ||
+ | |||
+ | # sumitem is needed by both expoRaw and bgexposure | ||
+ | sumitem <- function( | ||
+ | ova, # ovariable that has locations to sum | ||
+ | cond, # index column that contains the locations to sum | ||
+ | condvalue, # vector of locations to sum | ||
+ | sumvalue # location to be given to the rows with the sums | ||
+ | ) { | ||
+ | d <- ova | ||
+ | d@output <- d@output[d@output[[cond]] %in% condvalue , ] | ||
+ | d <- oapply(d, cols = cond, FUN = sum) | ||
+ | d@output[[cond]] <- sumvalue | ||
+ | ova@output <- orbind(ova, d) | ||
+ | return(ova) | ||
+ | } | ||
# Exposure with fish-related exposure and additional exposure from other sources. | # Exposure with fish-related exposure and additional exposure from other sources. | ||
Line 174: | Line 229: | ||
"expoRaw", | "expoRaw", | ||
dependencies = data.frame( | dependencies = data.frame( | ||
− | Name = c("conc", "amount", " | + | Name = c("conc", "amount", "bgexposure", "info"), |
− | Ident = c(NA, "Op_en7749/initiate", NA) | + | Ident = c(NA, "Op_en7749/initiate", NA, NA) |
), | ), | ||
formula = function(...) { | formula = function(...) { | ||
+ | amount <- unkeep( | ||
+ | amount, | ||
+ | sources=TRUE, | ||
+ | prevresults=TRUE, | ||
+ | cols=c( | ||
+ | "Eat.fish", | ||
+ | "How.often.fish", | ||
+ | "Eat.salmon", | ||
+ | "assumpUnit" | ||
+ | ) | ||
+ | ) | ||
− | + | # Make a summary for TEQ (Omega3 exists already) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
conc <- sumitem(conc, "Exposure_agent", c("PCDDF", "PCB"), "TEQ") | conc <- sumitem(conc, "Exposure_agent", c("PCDDF", "PCB"), "TEQ") | ||
levels(conc$Fish)[levels(conc$Fish) == "Baltic herring"] <- "Herring" | levels(conc$Fish)[levels(conc$Fish) == "Baltic herring"] <- "Herring" | ||
− | + | expoRaw <- amount * conc + bgexposure | |
+ | expoRaw <- oapply(expoRaw, cols = "Fish", FUN = sum) * info | ||
+ | return(expoRaw) | ||
+ | } | ||
+ | ) | ||
+ | |||
+ | ## Background-exposure to vitamin D and omega-3 | ||
+ | addexposure <- Ovariable( | ||
+ | "addexposure", | ||
+ | ddata = "Op_en7748", # [[Benefit-risk assessment of Baltic herring and salmon intake]] | ||
+ | subset = "Background exposure" | ||
+ | ) | ||
+ | |||
+ | # Should the background be specific for gender and country? At the moment it is. | ||
+ | bgexposure <- Ovariable( | ||
+ | "bgexposure", | ||
+ | dependencies = data.frame(Name="addexposure"), | ||
+ | formula = function(...) { | ||
+ | out <- addexposure | ||
# Empty values ("") in indices must be replaced by NA so that Ops works correctly. | # Empty values ("") in indices must be replaced by NA so that Ops works correctly. | ||
− | levels( | + | levels(out$Gender)[levels(out$Gender) == ""] <- NA |
− | levels( | + | levels(out$Country)[levels(out$Country) == ""] <- NA |
− | + | levels(out$Exposure_agent)[levels(out$Exposure_agent) == ""] <- NA | |
+ | out@output <- fillna(out@output, c("Country", "Gender", "Exposure_agent")) | ||
− | + | out <- sumitem(out, "Exposure_agent", c("PCDDF","PCB"), "TEQ") | |
− | + | out <- sumitem(out, "Exposure_agent", c("EPA", "DHA"), "Omega3") | |
− | + | out <- unkeep(out, prevresults = TRUE, sources = TRUE) + 1E-6 | |
# Make the background exposure uncertain rather than an index. | # Make the background exposure uncertain rather than an index. | ||
− | + | out <- CollapseMarginal(out, cols = "Background", fun = "sample") | |
− | + | return(out) | |
− | |||
− | return( | ||
} | } | ||
) | ) | ||
− | + | info <- Ovariable( | |
− | + | "info", | |
− | " | + | dependencies = data.frame(Name = c("jsp","bgexposure")), |
− | + | formula = function(...) { | |
− | + | out <- unique(jsp@output[c("Iter","Country","Gender","Ages")]) | |
+ | out <- merge(out, unique(bgexposure@output[c("Iter","Background")])) | ||
+ | out$Result <- 1 | ||
+ | return(out) | ||
+ | } | ||
) | ) | ||
+ | |||
+ | info <- EvalOutput(info) | ||
exposure <- Ovariable( | exposure <- Ovariable( | ||
Line 227: | Line 303: | ||
Name = c( | Name = c( | ||
"expoRaw", | "expoRaw", | ||
− | "dx.expo.child" | + | "dx.expo.child", |
+ | "info" | ||
), | ), | ||
Ident = c( | Ident = c( | ||
NA, | NA, | ||
− | "Op_en7797/initiate" # [[Infant's dioxin exposure]] | + | "Op_en7797/initiate", # [[Infant's dioxin exposure]] |
+ | NA | ||
) | ) | ||
), | ), | ||
formula = function(...) { | formula = function(...) { | ||
− | expoRaw$Exposure <- | + | expoRaw$Exposure <- NA |
− | dx.expo.child$Exposure <- " | + | dx.expo.child$Exposure <- "To child" |
− | + | out <- combine(expoRaw, dx.expo.child) | |
+ | out <- unkeep(out, sources=TRUE, prevresults=TRUE) | ||
+ | return(out * info + 1E-6) | ||
} | } | ||
) | ) | ||
− | + | ||
# Limit the infant health responses to 10 % of females at age 18-45 a | # Limit the infant health responses to 10 % of females at age 18-45 a | ||
# (assuming 10 % probability to give birth during a year) | # (assuming 10 % probability to give birth during a year) | ||
Line 246: | Line 326: | ||
frexposed <- Ovariable( | frexposed <- Ovariable( | ||
"frexposed", | "frexposed", | ||
− | dependencies = data.frame(Name = "exposure"), | + | dependencies = data.frame(Name = c("jsp","exposure")), |
formula = function(...) { | formula = function(...) { | ||
− | out <- unique( | + | out <- merge( |
+ | unique(jsp@output[c("Gender", "Ages", "Country", "Iter")]), | ||
+ | unique(exposure@output["Exposure"]) | ||
+ | ) | ||
out$Result <- ifelse( | out$Result <- ifelse( | ||
− | out$Exposure == " | + | out$Exposure == "To child", |
ifelse( | ifelse( | ||
− | + | out$Gender == "Female" & out$Ages == "18-45", | |
0.1, # Probability of birth during a year. | 0.1, # Probability of birth during a year. | ||
0 | 0 | ||
Line 258: | Line 341: | ||
1 | 1 | ||
) | ) | ||
− | return(out) | + | out$Result[is.na(out$Result)] <- 1 |
+ | return(Ovariable(output=out, marginal = !colnames(out) %in% "Result")) # Marginal setting does not work | ||
} | } | ||
+ | ) | ||
+ | Sys.time() | ||
+ | frexposed <- EvalOutput(frexposed) | ||
+ | |||
+ | ERFchoice <- Ovariable( | ||
+ | "ERFchoice", | ||
+ | ddata = "Op_en7748", # [[Benefit-risk assessment of Baltic herring and salmon intake]] | ||
+ | subset = "Exposure-response functions of interest" | ||
) | ) | ||
− | # | + | objects.latest("Op_en2031", code_name = "initiate") # Default ERF but needs adjustment. |
− | + | ERF <- EvalOutput(ERF) | |
+ | Sys.time() | ||
+ | ERF <- ERF[ , !colnames(ERF@output) %in% c("Age","Sex","Source")] | ||
+ | levels(ERF$Exposure)[levels(ERF$Exposure) %in% c( | ||
+ | "Ingestion etc. (as it was in Seveso) as log(TCDD serum concentration+1) in fat", | ||
+ | "Maternal intake through placenta" | ||
+ | )] <- "To child" | ||
− | + | threshold <- EvalOutput(threshold) | |
+ | threshold <- threshold[ , !colnames(threshold@output) %in% c("Age","Sex","Source")] | ||
+ | levels(threshold$Exposure)[levels(threshold$Exposure) %in% c( | ||
+ | "Ingestion etc. (as it was in Seveso) as log(TCDD serum concentration+1) in fat", | ||
+ | "Maternal intake through placenta" | ||
+ | )] <- "To child" | ||
− | # | + | cat("Exposure-responses of interest.\n") |
+ | oprint(ERFchoice@output) | ||
+ | |||
+ | # Default dose but adjustments are needed before use. | ||
+ | objects.latest("Op_en2261", code_name = "dose") | ||
+ | dose <- unkeep(EvalOutput(dose), sources = TRUE, prevresults = TRUE) | ||
+ | Sys.time() | ||
+ | ######################################################### POPULATION | ||
population <- Ovariable( | population <- Ovariable( | ||
"population", | "population", | ||
data = data.frame( | data = data.frame( | ||
− | Country = c("DK", "EST", "FI", "SWE"), | + | Country = rep(c("DK", "EST", "FI", "SWE"), each = 4), |
− | Result = c( | + | Gender = rep(c("Male","Female"), each=2, times=2), |
+ | Ages = rep(c("18-45",">45"),4), | ||
+ | Result = rep(c(1200000, 250000, 1350000, 2000000), each = 4) | ||
) | ) | ||
) | ) | ||
− | # | + | mc2dparam<- list( |
− | objects.latest(" | + | N2 = 100, # Number of iterations in the new Iter |
+ | run2d = TRUE, # Should the mc2d function be used or not? | ||
+ | newmarginals = c("Gender", "Ages", "Country"), # Names of columns that are non-marginals but should be sampled enough to become marginals | ||
+ | method = "bootstrap", # which method to use for 2D Monte Carlo? Currently bootsrap is the only option. | ||
+ | fun = mean # Function for aggregating the first Iter dimension. | ||
+ | ) | ||
+ | |||
+ | objects.latest("Op_en2261", code_name="RR") # Default RR but has to be adjusted before use. | ||
+ | RR <- EvalOutput(RR) | ||
+ | RR@marginal <- RR@marginal | colnames(RR@output) %in% mc2dparam$newmarginals | ||
+ | objects.latest("Op_en2261", code_name="casesabs") # Has to be adjusted before use. | ||
+ | casesabs <- EvalOutput(casesabs) | ||
+ | casesabs@marginal <- casesabs@marginal | colnames(casesabs@output) %in% mc2dparam$newmarginals | ||
− | + | disabilityweight <- Ovariable( | |
− | " | + | "disabilityweight", |
− | ddata = " | + | ddata = "Op_en7748", |
− | subset = " | + | subset = "DALYs of responses" |
) | ) | ||
− | |||
− | |||
− | + | duration <- 1 | |
+ | |||
+ | objects.latest("Op_en7422", code_name="BoD") | ||
+ | |||
+ | BoD <- EvalOutput(BoD, verbose = TRUE) # Fetches all objects | ||
+ | |||
+ | #BoDcase <- unkeep(EvalOutput(BoDcase), sources = TRUE) # Removes NA indices | ||
+ | # To avoid double counting, these responses must be removed. | ||
+ | #BoDcase <- BoDcase[!BoDcase$Resp %in% c("Stroke", "Heart (CHD)") , ] | ||
+ | # | ||
+ | #BoD <- EvalOutput(BoD) # Re-evaluate BoD without double counting | ||
+ | |||
+ | objects.latest("Op_en6007", code_name="diagnostics") | ||
+ | Sys.time() | ||
+ | oprint(showLoctable()) | ||
+ | oprint(showind()) | ||
+ | |||
+ | rm(wiki_username) | ||
+ | |||
+ | objects.store(list=ls()) | ||
+ | cat("Ovariables", ls(), "stored.\n") | ||
+ | Sys.time() | ||
+ | </rcode> | ||
+ | |||
+ | ==== Second part ==== | ||
+ | |||
+ | * Model run 4.6.2017 [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=ERtBoA0X8McFJppE] | ||
+ | * Model run 11.6.2017 with 2D Monte Carlo [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=UltzattYWmXPSaRr] | ||
+ | |||
+ | <rcode graphics=1> | ||
+ | # This is code Op_en7748/ on page [[Benefit-risk assessment of Baltic herring and salmon intake]] | ||
+ | library(OpasnetUtils) | ||
+ | library(ggplot2) | ||
+ | |||
+ | objects.latest("Op_en7748", code_name="hia") # [[Benefit-risk assessment of Baltic herring and salmon intake]] | ||
+ | |||
+ | cat("Units:", conc@meta$units, "\n") | ||
+ | oprint(summary(conc,fun=c("length","mean","sd"))) | ||
+ | cat("Units: g/day\n") | ||
+ | oprint(summary(exposure, marginal=c("Exposure", "Exposure_agent", "Country","Background"), fun=c("length","mean","sd"))) | ||
+ | oprint(summary(exposure[is.na(exposure$Exposure),], marginal=c("Exposure_agent", "Country","Background"), fun=c("length","mean","sd"))) | ||
+ | oprint(summary(RR,fun=c("length","mean","sd"))) | ||
+ | oprint(summary(casesrr,fun=c("length","mean","sd"))) | ||
+ | oprint(summary(casesabs,fun=c("length","mean","sd"))) | ||
+ | oprint(summary(BoDpaf,fun=c("length","mean","sd"))[-5]) | ||
+ | oprint(summary(BoDcase,fun=c("length","mean","sd"))[-4]) | ||
+ | oprint(summary(BoD,fun=c("length","mean","sd"))[-5]) | ||
+ | |||
+ | ggplot(conc@output, aes(x=concResult, colour=Exposure_agent))+stat_ecdf()+ | ||
+ | facet_wrap(~Fish)+scale_x_log10() | ||
+ | |||
+ | ggplot(conc@output[conc$Fish %in% c("Herring", "Salmon"), ], aes(x=concResult, colour=Exposure_agent))+stat_ecdf()+ | ||
+ | facet_wrap(~Fish)+scale_x_log10() | ||
− | + | ggplot(amount@output, aes(x=amountResult, colour=Country))+stat_ecdf()+ | |
+ | facet_wrap(~Fish, scales="free")+scale_x_log10() | ||
− | ggplot( | + | ggplot(exposure@output[is.na(exposure$Exposure) & result(exposure)>0.01,], aes(x = exposureResult, colour=Country))+ |
− | facet_wrap(~ | + | stat_ecdf() + scale_x_log10() + theme_gray(base_size = 18)+ |
+ | facet_wrap(~ Exposure_agent, scales="free")+labs(title = "Exposure (DX: pg/d, O3: mg/d, VD: ug/d)") | ||
− | ggplot( | + | ggplot(exposure@output[!is.na(exposure$Exposure) & result(exposure)>0.01,], aes(x = exposureResult, colour=Country))+ |
− | facet_wrap(~ | + | stat_ecdf() + scale_x_log10() + theme_gray(base_size = 24)+ |
+ | facet_wrap(~ Exposure_agent, scales="free")+labs(title = "Exposure breast feeding (DX: log(pg/g) fat in child)") | ||
− | ggplot( | + | ggplot(BoD@output, aes(x=Response, weight=BoDResult/openv$N, fill=Response))+geom_bar()+coord_flip() |
− | |||
− | ggplot( | + | ggplot(BoD@output, aes(x=BoDResult, colour=Response))+stat_ecdf()+ |
− | + | scale_x_log10() | |
− | |||
− | + | ggplot(ERF@output, aes(x=ERFResult, colour=Exposure_agent))+stat_ecdf()+ | |
− | + | facet_wrap(~ Response, scales = "free_x") | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | ) | ||
− | + | ggplot(casesabs@output, aes(x=casesabsResult, colour=Response))+stat_ecdf()+ | |
+ | scale_x_log10() | ||
− | + | ggplot(casesrr@output, aes(x=casesrrResult, colour=Response))+stat_ecdf()+ | |
− | + | scale_x_log10() | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ggplot(BoDcase@output, aes(x=BoDcaseResult, colour=Response))+stat_ecdf()+ | |
− | + | scale_x_log10() | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ) | ||
− | + | ggplot(BoDpaf@output, aes(x=BoDpafResult, colour=Response))+stat_ecdf()+ | |
+ | scale_x_log10() | ||
− | + | odag() | |
</rcode> | </rcode> | ||
Latest revision as of 13:41, 8 September 2017
This page is a assessment.
The page identifier is Op_en7748 |
---|
Moderator:Arja (see all) |
This page is a stub. You may improve it into a full page, and then a rating bar will appear here. |
Upload data
|
Scope
This assessment is part of the WP5 work in Goherr project. Purpose is to evaluate health benefits and risks caused of eating Baltic herring and salmon in four Baltic sea countries (Denmark, Estonia, Finland and Sweden). This assessment is currently on-going.
Question
What are the current population level health benefits and risks of eating Baltic herring and salmon in Finland, Estonia, Denmark and Sweden? How would the health effects change in the future, if consumption of Baltic herring and salmon changes due to actions caused by different management scenarios of Baltic sea fish stocks?
Intended use and users
Results of this assessment are used to inform policy makers about the health impacts of fish. Further, this assessment will be combined with the results of the other Goherr WPs to produce estimates of future health impacts of Baltic fish related to different policy options. Especially, results of this assessment will be used as input in the decision support model built in Goherr WP6.
Participants
- National institute for health and welfare (THL)
- Goherr project group
Boundaries
- Four baltic sea countries (Denmark, Estonia, Finland, Sweden)
- Current situation (fish use year 2016, pollutant levels in fish year 2010)
- Estimation for future (not year specific)
Decisions and scenarios
Management scenarios developed in Goherr WP3 frames the following boundaries to the use and consumption of Baltic herring and salmon as human food. Effect of these scenarios to the dioxin levels and the human food use will be evalauted quantitatively and feed into the health benefit-risk model to assess the health effect changes.
- Scenario 1: “Transformation to sustainability”
- Hazardous substances, including dioxins, are gradually flushed out and the dioxin levels in Baltic herring are below or close to the maximum allowable level.
- Fish stocks are allowed to recover to levels, which makes maximum sustainable yield possible and increases the total catches of wild caught fish. The catches of salmon by commercial fisheries has stabilized at low level, while the share of recreational catch increases slightly.
- The use of the Baltic herring catch for food increases. A regional proactive management plan for the use of catch has increased the capacity of the fishing fleets to fish herring for food and through product development and joint marketing, have increased consumer demand for Baltic herring.
- Scenario 2: “Business-as-usual”
- The commercial catches of salmon continue to decrease. The demand for top predatory species, such as salmon and cod remains high, while the demand for herring decreased further as a result of demographic changes.
- Most of the herring catch are used for fish meal and oil production in the region.
- The use of Baltic herring from the southern parts of the Baltic Sea where the dioxin contents are not likely to exceed the maximum allowable level, are prioritised for human consumption. In the absence of the demand in many of the Baltic Sea countries, majority of the herring intended for direct human consumption are exported to Russia.
- Scenario 3: “Inequality”
- The nutrient and dioxins levels continue to decrease slowly.
- The commercial catches of salmon have decreased further as the general attitudes favour recreational fishing, which has also resulted in decreased demand.
- The herring catches have increased slightly, but the availability of herring suitable for human consumption remains low due to both, dioxin levels that remain above the maximum allowable limit in the northern Baltic Sea and the poor capacity to fish for food.
- The use of the catch varies between countries. In Estonia, for example, where the whole catch has been traditionally used for human consumption, there is no significant change in this respect, but in Finland, Sweden and Denmark, herring fishing is predominantly feed directed.
- Scenario 4: “Transformation to protectionism”
- The level of hazardous substances also increases as emission sources are not adequately addressed.
- Commercial salmon fisheries disappears almost completely from the Baltic Sea, although restocking keeps small scale fisheries going.
- Many of the Baltic herring stocks are also fished above the maximum sustainable yield and total catches are declining.
- Owing to the growing dioxin levels detected in herring, majority of the catch is used for aquaculture.
Timing
- Model development during 2016 and 2017
- First set of results in March 2017, draft publication in March 2018
Answer
This section will be updated as soon as preliminary results are available
Results
Conclusions
Rationale
Stakeholders
- Policy makers
- Food safety authorities
- Fisheries management
- Researchers
- Food safety
- Health
- NGO's
- WWF
- Active consumers
- Marine Stewardship Council
- Baltic sea fishers and producers?
Dependencies
Calculation of cases of disease
- totcases (Op_en2261/totcases on page Health impact assessment) with dose and RR, automatic intermediate variables. Indices: Age, Gender, Country, Response.
- population, case-specific, from main model. Suggested indices: Age, Gender, Country.
- disincidence,Incidence of the disease of interest. Op_en5917/initiate Disease risk. Suggested indices: Age, Gender, Country, Response. --# : Should we use IHME data instead? --Jouni (talk) 16:03, 13 April 2017 (UTC) ←# : Done --Arja (talk) 12:07, 19 May 2017 (UTC)
- Burden of disease as DALY in Finland ⇤# : Inactivate and merge? --Jouni (talk) 16:03, 13 April 2017 (UTC)
- ERF and threshold, exposure-response functions. Op_en2031/initiate Exposure-response function. Existing indices: Exposure_agent, Response, Exposure, Exposure_unit, ER_function, Scaling. ←# : Done. --Jouni (talk) 14:22, 19 April 2017 (UTC)
- frexposed, fraction of population that is exposed from Goherr: Fish consumption study. Suggested indices: Age, Gender, Country.
- exposure, from the main model because has case-specific adjustments. Suggested indices: Age, Gender, Country, Compound.
- amount, Consumption of fish. Existing indices: Gender, Age, Country, Fish.
- EU-kalat: concentration, Pollutant and fatty acid concentrations in fish. Suggested indices: Fish_species → Fish, POP → Compound, Catch_square (Catch_site, Catch_location) → Area, Length_mean_mm → Length.
- Persistent organic pollutant levels in Baltic herring ⇤# : Page only used to summarise data from EU-kalat. --Jouni (talk) 11:40, 19 April 2017 (UTC)
- Persistent organic pollutant levels in Baltic salmon ⇤# : Page only used to summarise data from EU-kalat. --Jouni (talk) 11:40, 19 April 2017 (UTC)
- Concentrations of beneficial nutrients in fish. Suggested indices: Fish, Compound. --# : Good data for Baltic herring, Salmon not taken into account yet --Arja (talk) 13:27, 13 March 2017 (UTC) ←# : Take data from Fineli. --Jouni (talk) 16:03, 13 April 2017 (UTC) --# : Omega-3 content in salmon: update and change the answer to point to the main page. --Jouni (talk) 16:03, 13 April 2017 (UTC)
- Mercury concentrations in fish in Finland. Suggested indices: Fish, Location, Size, Year, Compound. ←# : update code by using Bayesian model on Kerty database. --Jouni (talk) 16:03, 13 April 2017 (UTC)
- Toxic equivalency factor (TEF). Indices: TEFversion, Compound. ←# : Done. --Jouni (talk) 14:22, 19 April 2017 (UTC)
Calculation of DALYs:
- totcases (see above)
- Disability weights of health effects
- Length of disease
Obs | Background | Country | Gender | Exposure_agent | Result | Unit | Description |
---|---|---|---|---|---|---|---|
1 | Yes | FI | Male | Vitamin D | 11.7 | µg /d | Finriski 12 - 0.3 silakasta |
2 | Yes | SWE | Male | Vitamin D | 11.7 | µg /d | Finriski 12 - 0.3 silakasta |
3 | Yes | EST | Male | Vitamin D | 11.7 | µg /d | Finriski 12 - 0.3 silakasta |
4 | Yes | DK | Male | Vitamin D | 11.7 | µg /d | Finriski 12 - 0.3 silakasta |
5 | Yes | Female | Vitamin D | 8.5 | µg /d | Finriski 8.7 - 0.2 silakasta | |
6 | Yes | Male | EPA | 120 | mg /d | Finriski 125 - 4.6 silakasta | |
7 | Yes | Female | EPA | 96 | mg /d | Finriski 100 - 3.9 silakasta | |
8 | Yes | Male | DHA | 118 | mg /d | Finriski 125 - 6.7 silakasta | |
9 | Yes | Female | DHA | 94 | mg /d | Finriski 100 - 5.4 silakasta | |
10 | Yes | PCDDF | 0 | pg /d (TEQ) | |||
11 | Yes | PCB | 0 | pg /d (TEQ) | |||
12 | Yes | MeHg | 0 | µg /d | |||
13 | Yes | logTEQ | 0 | log(pg /g) | |||
14 | No | 0 |
Obs | Exposure_agent | Resp | Response | ER_function | Scaling | Dummy |
---|---|---|---|---|---|---|
1 | TEQ | Tooth defect | Yes or no dental defect | ERS | None | 1 |
2 | TEQ | Cancer | Cancer morbidity | CSF | BW | 1 |
3 | TEQ | Dioxin TDI | Dioxin recommendation tolerable daily intake | TDI | BW | 1 |
4 | DHA | Child's IQ | Loss in child's IQ points | ERS | None | 1 |
5 | Omega3 | Heart (CHD) | CHD2 mortality | Relative Hill | None | 1 |
6 | Omega3 | Stroke | Stroke mortality | Relative Hill | None | 1 |
7 | Vitamin D | Vitamin D intake | Vitamin D recommendation | Step | None | 1 |
8 | MeHg | Child's IQ | Loss in child's IQ points | ERS | BW | 1 |
Obs | Resp | DALY | Description |
---|---|---|---|
1 | Heart (CHD) | 5 - 15 | Assumes DW 1 and D 10 U 50% |
2 | Stroke | 5 - 15 | Assumes DW 1 and D 10 U 50 % |
3 | Tooth defect | 0 - 0.12 | DW 0.001 D 60 U 100 %. Or should we use this: Developmental defect: caries or missing tooth, 0.008 (0.003 - 0.017), Periodontitis weight from IHME. D: 1. U from IHME? |
4 | Cancer | 0 - 0.28 | DW 0.1 D 20, in addition loss of life expectancy 5 a. This comes from a lifetime exposure, so it is (linearly( assumed that 1/50 of this is caused by one-year exposure. U 100 % |
5 | Vitamin D intake | 0.0001 - 0.0101 | DW 0.001 D 1 U 101x. 1 if not met |
6 | Dioxin TDI | 0.0001 - 0.0101 | DW 0.001 D 1 U 101x. 1 if not met |
7 | Child's IQ | -0.0517 (-0.03 - -0.0817) | Intellectual disability, mild (IQ<70): 0.031 (0.018-0.049) From IHME. D 50 U from IHME. |
- DW = disability weight
- D = duration (a)
- U = uncertainty
Analyses
Indices
- Country (Denmark, Estonia, Finland, Sweden)
- Year (current, future)
- Gender
- Age: 18-45 years or >45 years
- Fish species (Baltic herring, Baltic salmon)
- Health end-point, specified by name
- Compound: TEQ (PCDD/F and PCB), Vitamin D, Omega3 (includes EPA and DHA), MeHg
Calculations
This section will have the actual health benefit-risk model (schematically described in the above figure) written with R. The code will utilise all variables listed in the above Dependencies section. Model results are presented as tables and figures when those are available.
- 18.5.2017: Archived exposure model Op7748/exposure by Arja (used separate ovariables for salmon and herring) [1]
Health impact model (Monte Carlo)
- Model run 13.3.2017: a simple copy of op_fi:Silakan hyöty-riskiarvio [2]
- Model run 13.3.2017 with showLocations function [3]
- Model run 13.3.2017 produces totcases results but are not meaningful yet [4]
- Model run 14.3.2017 with exposure graph [5]
- Model run 14.3.2017 bugs not fixed [6]
- Model run 30.5.2017 [7]
- Model run 12.6.2017 with 2D Monte Carlo [8]
- Model run 8.9.2017 with known bugs fixed [9]
Second part
Plot concentrations and survey
- Requires codes Op_en7748/bayes and indirectly Op_en7748/preprocess.
- Model run 1.3.2017 [12]
References
Keywords
See also
- Risk and Benefit Assessment of Herring and Salmonid Fish from the Baltic Sea Area
- Swedish Market Basket 2010
- Riksmaten 2010
- Danskernes kostvaner 2011-2013