Dataset was compiled through a systematic review process
# install.packages("tidyverse")
# install.packages("meta")
# install.packages("metafor")
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.4.4
## -- Attaching packages --------------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 2.2.1 v purrr 0.2.5
## v tibble 1.4.2 v dplyr 0.7.5
## v tidyr 0.8.1 v stringr 1.3.1
## v readr 1.1.1 v forcats 0.3.0
## Warning: package 'tibble' was built under R version 3.4.4
## Warning: package 'tidyr' was built under R version 3.4.4
## Warning: package 'readr' was built under R version 3.4.4
## Warning: package 'purrr' was built under R version 3.4.4
## Warning: package 'dplyr' was built under R version 3.4.4
## Warning: package 'stringr' was built under R version 3.4.4
## Warning: package 'forcats' was built under R version 3.4.4
## -- Conflicts ------------------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(meta)
## Warning: package 'meta' was built under R version 3.4.4
## Loading 'meta' package (version 4.9-2).
## Type 'help(meta)' for a brief overview.
library(metafor)
## Warning: package 'metafor' was built under R version 3.4.4
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following object is masked from 'package:tidyr':
##
## expand
## Loading 'metafor' package (version 2.0-0). For an overview
## and introduction to the package please type: help(metafor).
##
## Attaching package: 'metafor'
## The following objects are masked from 'package:meta':
##
## baujat, forest, funnel, funnel.default, labbe, radial,
## trimfill
hidedata <- read.csv("Hide_Data.csv", sep="," , header=T, fill=T, na.string=" ")
head(hidedata,10)
## ID Study Study.setting Study.design Cattle Sample.Type
## 1 1 Dewell 2008a Commercial Cross sectional Fed beef Hide-Farm
## 2 2 Renter 2008a Commercial Cross sectional Fed beef Hide-Farm
## 3 3 Arthur 2007Ca Commercial Cross sectional Fed beef Hide-Farm
## 4 4 Arthur 2007Cb Commercial Cross sectional Fed beef Hide-Farm
## 5 5 Arthur 2007Cc Commercial Cross sectional Fed beef Hide-Farm
## 6 6 Arthur 2008c Commercial Cross sectional Fed beef Hide-Farm
## 7 7 Arthur 2008e Commercial Cross sectional Fed beef Hide-Farm
## 8 8 Arthur 2008b Commercial Cross sectional Fed beef Hide-Farm
## 9 9 Arthur 2008d commercial Cross sectional Fed beef Hide-Farm
## 10 10 Arthur 2008a commercial Cross sectional Fed beef Hide-Farm
## Area.Swab.cm2. Number.Sample Number.Positive Prevalence Country
## 1 <1000 785 48 0.06110000 USA
## 2 <1000 1040 42 0.04038461 Canada
## 3 >1000 81 23 0.28400000 USA
## 4 >1000 149 109 0.73150000 USA
## 5 >1000 56 12 0.21430000 USA
## 6 >1000 94 73 0.77660000 USA
## 7 >1000 87 67 0.77010000 USA
## 8 >1000 97 62 0.63920000 USA
## 9 >1000 88 67 0.76140000 USA
## 10 >1000 128 54 0.42190000 USA
## Serotype Season
## 1 O157 Summer
## 2 O157 H7 Summer
## 3 O157 H7 Summer
## 4 O157 H7 Summer
## 5 O157 H7 Summer
## 6 O157 H7 Summer
## 7 O157 H7 Summer
## 8 O157 H7 Summer
## 9 O157 H7 Summer
## 10 O157 H7 Summer
Look at data loaded as “hidedata”
glimpse(hidedata)
## Observations: 25
## Variables: 13
## $ ID <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,...
## $ Study <fct> Dewell 2008a, Renter 2008a, Arthur 2007Ca, Art...
## $ Study.setting <fct> Commercial, Commercial, Commercial, Commercial...
## $ Study.design <fct> Cross sectional, Cross sectional, Cross sectio...
## $ Cattle <fct> Fed beef, Fed beef, Fed beef, Fed beef, Fed be...
## $ Sample.Type <fct> Hide-Farm, Hide-Farm, Hide-Farm, Hide-Farm, Hi...
## $ Area.Swab.cm2. <fct> <1000, <1000, >1000, >1000, >1000, >1000, >100...
## $ Number.Sample <int> 785, 1040, 81, 149, 56, 94, 87, 97, 88, 128, 3...
## $ Number.Positive <int> 48, 42, 23, 109, 12, 73, 67, 62, 67, 54, 31, 4...
## $ Prevalence <dbl> 0.06110000, 0.04038461, 0.28400000, 0.73150000...
## $ Country <fct> USA, Canada, USA, USA, USA, USA, USA, USA, USA...
## $ Serotype <fct> O157 , O157 H7, O157 H7, O157 H7, O157 H7, O1...
## $ Season <fct> Summer, Summer, Summer, Summer, Summer, Summer...
Replace the variable names in the dataset
names(hidedata) <- c("ID", "StudyName", "StudySetting", "StudyDesign", "CattleType", "SampleType", "AreaSwab",
"NumSample", "NumPositive", "PropPositive", "Country", "Serotype", "Season")
glimpse(hidedata)
## Observations: 25
## Variables: 13
## $ ID <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15...
## $ StudyName <fct> Dewell 2008a, Renter 2008a, Arthur 2007Ca, Arthur...
## $ StudySetting <fct> Commercial, Commercial, Commercial, Commercial, C...
## $ StudyDesign <fct> Cross sectional, Cross sectional, Cross sectional...
## $ CattleType <fct> Fed beef, Fed beef, Fed beef, Fed beef, Fed beef,...
## $ SampleType <fct> Hide-Farm, Hide-Farm, Hide-Farm, Hide-Farm, Hide-...
## $ AreaSwab <fct> <1000, <1000, >1000, >1000, >1000, >1000, >1000, ...
## $ NumSample <int> 785, 1040, 81, 149, 56, 94, 87, 97, 88, 128, 38, ...
## $ NumPositive <int> 48, 42, 23, 109, 12, 73, 67, 62, 67, 54, 31, 49, ...
## $ PropPositive <dbl> 0.06110000, 0.04038461, 0.28400000, 0.73150000, 0...
## $ Country <fct> USA, Canada, USA, USA, USA, USA, USA, USA, USA, U...
## $ Serotype <fct> O157 , O157 H7, O157 H7, O157 H7, O157 H7, O157 ...
## $ Season <fct> Summer, Summer, Summer, Summer, Summer, Summer, S...
str(hidedata)
## 'data.frame': 25 obs. of 13 variables:
## $ ID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ StudyName : Factor w/ 25 levels "Arthur 2007Ca",..: 20 25 1 2 3 6 8 5 7 4 ...
## $ StudySetting: Factor w/ 3 levels "commercial","Commercial",..: 2 2 2 2 2 2 2 2 1 1 ...
## $ StudyDesign : Factor w/ 2 levels "Cross sectional",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ CattleType : Factor w/ 2 levels "Cull dairy","Fed beef": 2 2 2 2 2 2 2 2 2 2 ...
## $ SampleType : Factor w/ 2 levels "Hide-Farm","Hide-Plant": 1 1 1 1 1 1 1 1 1 1 ...
## $ AreaSwab : Factor w/ 2 levels "<1000",">1000": 1 1 2 2 2 2 2 2 2 2 ...
## $ NumSample : int 785 1040 81 149 56 94 87 97 88 128 ...
## $ NumPositive : int 48 42 23 109 12 73 67 62 67 54 ...
## $ PropPositive: num 0.0611 0.0404 0.284 0.7315 0.2143 ...
## $ Country : Factor w/ 2 levels "Canada","USA": 2 1 2 2 2 2 2 2 2 2 ...
## $ Serotype : Factor w/ 2 levels "O157 ","O157 H7": 1 2 2 2 2 2 2 2 2 2 ...
## $ Season : Factor w/ 2 levels "Summer","Winter": 1 1 1 1 1 1 1 1 1 1 ...
Let’s take a look at the summary of the data
summary(hidedata)
## ID StudyName StudySetting
## Min. : 1 Arthur 2007Ca: 1 commercial :14
## 1st Qu.: 7 Arthur 2007Cb: 1 Commercial : 8
## Median :13 Arthur 2007Cc: 1 Research facility: 3
## Mean :13 Arthur 2008a : 1
## 3rd Qu.:19 Arthur 2008b : 1
## Max. :25 Arthur 2008c : 1
## (Other) :19
## StudyDesign CattleType SampleType AreaSwab
## Cross sectional:24 Cull dairy:10 Hide-Farm :15 <1000: 2
## Field trial : 1 Fed beef :15 Hide-Plant:10 >1000:23
##
##
##
##
##
## NumSample NumPositive PropPositive Country
## Min. : 38.0 Min. : 10.00 Min. : 0.04038 Canada: 1
## 1st Qu.: 88.0 1st Qu.: 41.00 1st Qu.: 0.42190 USA :24
## Median : 190.0 Median : 62.00 Median : 0.81580
## Mean : 245.6 Mean : 88.44 Mean :19.03301
## 3rd Qu.: 190.0 3rd Qu.: 99.00 3rd Qu.:33.15789
## Max. :1040.0 Max. :423.00 Max. :90.00000
##
## Serotype Season
## O157 : 1 Summer:20
## O157 H7:24 Winter: 5
##
##
##
##
##
The variable “StudySetting” is suppose to have 2 levels - “Commercial” & “Research Facility”
convert <- which(hidedata$StudySetting =="commercial")
hidedata$StudySetting[convert] <- "Commercial"
summary(hidedata$StudySetting)
## commercial Commercial Research facility
## 0 22 3
Let’s get rid of the empty factor level ‘commercial’
hidedata$StudySetting <- droplevels(hidedata$StudySetting)
summary(hidedata$StudySetting)
## Commercial Research facility
## 22 3
Categorical data
par(mfrow = c(2,4))
barplot(Serotype <- table(hidedata$StudySetting))
barplot(Serotype <- table(hidedata$StudyDesign))
barplot(Serotype <- table(hidedata$CattleType))
barplot(Serotype <- table(hidedata$SampleType))
barplot(Serotype <- table(hidedata$AreaSwab))
barplot(Serotype <- table(hidedata$Country))
barplot(Serotype <- table(hidedata$Serotype))
barplot(Serotype <- table(hidedata$Season))
Numeric data
par(mfrow = c(1,3))
hist(hidedata$NumSample)
hist(hidedata$NumPositive)
hist(hidedata$PropPositive)
A priori we believe proportion positive differ by CattleType, SampleType and Season. Take a subset of data for fed beef sampled at the farm ‘Hide-farm’
hidedata_FB_Farm <- subset(hidedata, CattleType=="Fed beef" & SampleType=="Hide-Farm" & Season=="Summer")
dim(hidedata_FB_Farm)
## [1] 15 13
# E. coli on hide for fed beef sampled at feedlot
hidemeta_FB_Farm_S <- metaprop(NumPositive, NumSample, studlab=StudyName, sm="PFT", data=hidedata_FB_Farm, method="Inverse", method.tau="DL")
summary(hidemeta_FB_Farm_S)
## Number of studies combined: k = 15
##
## proportion 95%-CI z p-value
## Fixed effect model 0.2085 [0.1942; 0.2232] -- --
## Random effects model 0.5198 [0.3136; 0.7226] -- --
##
## Quantifying heterogeneity:
## tau^2 = 0.1668; H = 10.98 [10.04; 12.00]; I^2 = 99.2% [99.0%; 99.3%]
##
## Test of heterogeneity:
## Q d.f. p-value
## 1686.83 14 0
##
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
## - Freeman-Tukey double arcsine transformation
## - Clopper-Pearson confidence interval for individual studies
# Summary effect measure obtained from random effect model only
forest.meta(hidemeta_FB_Farm_S, layout="RevMan5", xlab="Proportion", comb.r=T, comb.f=F, xlim = c(0,1), fontsize=10, digits=3)
Assessment for small study effects
funnel.meta(hidemeta_FB_Farm_S)
metabias(hidemeta_FB_Farm_S)
##
## Linear regression test of funnel plot asymmetry
##
## data: hidemeta_FB_Farm_S
## t = 5.5885, df = 13, p-value = 8.794e-05
## alternative hypothesis: asymmetry in funnel plot
## sample estimates:
## bias se.bias slope
## 17.40489745 3.11441116 -0.04128047
metareg(hidemeta_FB_Farm_S, ~ StudyDesign)
##
## Mixed-Effects Model (k = 15; tau^2 estimator: DL)
##
## tau^2 (estimated amount of residual heterogeneity): 0.1876 (SE = 0.1231)
## tau (square root of estimated tau^2 value): 0.4331
## I^2 (residual heterogeneity / unaccounted variability): 99.23%
## H^2 (unaccounted variability / sampling variability): 129.46
## R^2 (amount of heterogeneity accounted for): 0.00%
##
## Test for Residual Heterogeneity:
## QE(df = 13) = 1682.9844, p-val < .0001
##
## Test of Moderators (coefficient(s) 2):
## QM(df = 1) = 0.8491, p-val = 0.3568
##
## Model Results:
##
## estimate se zval pval ci.lb ci.ub
## intrcpt 0.8331 0.1166 7.1421 <.0001 0.6044 1.0617
## StudyDesignField trial -0.4143 0.4496 -0.9215 0.3568 -1.2956 0.4669
##
## intrcpt ***
## StudyDesignField trial
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
metareg(hidemeta_FB_Farm_S, ~ StudySetting)
##
## Mixed-Effects Model (k = 15; tau^2 estimator: DL)
##
## tau^2 (estimated amount of residual heterogeneity): 0.1366 (SE = 0.0862)
## tau (square root of estimated tau^2 value): 0.3696
## I^2 (residual heterogeneity / unaccounted variability): 99.02%
## H^2 (unaccounted variability / sampling variability): 101.60
## R^2 (amount of heterogeneity accounted for): 18.10%
##
## Test for Residual Heterogeneity:
## QE(df = 13) = 1320.8590, p-val < .0001
##
## Test of Moderators (coefficient(s) 2):
## QM(df = 1) = 1.8546, p-val = 0.1732
##
## Model Results:
##
## estimate se zval pval ci.lb
## intrcpt 0.7393 0.1077 6.8665 <.0001 0.5283
## StudySettingResearch facility 0.3292 0.2418 1.3618 0.1732 -0.1446
## ci.ub
## intrcpt 0.9503 ***
## StudySettingResearch facility 0.8031
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
metareg(hidemeta_FB_Farm_S, ~ AreaSwab)
##
## Mixed-Effects Model (k = 15; tau^2 estimator: DL)
##
## tau^2 (estimated amount of residual heterogeneity): 0.0645 (SE = 0.0435)
## tau (square root of estimated tau^2 value): 0.2539
## I^2 (residual heterogeneity / unaccounted variability): 97.60%
## H^2 (unaccounted variability / sampling variability): 41.64
## R^2 (amount of heterogeneity accounted for): 61.35%
##
## Test for Residual Heterogeneity:
## QE(df = 13) = 541.3725, p-val < .0001
##
## Test of Moderators (coefficient(s) 2):
## QM(df = 1) = 11.8529, p-val = 0.0006
##
## Model Results:
##
## estimate se zval pval ci.lb ci.ub
## intrcpt 0.2272 0.1799 1.2628 0.2067 -0.1255 0.5799
## AreaSwab>1000 0.6674 0.1939 3.4428 0.0006 0.2875 1.0474 ***
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
metareg(hidemeta_FB_Farm_S, ~ Country)
##
## Mixed-Effects Model (k = 15; tau^2 estimator: DL)
##
## tau^2 (estimated amount of residual heterogeneity): 0.1779 (SE = 0.0979)
## tau (square root of estimated tau^2 value): 0.4218
## I^2 (residual heterogeneity / unaccounted variability): 98.93%
## H^2 (unaccounted variability / sampling variability): 93.43
## R^2 (amount of heterogeneity accounted for): 0.00%
##
## Test for Residual Heterogeneity:
## QE(df = 13) = 1214.5327, p-val < .0001
##
## Test of Moderators (coefficient(s) 2):
## QM(df = 1) = 2.1794, p-val = 0.1399
##
## Model Results:
##
## estimate se zval pval ci.lb ci.ub
## intrcpt 0.2035 0.4221 0.4821 0.6298 -0.6238 1.0307
## CountryUSA 0.6453 0.4371 1.4763 0.1399 -0.2114 1.5020
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
metareg(hidemeta_FB_Farm_S, ~ Serotype)
##
## Mixed-Effects Model (k = 15; tau^2 estimator: DL)
##
## tau^2 (estimated amount of residual heterogeneity): 0.2041 (SE = 0.1193)
## tau (square root of estimated tau^2 value): 0.4518
## I^2 (residual heterogeneity / unaccounted variability): 99.12%
## H^2 (unaccounted variability / sampling variability): 113.07
## R^2 (amount of heterogeneity accounted for): 0.00%
##
## Test for Residual Heterogeneity:
## QE(df = 13) = 1469.8669, p-val < .0001
##
## Test of Moderators (coefficient(s) 2):
## QM(df = 1) = 1.6116, p-val = 0.2043
##
## Model Results:
##
## estimate se zval pval ci.lb ci.ub
## intrcpt 0.2510 0.4521 0.5552 0.5787 -0.6351 1.1372
## SerotypeO157 H7 0.5944 0.4682 1.2695 0.2043 -0.3233 1.5120
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
metareg(hidemeta_FB_Farm_S, ~ StudySetting + AreaSwab + Country)
##
## Mixed-Effects Model (k = 15; tau^2 estimator: DL)
##
## tau^2 (estimated amount of residual heterogeneity): 0.1052 (SE = 0.0508)
## tau (square root of estimated tau^2 value): 0.3244
## I^2 (residual heterogeneity / unaccounted variability): 97.61%
## H^2 (unaccounted variability / sampling variability): 41.84
## R^2 (amount of heterogeneity accounted for): 36.91%
##
## Test for Residual Heterogeneity:
## QE(df = 11) = 460.2710, p-val < .0001
##
## Test of Moderators (coefficient(s) 2:4):
## QM(df = 3) = 8.3872, p-val = 0.0387
##
## Model Results:
##
## estimate se zval pval ci.lb
## intrcpt 0.2035 0.3248 0.6264 0.5310 -0.4331
## StudySettingResearch facility 0.2253 0.2173 1.0370 0.2997 -0.2005
## AreaSwab>1000 0.5925 0.3411 1.7368 0.0824 -0.0761
## CountryUSA 0.0476 0.4594 0.1036 0.9175 -0.8528
## ci.ub
## intrcpt 0.8400
## StudySettingResearch facility 0.6512
## AreaSwab>1000 1.2611 .
## CountryUSA 0.9480
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Details of the systematic review and meta-analysis process and results was published here. Ekong P.S., Sanderson M.W., Cernicchiaro N., 2015. Prevalence and concentration of Escherichia coli O157 in different seasons and cattle types processed in North America: A systematic review and meta-analysis of published research. Prev. Vet. Med. 121, 74â“85