Lung cancer cases due to radon in Europe: Difference between revisions

From Opasnet
Jump to navigation Jump to search
(→‎An alternative code for Finland: code cleaned, functions moved to OpasnetBaseUtils)
Line 54: Line 54:
This code uses the summary table approach for obtaining data. The data sources are the same except [[ERF for long-term indoor exposure to radon and lung cancer]] (summary table [[:Category:Exposure-response functions]]) and [[Exposure to indoor radon in Finland]] (summary table [[:Category:Exposures]]).
This code uses the summary table approach for obtaining data. The data sources are the same except [[ERF for long-term indoor exposure to radon and lung cancer]] (summary table [[:Category:Exposure-response functions]]) and [[Exposure to indoor radon in Finland]] (summary table [[:Category:Exposures]]).


<rcode include="page:OpasnetBaseUtils|name:generic">
<rcode include="page:OpasnetBaseUtils|name:generic" variables="
 
name:show|description:Which exposure parameters do you want to see?|type:checkbox|options:1;Actual population average in Finland;2;Guidance value for new apartments;3;Guidance value for old apartments|default:1;2;3
############ tidy: a function that cleans the tables from Opasnet Base
">
# data is a table from op_baseGetData function
tidy <- function (data) {
data$Result <- ifelse(!is.na(data$Result.Text), as.character(data$Result.Text), data$Result)
data <- data[data$Observation != "Description", !colnames(data) %in% c("id", "obs", "Result.Text")]
return(data)
}
 
############### Bring parts of summary table
#  data is the summary table.
summary.bring <- function(data){
pages <- levels(data$Page)
 
## temp contains the additional information that is not on the actual data table.
temp <- data[data$Observation != "Description", !colnames(data) %in% c("Result", "Observation")]
temp <- reshape(temp, idvar = "Page", timevar = "Index", direction = "wide")
colnames(temp) <- ifelse(substr(colnames(temp), 1, 12) == "Result.Text.", substr(colnames(temp), 13, 50), colnames(temp))
 
## Get all data tables one at a time and combine them.
for(i in 1:length(pages)){
out <- op_baseGetData("opasnet_base", pages[i])
out <- tidy(out)
cols <- colnames(out)[!colnames(out) %in% c("Observation", "Result")]
out <- reshape(out, timevar = "Observation", idvar = cols, direction = "wide")
colnames(out) <- ifelse(substr(colnames(out), 1, 7) == "Result.", substr(colnames(out), 8, 50), colnames(out))
 
out <- merge(temp[temp$Page == pages[i], colnames(temp) != "Page"], out)
 
## Check that all data tables have all the same columns before you combine them with rbind.
if(i == 1){out2 <- out} else {
addcol <- colnames(out2)[!colnames(out2) %in% colnames(out)]
if(length(addcol) > 0) {
temp <- as.data.frame(array("*", dim = c(1,length(addcol))))
colnames(temp) <- addcol
out <- merge(out, temp)}
addcol <- colnames(out)[!colnames(out) %in% colnames(out2)]
if(length(addcol) > 0) {
temp <- as.data.frame(array("*", dim = c(1,length(addcol))))
colnames(temp) <- addcol
out2 <- merge(out2, temp)}
 
## Combine data tables.
out2 <- rbind(out2, out)}
}
return(out2)
}
##########


cat("Get data from Opasnet Base.\n")
cat("Get data from Opasnet Base.\n")
Line 109: Line 62:
library(OpasnetBaseUtils)
library(OpasnetBaseUtils)
library(xtable)
library(xtable)
conc <- op_baseGetData("opasnet_base", "Op_en1619")[, -c(1,2)] # Summary table Category:Exposures
 
#pop <- op_baseGetData("opasnet_base", "Op_en4691", include = 1367, exclude = c(1435, 1436))[, -c(1,2)] #
conc <- op_baseGetData("opasnet_base", "Op_en1619") # Summary table Category:Exposures
erf <- op_baseGetData("opasnet_base", "Op_en1914")[, -c(1,2)] # Summary table Category:Exposure-response functions
erf <- op_baseGetData("opasnet_base", "Op_en1914") # Summary table Category:Exposure-response functions


cat("Adjust data for the model.\n")
cat("Adjust data for the model.\n")


conc <- summary.bring(conc)
conc <- summary.bring(conc)[show, ]
print(xtable(conc), type = 'html')
 
