EU-kalat: Difference between revisions
Line 229: | Line 229: | ||
* Model run 11.10.2017 with small and large herring [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=ICIWZTUZR6rlNwuD] (removed in update) | * Model run 11.10.2017 with small and large herring [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=ICIWZTUZR6rlNwuD] (removed in update) | ||
* Model run 12.3.2018: bugs fixed with data used in Bayes. In addition, redundant fish species removed and Omega assumed to be the same for herring and salmon. [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=k0n2CFnjdGBklm9E] | * Model run 12.3.2018: bugs fixed with data used in Bayes. In addition, redundant fish species removed and Omega assumed to be the same for herring and salmon. [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=k0n2CFnjdGBklm9E] | ||
* Model run 22.3.2018 [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=NqCI8GcaBkyqGRwH] Model does not mix well. Use thinning? | |||
Warning messages: | Warning messages: | ||
Line 275: | Line 276: | ||
} | } | ||
eu2@marginal[colnames(eu2@output) %in% c("Length","Year")] <- TRUE # Indexguide should take care of this but it doesn't! | |||
eu2 <- unkeep(eu2, prevresults = TRUE, sources = TRUE) | eu2 <- unkeep(eu2, prevresults = TRUE, sources = TRUE) | ||
eu2 <- oapply(eu2, cols = "TEFversion", FUN = "sum") # Sums up dioxin+furan and non+monoortho. This goes wrong if > 1 TEFversion. | |||
# Hierarchical Bayes model. | # Hierarchical Bayes model. | ||
Line 288: | Line 290: | ||
eu3 <- eu2[eu2$Compound %in% conl & eu2$Fish %in% fisl & eu2$Matrix == "Muscle" , ] | eu3 <- eu2[eu2$Compound %in% conl & eu2$Fish %in% fisl & eu2$Matrix == "Muscle" , ] | ||
eu3 <- reshape( | eu3 <- reshape( # Gives warning that more than one value and first taken. Why? | ||
eu3@output, | eu3@output, | ||
v.names = "euResult", | v.names = "euResult", | ||
Line 302: | Line 304: | ||
#[1] "THLcode" "Fish" "N" "Length" "Year" | #[1] "THLcode" "Fish" "N" "Length" "Year" | ||
#[6] "euResult.PCDDF" "euResult.PCB" | #[6] "euResult.PCDDF" "euResult.PCB" | ||
cong <- data.matrix(eu3[6:ncol(eu3)]) | |||
if(FALSE){ | if(FALSE){ | ||
# Find the level of quantification for dinterval function | # Find the level of quantification for dinterval function | ||
LOQ <- unlist(lapply(eu3[6:ncol(eu3)], FUN = function(x) min(x[x!=0]))) | LOQ <- unlist(lapply(eu3[6:ncol(eu3)], FUN = function(x) min(x[x!=0]))) | ||
# With TEQ, there are no zeros. So this is useful only if there are congener-specific results. | # With TEQ, there are no zeros. So this is useful only if there are congener-specific results. | ||
names(LOQ) <- conl | names(LOQ) <- conl | ||
cong <- sapply( | |||
1:length(LOQ), | |||
FUN = function(x) ifelse(cong[,x]==0, 0.5*LOQ[x], cong[,x]) | |||
) | |||
} | |||
# This version of the model looks only at Baltic herring, Large herring, small herring and salmon. | # This version of the model looks only at Baltic herring, Large herring, small herring and salmon. | ||
# It assumes that all fish groups have the same Omega but mu varies. | # It assumes that all fish groups have the same Omega but mu varies. | ||
Line 324: | Line 327: | ||
for(i in 1:S) { # S = fish sample | for(i in 1:S) { # S = fish sample | ||
# below.LOQ[i,j] ~ dinterval(-cong[i,j], -LOQ[j]) | # below.LOQ[i,j] ~ dinterval(-cong[i,j], -LOQ[j]) | ||
cong[i,1:C] ~ dmnorm(muind | cong[i,1:C] ~ dmnorm(muind[i,], Omega[,]) | ||
muind[i,1:C] <- mu[fis[i],1:C] + | muind[i,1:C] <- mu[fis[i],1:C] + lenp[fis[i]]*length[i] + timep*year[i] | ||
} | } | ||
# | # Priors for parameters | ||
timep ~ dnorm(-0.1, 1) # Time trend | |||
for(i in 1:Fi) { # Fi = fish species | for(i in 1:Fi) { # Fi = fish species | ||
lenp[i] ~ dnorm(0,0.0001) # length parameter | |||
pred[i,1:C] ~ dmnorm(mu[i,1:C]+lenp[i]*lenpred[i]+timep*timepred, Omega[,]) # Model prediction | |||
for(j in 1:C) { | for(j in 1:C) { | ||
mu[i,j] ~ dnorm(mu1[j], tau1[j]) # Congener-specific mean for fishes | mu[i,j] ~ dnorm(0, 0.0001) # mu1[j], tau1[j]) # Congener-specific mean for fishes | ||
} | } | ||
} | } | ||
Omega[1:C,1:C] ~ dwish(Omega0[1:C,1:C],S) | Omega[1:C,1:C] ~ dwish(Omega0[1:C,1:C],S) | ||
} | } | ||
") | ") | ||
Line 359: | Line 355: | ||
year = eu3$Year, | year = eu3$Year, | ||
fis = match(eu3$Fish, fisl), | fis = match(eu3$Fish, fisl), | ||
lenpred = c(170, 860), | |||
timepred = 2009, | |||
Omega0 = diag(C)/100000 | Omega0 = diag(C)/100000 | ||
), | ), | ||
Line 371: | Line 369: | ||
c( | c( | ||
'mu', # mean by fish and compound | 'mu', # mean by fish and compound | ||
'Omega', # precision matrix by | 'Omega', # precision matrix by compound | ||
'lenp',# parameters for length | |||
'timep', # parameter for Year | |||
' | 'pred' # predicted concentration for year 2009 and 17 cm herring, 80 cm salmon | ||
), | ), | ||
N | N | ||
) | ) | ||
dimnames(samps.j$mu) <- list(Fish = fisl, Compound = conl, Iter = 1:N, Chain = 1:4) | dimnames(samps.j$mu) <- list(Fish = fisl, Compound = conl, Iter = 1:N, Chain = 1:4) | ||
dimnames(samps.j$ | dimnames(samps.j$lenp) <- list(Fish = fisl, Iter = 1:N, Chain = 1:4) | ||
dimnames(samps.j$pred) <- list(Fish = fisl, Compound = conl, Iter = 1:N, Chain = 1:4) | |||
dimnames(samps.j$Omega) <- list(Compound = conl, Compound2 = conl, Iter=1:N, Chain=1:4) | dimnames(samps.j$Omega) <- list(Compound = conl, Compound2 = conl, Iter=1:N, Chain=1:4) | ||
##### conc.param contains expected values of the distribution parameters from the model | ##### conc.param contains expected values of the distribution parameters from the model | ||
conc.param <- list( | conc.param <- list( | ||
Omega = apply(samps.j$Omega[,,,1], MARGIN = 1:2, FUN = mean), | |||
lenp.mean = apply(samps.j$lenp[,,1], MARGIN = 1, FUN = mean), | |||
lenp.sd = apply(samps.j$lenp[,,1], MARGIN = 1, FUN = sd), | |||
mu = apply(samps.j$mu[,,,1], MARGIN = 1:2, FUN = mean), | mu = apply(samps.j$mu[,,,1], MARGIN = 1:2, FUN = mean), | ||
timep.mean = apply(samps.j$lenp[,,1], MARGIN = 1, FUN = mean), | |||
timep.sd = apply(samps.j$lenp[,,1], MARGIN = 1, FUN = sd) | |||
) | ) | ||
objects.store(conc.param, samps.j) | objects.store(conc.param, samps.j) | ||
Line 412: | Line 399: | ||
# Leave only the main fish species and congeners and remove others | # Leave only the main fish species and congeners and remove others | ||
#oprint(summary( | |||
# eu2[eu2$Compound %in% indices$Compound.PCDDF14 & eu$Fish %in% fisl , ], | |||
# marginals = c("Fish", "Compound"), # Matrix is always 'Muscle' | |||
# function_names = c("mean", "sd") | |||
#)) | |||
ggplot( | ggplot(eu2@output[eu2$Fish %in% fisl & eu2$Compound %in% conl,], aes(x = euResult, colour=Compound))+stat_ecdf()+ | ||
scale_x_log10() | facet_wrap( ~ Fish)+scale_x_log10() | ||
ggplot(melt(exp(samps.j$pred[,,,1])), aes(x=value, colour=Compound))+stat_ecdf()+ | |||
facet_wrap( ~ Fish)+scale_x_log10() | |||
scatterplotMatrix(t(samps.j$pred[1,,,1]), main = "Predictions for all compounds for Baltic herring") | scatterplotMatrix(t(samps.j$pred[1,,,1]), main = "Predictions for all compounds for Baltic herring") | ||
scatterplotMatrix(t(samps.j$pred[,1,,1]), main = "Predictions for all fish species for PCDDF") | scatterplotMatrix(t(samps.j$pred[,1,,1]), main = "Predictions for all fish species for PCDDF") | ||
coda.j <- coda.samples( | coda.j <- coda.samples( | ||
jags, | jags, | ||
c('mu', 'pred', ' | c('mu', 'pred', 'timep','lenp'), | ||
N | N | ||
) | ) | ||
plot(coda.j) | plot(coda.j) | ||
</rcode> | </rcode> | ||
Revision as of 05:11, 22 March 2018
This page is a study.
The page identifier is Op_en3104 |
---|
Moderator:Arja (see all) |
|
Upload data
|
EU-kalat is a study, where concentrations of PCDD/Fs, PCBs, PBDEs and heavy metals have been measured from fish
Question
The scope of EU-kalat study was to measure concentrations of persistent organic pollutants (POPs) including dioxin (PCDD/F), PCB and BDE in fish from Baltic sea and Finnish inland lakes and rivers. [1] [2] [3].
Answer
The original sample results can be acquired from Opasnet base. The study showed that levels of PCDD/Fs and PCBs depends especially on the fish species. Highest levels were on salmon and large sized herring. Levels of PCDD/Fs exceeded maximum level of 4 pg TEQ/g fw multiple times. Levels of PCDD/Fs were correlated positively with age of the fish.
Mean congener concentrations as WHO2005-TEQ in Baltic herring can be printed out with this link or by running the codel below.
Rationale
Data
Data was collected between 2009-2010. The study contains years, tissue type, fish species, and fat content for each concentration measurement. Number of observations is 285.
There is a new study EU-kalat 3, which will produce results in 2016.
Calculations
Preprocess
- Preprocess model 22.2.2017 [4]
- Objects used in Benefit-risk assessment of Baltic herring and salmon intake
- Model run 25.1.2017 [5]
- Model run 22.5.2017 with new ovariables euRaw, euAll, euMain, and euRatio [6]
- Model run 23.5.2017 with adjusted ovariables euRaw, eu, euRatio [7]
- Model run 11.10.2017: Small herring and Large herring added as new species [8]
- Model rerun 15.11.2017 because the previous stored run was lost in update [9]
- Model run 21.3.2018: Small and large herring replaced by actual fish length [10]
Bayes model for dioxin concentrations
- Model run 28.2.2017 [11]
- Model run 28.2.2017 with corrected survey model [12]
- Model run 28.2.2017 with Mu estimates [13]
- Model run 1.3.2017 [14]
- Model run 23.4.2017 [15] produces list conc.param and ovariable concentration
- Model run 24.4.2017 [16]
- Model run 19.5.2017 without ovariable concentration [17] ⇤--#: . The model does not mix well, so the results should not be used for final results. --Jouni (talk) 19:37, 19 May 2017 (UTC) (type: truth; paradigms: science: attack)
- Model run 22.5.2017 with TEQdx and TEQpcb as the only Compounds [18]
- Model run 23.5.2017 debugged [19] [20] [21]
- Model run 24.5.2017 TEQdx, TECpcb -> PCDDF, PCB [22]
- Model run 11.10.2017 with small and large herring [23] (removed in update)
- Model run 12.3.2018: bugs fixed with data used in Bayes. In addition, redundant fish species removed and Omega assumed to be the same for herring and salmon. [24]
- Model run 22.3.2018 [25] Model does not mix well. Use thinning?
Warning messages: 1: In reshapeWide(data, idvar = idvar, timevar = timevar, varying = varying, : multiple rows match for Compound=PCDDF: first taken 2: In reshapeWide(data, idvar = idvar, timevar = timevar, varying = varying, : multiple rows match for Compound=PCB: first taken Error in jags.model(mod, data = list(S = nrow(eu3), C = C, Fi = Fi, cong = log(cong), : RUNTIME ERROR: Compilation error on line 5. Index out of range taking subset of cong
Initiate conc_pcddf
- Model run 19.5.2017 [26]
- Model run 23.5.2017 with bugs fixed [27]
- Model run 12.10.2017: TEQ calculation added [28]
- Model rerun 15.11.2017 because the previous stored run was lost in update [29]
- 12.3.2018 adjusted to match the same Omega for all fish species [30]
⇤--#: . These codes should be coherent with POPs in Baltic herring. --Jouni (talk) 12:14, 7 June 2017 (UTC) (type: truth; paradigms: science: attack)
See also
References
- ↑ A. Hallikainen, H. Kiviranta, P. Isosaari, T. Vartiainen, R. Parmanne, P.J. Vuorinen: Kotimaisen järvi- ja merikalan dioksiinien, furaanien, dioksiinien kaltaisten PCB-yhdisteiden ja polybromattujen difenyylieettereiden pitoisuudet. Elintarvikeviraston julkaisuja 1/2004. [1]
- ↑ E-R.Venäläinen, A. Hallikainen, R. Parmanne, P.J. Vuorinen: Kotimaisen järvi- ja merikalan raskasmetallipitoisuudet. Elintarvikeviraston julkaisuja 3/2004. [2]
- ↑ Anja Hallikainen, Riikka Airaksinen, Panu Rantakokko, Jani Koponen, Jaakko Mannio, Pekka J. Vuorinen, Timo Jääskeläinen, Hannu Kiviranta. Itämeren kalan ja muun kotimaisen kalan ympäristömyrkyt: PCDD/F-, PCB-, PBDE-, PFC- ja OT-yhdisteet. Eviran tutkimuksia 2/2011. ISSN 1797-2981 ISBN 978-952-225-083-4 [3]