Difference between revisions of "POPs in Baltic herring"

From Testiwiki
Jump to: navigation, search
(corrections to the model)
m (Answer)
 
(27 intermediate revisions by 2 users not shown)
Line 4: Line 4:
 
== Question  ==
 
== Question  ==
  
What are the concentrations of persistent organic pollutants (POPs) in Baltic sea fish.
+
What are the concentrations of persistent organic pollutants (POPs) in Baltic herring.
  
 
== Answer  ==
 
== Answer  ==
 +
Answer is under work and results are preliminary.
  
POP concentrations in Baltic sea fish have been measured from samples collected in EU-kalat project.
+
POP concentrations in Baltic sea fish have been measured from samples collected in [[EU-kalat]] project. The original data of individual fish samples is accessible through [http://en.opasnet.org/w/Special:Opasnet_Base?id=Op_en3104 Opasnet base]. This data is used here for a Bayesian model to calculate posterior concentration distributions (median and SD) for each congener. This data is then translated into TEQ, and can be used for health benefit assessment of Baltic herring.
  
[http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=3f19VvkjoNHloJCn Model run 11.2.2016]
+
Posterior congener median concentrations are presented below for each compound group (PCDD/F, PCB, BDE) analysed in EU-kalat.
 +
 
 +
<gallery>
 +
File:Mean_PCDDF_posterior_herring.jpg
 +
File:Mean_PCB_posterior_herring.jpg
 +
File:Mean_BDE_posterior_herring.jpg
 +
 
 +
</gallery>
 +
Based on the mean posterior concentrations of individual congeners, TEQs are calculated for each congener by using [[TEF]] values by WHO and plotted below.
 +
 
 +
[[File:Mean_TEQ_herring.jpg|800px]]
 +
 
 +
You can print out the numerical results of prior and posterior congener concentrations below. In addition the possible updated versions of the above figures are printed out.
 +
 
 +
<rcode label="Show results" embed=1 graphics=1 >
 +
 
 +
library(OpasnetUtils)
 +
library(ggplot2)
 +
library(reshape2)
 +
 
 +
objects.latest("Op_en2583", "pop_bayes")
 +
 
 +
oprint(dcast(resultsall@output, Congener~variable, fill=0, value.var = "resultsallResult"))
 +
 
 +
ggplot(subset(resultsall@output, grepl("PCB", Congener) & grepl("Medianpost", variable)), aes(x = Congener, y = resultsallResult, fill = Congener)) + geom_bar(stat = "identity") +
 +
  labs(x = "Congener", y = "Concentration (pg/g fat)") + coord_flip() + ggtitle("Median posterior concentrations of PCB's in Baltic herring")
 +
 
 +
ggplot(subset(resultsall@output, grepl("CD", Congener) & grepl("Medianpost", variable)), aes(x = Congener, y = resultsallResult, fill = Congener)) + geom_bar(stat = "identity") +
 +
  labs(x = "Congener", y = "Concentration (pg/g fat)") + coord_flip() + ggtitle("Median posterior concentrations of PCDD/F's in Baltic herring")
 +
 
 +
ggplot(subset(resultsall@output, grepl("BDE", Congener) & grepl("Medianpost", variable)), aes(x = Congener, y = resultsallResult, fill = Congener)) + geom_bar(stat = "identity") +
 +
  labs(x = "Congener", y = "Concentration (pg/g fat)") + coord_flip() + ggtitle("Median posterior concentrations of BDE's in Baltic herring")
 +
 
 +
ggplot(subset(teq@output, grepl("Medianpost", variable)), aes(x = Congener, y = Result, fill = Congener)) + geom_bar(stat = "identity") +
 +
  labs(x = "Congener", y = "TEQ (pg/g fat)") + coord_flip()  + ggtitle("Median posterior TEQ of POPs in Baltic herring")
 +
 
 +
</rcode>
 +
 
 +
== Rationale ==
 +
 
 +
HELCOM has reported <ref>HELCOM 2004. Dioxins in the Baltic Sea [http://www.helcom.fi/Lists/Publications/Dioxins%20in%20the%20Baltic%20Sea.pdf]</ref>  that in the south western part of the Baltic and in Danish waters the average dioxin content in herring is 2-2.5 pg WHO-TEQ/g fresh weight. In comparison, levels are approximately double this figure in the Baltic Proper and the Gulf of Finland and four times higher in the Bothnian Sea and the southern part of the Bothnian Bay.
 +
 
 +
=== Northern Baltic sea===
 +
 
 +
This model takes in measured congener concentrations of POPs in Baltic herring in northern part of Baltic sea (Bothnian Bay, Bothnian Sea, Åland Sea, Gulf of Finland). Measured data is used for Bayesian model to produce posterior medians and sds for each congener and also to calculate TEQ values. Numerical results are saved as variables to Opasnetbase and result figures are presented above in the Answer section.
 +
 
 +
<rcode name="pop_bayes" label="Calculate (for developers only)" graphics=1 store=1>
 +
## This code is Op_en2583/pop_bayes on page [[POPs_in_Baltic_herring]]
  
<rcode graphics=1>
 
 
library(OpasnetUtils)
 
library(OpasnetUtils)
 
library(ggplot2)
 
library(ggplot2)
 
library(rjags)
 
library(rjags)
 +
library(reshape2)
  
 
dat <- opbase.data("Op_en3104", subset = "POPs")
 
dat <- opbase.data("Op_en3104", subset = "POPs")
dat <- dat[dat$POP == "2378TCDD" , ]
 
 
dat <- dat[dat$Fish_species == "Baltic herring" , ]
 
dat <- dat[dat$Fish_species == "Baltic herring" , ]
  
#Bayesian test based on http://doingbayesiandataanalysis.blogspot.fi/2013/04/bayesian-estimation-of-log-normal.html
+
dat <- subset(dat,!(is.na(dat["Result"])))
 +
dat <- dropall(dat)
 +
levels(dat$POP) <- gsub("HCDD", "HxCDD", levels(dat$POP))
 +
levels(dat$POP) <- gsub("HCDF", "HxCDF", levels(dat$POP))
 +
levels(dat$POP) <- gsub("CoPCB", "PCB", levels(dat$POP))
 +
 
 +
congeners <- levels(dat$POP) #names of different congeners in data
 +
 
 +
Y <- length(congeners) #number of congeners and j's in for loop
 +
 
 +
compdat <- dat[dat$POP %in% congeners[1:Y] , ] #data for current congener
 +
Compound <- log10(compdat$Result+1E-2) #+1E-2 because zero concentrations are not allowed
  
 
mo <- textConnection("model{
 
mo <- textConnection("model{
 +
                    for (j in 1 : Y ) {
 +
                    tau1[j] ~ dunif(0.001, 1000)
 +
                    muOfCompound[j] ~ dnorm(0, 0.001)
 +
                    }
 
                     for( i in 1 : N ) {
 
                     for( i in 1 : N ) {
                     TCDD[i] ~ dlnorm(muOfLogTCDD, tau)#1/sigmaOfLogTCDD^2 )
+
                     Compound[i] ~ dnorm(muOfCompound[POP[i]], tau2[i])
                    }                 
+
                     tau2[i] <- tau1[POP[i]]*sqrt(n[i])
                      tau ~ dunif(0.001, 1000)
+
                     }
                      #sigmaOfLogTCDD ~ dunif( 0.001, 1000 ) #*sdOfLogTCDD , 1000*sdOfLogTCDD )
 
                    muOfLogTCDD ~ dnorm(0, 0.001) # dnorm(meanOfLogTCDD , (0.001*(1/sdOfLogTCDD^2)))
 
                     #muOfTCDD <- (exp(muOfLogTCDD +sigmaOfLogTCDD^2/2))
 
                     #modeOfTCDD <- (exp(muOfLogTCDD-sigmaOfLogTCDD^2))
 
                    #sigmaOfTCDD <- (sqrt(exp(2*muOfLogTCDD+sigmaOfLogTCDD^2)*(exp(sigmaOfLogTCDD^2)-1)))
 
 
                     }
 
                     }
 
                     ")
 
                     ")
#N <- nrow(dat)
 
#LogTCDD <- log(dat$result+1) #+1 because of negative log values
 
#TCDD <- 10^(LogTCDD-1)
 
  TCDD <- dat$Result + 0.0001
 
  N <- length(TCDD)
 
 
 
dataList = list(
 
dataList = list(
   TCDD = dat$Result + 0.0001,
+
   Y = Y,
   N = length(TCDD)
+
  Compound = Compound,
#  meanOfLogTCDD = mean(LogTCDD),
+
   POP = as.numeric(compdat$POP),
# sdOfLogTCDD = sd(LogTCDD)
+
  N = length(Compound),
 +
  n = compdat$N_individuals #number of fishes in sample
 
)
 
)
  
 
jags <- jags.model(mo, data = dataList, n.chains = 4, n.adapt = 1000)
 
jags <- jags.model(mo, data = dataList, n.chains = 4, n.adapt = 1000)
 +
 
close(mo)
 
close(mo)
update(jags, 1000)
 
  
out <- coda.samples(jags, c('tau', 'muOfLogTCDD'), nrow(dat)) # Stores a posterior sample
+
#update(jags, 1000)
 +
out <- coda.samples(jags, c('tau1', 'muOfCompound'), 500) # Stores a posterior sample
 
plot(out)
 
plot(out)
  
ggplot(dat, aes(x = Result, colour = Catch_location))+geom_density()+scale_x_log10()
+
Meanlogpost = c()
 +
for (j in 1 : Y) {
 +
  logmean <- mean(out[[4]][,j]) #calculate mean of logmu for posterior (test 4)
 +
  Meanlogpost = c(Meanlogpost, logmean)
 +
}
 +
 
 +
Sdlogpost = c()
 +
for (j in 1 : Y) {
 +
  logsd <- sqrt(1/(mean(out[[4]][,j+Y])))
 +
  Sdlogpost = c(Sdlogpost, logsd)
 +
}
 +
 
 +
resultsall <- data.frame(
 +
  Meanorig = aggregate(compdat$Result, compdat["POP"], mean), #calculate mean for original data
 +
  Sdorig = aggregate(compdat$Result, compdat["POP"], sd)$x, #calcaulte sd of original data
 +
  Medianorig = aggregate(compdat$Result, compdat["POP"], median)$x, #calculate median of original data
 +
  Meanlog = aggregate(Compound, compdat["POP"], mean)$x, #calculate mean for logdata
 +
  Sdlog = aggregate(Compound, compdat["POP"], sd)$x, #calculate sd for logdata
 +
  Meanlogpost = Meanlogpost,
 +
  Sdlogpost = Sdlogpost,
 +
  Medianpost = 10^Meanlogpost-1E-02,
 +
  Sdpost = 10^Sdlogpost-1E-02 #this might be incorrect
 +
  )
 +
 
 +
oprint(resultsall)
 +
 
 +
tef <- Ovariable("tef", ddata = "Op_en4017", subset = "TEF values")
 +
tef <- EvalOutput(tef)
 +
 
 +
colnames(resultsall)[1] <- "Congener"
 +
resultsall <- melt(resultsall)
 +
colnames(resultsall)[3] <- "Result"
 +
resultsall <-  Ovariable("resultsall", data = resultsall)
 +
resultsall <- EvalOutput(resultsall)
 +
teq = resultsall * tef
 +
 
 +
objects.store(resultsall, teq)
 +
cat("resultsall and teq stored for later use:\n", paste(ls(), collapse = ", "), "\n")
  
 
</rcode>
 
</rcode>
  
== Rationale  ==
+
=== Southern Baltic sea ===
 +
 
 +
Pandelova et al. <ref> Pandelova et al. 2008. Levels of PCDD/F and dioxin-like PCB in Baltic fish of different age and gender, Chemosphere, 71, 369–378. </ref> have measured PCDD/Fs and PCB concentrations in Baltic herring taking samples from Gulf of Finland, Gulf of Riga and open Baltic sea. Results as TEQs (pg WHO-TEQ/g fw) are presented separately for herrings with different age.
 +
 
 +
<t2b name="PCDD/Fs " unit="pg WHO-TEQ/g fw" index ="Area,Time,Age">
 +
Gulf of Riga|2002|2.0–2.5|1.08
 +
Gulf of Riga|2004|2.0–2.5|2.14
 +
Gulf of Riga|2005|2.0–2.5|1.75
 +
Gulf of Riga|2003|3.0–3.5|1.5
 +
Gulf of Riga|2002|3.5–4.0|1.72
 +
Gulf of Riga|2003|3.5–4.0|1.44
 +
Gulf of Finland|2002|1.5–2.0|0.63
 +
Gulf of Finland|2002|2.0–2.5|0.75
 +
Gulf of Finland|2004|2.0–2.5|1.07
 +
Gulf of Finland|2005|2.0–2.5|0.98
 +
Gulf of Finland|2002|2.5–3.0|1.08
 +
Gulf of Finland|2005|2.5–3.0|0.98
 +
Gulf of Finland|2002|4.5–5.0|1.43
 +
Gulf of Finland|2003|4.5–5.0|3.07
 +
Open Baltic Sea|2004|1.5–2.0|1.25
 +
Open Baltic Sea|2004|2.0–2.5|1.14
 +
Open Baltic Sea|2002|3.5–4.0|2.18
 +
</t2b>
 +
 
 +
<t2b name="PCBs" unit="pg WHO-TEQ/g fw" index ="Area,Time,Age">
 +
Gulf of Riga|2004|1.5–2.0|1.31
 +
Gulf of Riga|2005|2.0–2.5|0.83
 +
Gulf of Riga|2003|3.0–3.5|1.34
 +
Gulf of Riga|2003|3.5–4.0|1.47
 +
Gulf of Finland|2004|2.0–2.5|0.67
 +
Gulf of Finland|2005|2.0–2.5|0.68
 +
Gulf of Finland|2004|2.5–3.0|1.03
 +
Gulf of Finland|2005|2.5–3.0|0.72
 +
Gulf of Finland|2003|4.5–5.0|2.48
 +
Open Baltic Sea|2004|1.5–2.0|1.21
 +
Open Baltic Sea|2004|2.0–2.5|1.07
 +
Open Baltic Sea|2003|4.0–4.5|2.09
 +
</t2b>
  
 
== See also  ==
 
== See also  ==
 +
 +
* [http://www.openbugs.net/Manuals/Tricks.html#HandlingUnbalancedDatasets Tricks for OpenBUGS]
  
 
== References  ==
 
== References  ==
  
<br> <references />
+
<references />

Latest revision as of 10:17, 30 June 2016



Question

What are the concentrations of persistent organic pollutants (POPs) in Baltic herring.

Answer

Answer is under work and results are preliminary.

POP concentrations in Baltic sea fish have been measured from samples collected in EU-kalat project. The original data of individual fish samples is accessible through Opasnet base. This data is used here for a Bayesian model to calculate posterior concentration distributions (median and SD) for each congener. This data is then translated into TEQ, and can be used for health benefit assessment of Baltic herring.

Posterior congener median concentrations are presented below for each compound group (PCDD/F, PCB, BDE) analysed in EU-kalat.

Based on the mean posterior concentrations of individual congeners, TEQs are calculated for each congener by using TEF values by WHO and plotted below.

Error creating thumbnail: Unable to save thumbnail to destination

You can print out the numerical results of prior and posterior congener concentrations below. In addition the possible updated versions of the above figures are printed out.

+ Show code

Rationale

HELCOM has reported [1] that in the south western part of the Baltic and in Danish waters the average dioxin content in herring is 2-2.5 pg WHO-TEQ/g fresh weight. In comparison, levels are approximately double this figure in the Baltic Proper and the Gulf of Finland and four times higher in the Bothnian Sea and the southern part of the Bothnian Bay.

Northern Baltic sea

This model takes in measured congener concentrations of POPs in Baltic herring in northern part of Baltic sea (Bothnian Bay, Bothnian Sea, Åland Sea, Gulf of Finland). Measured data is used for Bayesian model to produce posterior medians and sds for each congener and also to calculate TEQ values. Numerical results are saved as variables to Opasnetbase and result figures are presented above in the Answer section.

+ Show code

Southern Baltic sea

Pandelova et al. [2] have measured PCDD/Fs and PCB concentrations in Baltic herring taking samples from Gulf of Finland, Gulf of Riga and open Baltic sea. Results as TEQs (pg WHO-TEQ/g fw) are presented separately for herrings with different age.

PCDD/Fs(pg WHO-TEQ/g fw)
ObsAreaTimeAgeResult
1Gulf of Riga20022.0–2.51.08
2Gulf of Riga20042.0–2.52.14
3Gulf of Riga20052.0–2.51.75
4Gulf of Riga20033.0–3.51.5
5Gulf of Riga20023.5–4.01.72
6Gulf of Riga20033.5–4.01.44
7Gulf of Finland20021.5–2.00.63
8Gulf of Finland20022.0–2.50.75
9Gulf of Finland20042.0–2.51.07
10Gulf of Finland20052.0–2.50.98
11Gulf of Finland20022.5–3.01.08
12Gulf of Finland20052.5–3.00.98
13Gulf of Finland20024.5–5.01.43
14Gulf of Finland20034.5–5.03.07
15Open Baltic Sea20041.5–2.01.25
16Open Baltic Sea20042.0–2.51.14
17Open Baltic Sea20023.5–4.02.18
PCBs(pg WHO-TEQ/g fw)
ObsAreaTimeAgeResult
1Gulf of Riga20041.5–2.01.31
2Gulf of Riga20052.0–2.50.83
3Gulf of Riga20033.0–3.51.34
4Gulf of Riga20033.5–4.01.47
5Gulf of Finland20042.0–2.50.67
6Gulf of Finland20052.0–2.50.68
7Gulf of Finland20042.5–3.01.03
8Gulf of Finland20052.5–3.00.72
9Gulf of Finland20034.5–5.02.48
10Open Baltic Sea20041.5–2.01.21
11Open Baltic Sea20042.0–2.51.07
12Open Baltic Sea20034.0–4.52.09

See also

References

  1. HELCOM 2004. Dioxins in the Baltic Sea [1]
  2. Pandelova et al. 2008. Levels of PCDD/F and dioxin-like PCB in Baltic fish of different age and gender, Chemosphere, 71, 369–378.