erf <- summary.bring(erf)
erf <- summary.bring(erf)
colnames(conc)[colnames(conc) == "result"] <- "Exposure"
colnames(erf)[colnames(erf) == "result"] <- "ERF"
print(xtable(conc), type = 'html')
print(xtable(erf), type = 'html')
print(xtable(erf), type = 'html')


Line 126: Line 77:
print(xtable(out), type = 'html')
print(xtable(out), type = 'html')


countries <- c("Austria", "Belgium", "Bulgaria", "Switzerland", "Cyprus", "Czech Republic", "Germany", "Denmark", "Estonia", "Spain",
out$ERF <- as.numeric(substr(out$ERF, 1, 6))
"Finland", "France", "Greece", "Hungary", "Ireland", "Iceland", "Italy", "Lithuania", "Luxembourg", "Latvia", "Malta", "Netherlands",
out$Exposure <- as.numeric(substr(out$Exposure, 1, 3))
"Norway", "Poland", "Portugal", "Romania", "Sweden", "Slowenia", "Slovakia", "United Kingdom")
levels(pop[,"CountryID"]) <- countries #Country IDs converted to names for compatibility
colnames(pop)[4] <- "Country"
colnames(pop)[7] <- "Population"


cat("Run the actual model.\n")
cat("Run the actual model.\n")


out$out <- out$ERF * out$Exposure
out$Background <- 58.2 / 100000
 
out$Population <- 5000000
#concarray <- DataframeToArray(conc)
#popxconc <- IntArray(pop, concarray, "Concentration")#[1:1000,,,]
#erfarray <- DataframeToArray(erf[,c("obs","Result")])
#popxconcxerf <- IntArray(popxconc, erfarray, "ERF")
#lungmortality <- data.frame(popxconcxerf[,c("obs","Country","policy","Year","Age","Sex")], Result = popxconcxerf[,"ERF"] * 58.2 *
#popxconcxerf[,"Concentration"] / 100 * popxconcxerf[, "Population"] / 100000)
 


out$Out <- (out$ERF - 1) / out$ERF * out$Exposure * out$Background * out$Population
print(xtable(out), type = 'html')


</rcode>
</rcode>

Revision as of 22:09, 2 January 2012


Scope

Mortality due to indoor radon concentrations.

  • Spatial: Europe
  • Temporal: years 2010-2050

Definition

  • Lung cancer cases calculated from radon concentration using <math>cases = relative risk * background rate of cases * concentration * population</math>. RR taken from HEIMTSA and INTARESE (Darby 2004; Darby 2005).
    • Background rate of new lung cancers is assumed constant for the whole Europe: 58.2 cases per 100,000 population (Globocan 2008, crude rate).
    • Linear no threshold model assumed.
    • In a given iteration, radon concentrations are assumed equal in all residences in a country.

Data

Dependencies

Unit

cases per year

Formula

+ Show code

An alternative code for Finland

This code uses the summary table approach for obtaining data. The data sources are the same except ERF for long-term indoor exposure to radon and lung cancer (summary table Category:Exposure-response functions) and Exposure to indoor radon in Finland (summary table Category:Exposures).

Which exposure parameters do you want to see?:
Actual population average in Finland
Guidance value for new apartments
Guidance value for old apartments

+ Show code

Result

{{#opasnet_base_link:Op_en4715}}


Lung cancer cases in Europe due to indoor radon in residences (mean and 95% confidence interval).
Year
Policy 2010 2020 2030 2050
BAU 42691 (22042-95542) 51138 (24733-111979) 57618 (25785-137181) 62461 (27023-143632)
All NA 53385 (25402-130453) 68338 (28863-171718) 81873 (31372-239696)
Biomass NA NA NA 81849 (32497-218247)
Insulation NA NA NA 80534 (32445-236962)
Renovation NA NA NA 94075 (35396-288323)
Lung cancer cases attributable to indoor radon in residences in Europe, year 2010.
Country of observation Mean SD
Austria 1105 1146
Belgium 857 796
Bulgaria 303 382
Switzerland 1636 2835
Cyprus 10 14
Germany 4754 4305
Denmark 382 408
Estonia 222 239
Spain 8245 15249
Finland 805 792
France 8204 12176
Greece 857 977
Hungary 1583 1985
Ireland 533 580
Italy 5035 5117
Lithuania 223 233
Luxembourg 68 64
Latvia 229 289
Malta 43 50
Netherlands 504 338
Norway 566 667
Poland 2175 1864
Portugal 1183 1208
Romania 1233 1357
Sweden 1353 1475
Slovakia 586 661
Total 42691

See also

Keywords

References


Related files

<mfanonymousfilelist></mfanonymousfilelist>