Introduction

We can grade a given aspect of water quality on shrimp welfare by observing the effect of staying within a given range. Mirroring Pedrazzani et al.’s (2023) welfare scores 1, 2, and 3, we define three range categories:

There is inevitable fuzziness in these range categories. Theoretically, the optimal range for, say, salinity may be extremely narrow, but deviations from it cause welfare only very minor welfare issues. Heterogeneity within a range category is ignored. Similarly, the “normal” range of variability for wild shrimp populations is not always well-understood, and may be changing over time. Finally, different authors report different ranges as optimal.

These range categories also hold the other aspects of water quality constant. In reality, different aspects of water quality can interact with each other to affect welfare.

Below, we estimate what percentage of shrimp farms routinely check water quality, and whether they keep water quality at (a) an optimal level or (b) at least a suboptimal level. We focused on five aspects of water quality that are particularly fundamental to shrimp aquaculture: dissolved oxygen, salinity, pH, temperature, and (un-ionized) ammonia. We examined data on two penaeid species that make up the bulk of farmed shrimp, P. vannamei and P. monodon. We deferred to recommendations for P. vannamei because they the ranges were broadly similar.

We begin by loading relevant packages.

library(Hmisc)
library(tidyverse)
library(truncnorm)
library(meta)

Datasets

We extracted data from sources we were aware of that had surveyed water quality on actual commercial operations.

Lin & Drazba (2006)

Lin and Drazba (2006) reports the results of the 2001 Global Shrimp Operating Procedures Survey. The section on water quality had 209 respondents (p. 78), though some items appeared to contain non-response. 176 respondents are from the Eastern Hemisphere and 33 from West. In line with generalizations in Boyd et al., we assume that all farmers from the East raised P. monodon and that all farmers in the West raised P. vannamei. Results are presented as counts in bar charts, from which we extracted numeric values using DigitizeIt. This survey may be outdated. For example, P. vannamei has skyrocketed as the species of choice since the early 2000s. Moreover, it may even be non-representative of common practices in 2001, as we were not able to find information on how they chose their sampling frame or what determined who opted in to the water. China was not represented, and Thailand was underrepresented (p. 30). Although the authors do not explicitly state what types of ponds the farmers manage, we assume here that they are all ongrowing ponds because the ongrowing cycle is mentioned twice in the chapter, whereas other stages are not mentioned.

#DigitizeIt estimates were usually not integers, so I rounded them.

###figure 4, Minimum Salinity (ppt) of pond water
lindrazba_salinity<-data.frame(
salinity_category = c("Less Than 2", "2-5", "6-10", "11-20", "21-30", "31-40"),
farms_east= c(round(14.5), round(41.7), round(63.3),round(34.7),round(13.8),round(0)),
farms_west= c(round(7.03), round(5.37), round(3.28),round(7.03),round(5.91),round(3.85)))
rownames(lindrazba_salinity)<- lindrazba_salinity$salinity_category
lindrazba_salinity
###figure 5, Lowest early-morning Dissolved Oxygen Concentration (mg/L) in pond water
lindrazba_do<-data.frame(
do_category = c("Less than 1", "1-2", "2-3", "3-4", "More than 4"),
farms_east= c(round(2.79),round(21.2),round(57.2),round(60.9),round(25.1)),
farms_west = c(round(0),round(8.35),round(4.96),round(11.1),round(3.76)))
rownames(lindrazba_do)<- lindrazba_do$do_category
lindrazba_do
#No data presented on pH, but page 81 says:
#"The pH range in most pond water was 7 to 9, and higher pH (8 to 9) was more prevalent in the West than the East."

# Water temperature is discussed on page 79:
# "In this survey, the minimum daily temperature ranged from 21 to 25 degrees during the cool season. 
# The maximum daily temperature varied from 31 to 35 degrees in
# the warm season for the majority of ponds in both hemispheres."

#Un-ionized ammonia data not available either.

Venkateswarlu et al. (2019)

Between February and June 2019, Venkateswarlu et al. (2019) measured water quality at 80 semi-intensive P. vannamei growout farms in each of four districts in Andhra Pradesh, India. Measurements were conducted between 6 and 7 AM, when dissolved oxygen might be close to a daily low. The summary statistics were broken down by district; we will average across districts when reporting compliance within optimum ranges.

#We retrieved descriptive statistics from Table 2.
venka <- data.frame(District = c("Guntar", "Krishna","WestGodavari","EastGodavari"),
                    SampleSize = c(80,80,80,80),
                    DOm = c(5.37,5.44,5.78,6.16),
                    DOsd = c(1.09, 1.05, 1.19, 2.89),
                    pHm = c(7.86, 7.88 ,7.67, 7.91),
                    pHsd = c(1.2, 1.4, 1.5, 1.4),
                    Salinitym = c(24.46, 25.74, 16.66, 13.43),
                    Salinitysd = c(3.85,2.93,2.97,3.77),
                    Tempm = c(28.62, 27.18, 24.47, 24.97),
                    Tempsd = c(2.78, 2.42, 1.86, 2.19))
rownames(venka)<- venka$District #Assign district as row names to call cells using name indexing later
venka

Hukom et al. (2020)

Between October 2017 and June 2018, Hukom et al. (2020) studied 183 farms on Java Island, Indonesia. Some farmed P. vannamei and others farmed P. monodon. The farms are apparently all extensive, though Hukom et al. (2020) draw a distinction between “traditional” and “traditional plus.” The latter type of farms adds feed to the ponds. Farms where shrimp made up less than 40% of the production value were excluded from the sample. Because high mortality reduces the value of shrimps, this decision may have biased the sample towards farms with higher water quality standards. Because the farms are extensive, we assume that the farms either do not separate shrimps by life-stage or at least include juveniles and adults.

##Descriptive statistics from Table 3
hukom <- data.frame(FarmType = c("TradVannamei", "TradPlusVannamei","TradMonodon","TradPlusMonodon"),
                    SampleSize = c(58,38,71,16),
                    DOm = c(5.04,3.48,4.82,3.53),
                    DOsd = c(1.26, 1.34, 1.22, 1.33),
                    pHm = c(7.99, 7.84 ,8.34, 8.64),
                    pHsd = c(0.67, 0.61, 0.54, 0.46),
                    Salinitym = c(14.16, 11.05, 20.07, 20.25),
                    Salinitysd = c(7.24,8.89,5.52,3.07),
                    Tempm = c(30.07, 29.82, 31.00, 30.44),
                    Tempsd = c(2.54, 1.83, 1.85, 1.26))
rownames(hukom)<- hukom$FarmType #Assign farm type as row names to call cells using name indexing later
hukom

Chowdhury et al. (2011)

Chowdhury et al. (2011) studied 5 shrimp-rice and 7 shrimp-only extensive farms in southwestern Bangladesh on a monthly basis from Feburary to October 2008 (p. 1195). The farms contained penaeid shrimp (p. 1201), but the specific species were not specified. We reached out to the corresponding author but did not receive a response. We assume that the shrimp are P. Monodon given the popularity of this species among farms in Bangladesh (Ali et el., 2022).

The summary statistics are aggregated across farms of the same type. Since we do not have access to the raw data, we cannot model the clustering in the data.

##Descriptive statistics from Table 3
chowdhury<- data.frame(FarmType = c("Shrimp-Rice", "Shrimp-Only"),
                    SampleSize = c(27, 40),
                    DOm = c(6.27, 5.64),
                    DOsd = c(1.79, 2.42),
                    pHm = c(8.06,7.83),
                    pHsd = c(0.83,0.63),
                    Salinitym = c(8.18,8.24),
                    Salinitysd = c(5.28,6.37),
                    Tempm = c(29,28.68),
                    Tempsd = c(2.46,2.59))
rownames(chowdhury)<- chowdhury$FarmType 
chowdhury

Sivaraman et al. (2019)

Sivaraman et al. (2019) conducted a “farm-level survey covering 300 small farmers from East Godavari and Nellore districts…during May-July 2013…Face-to-face interviews were conducted either at home or on-farm site using a pre-tested interview schedule, which included queries related to the socio-economic status and production practices; more specifically, the farmers were asked whether they had adopted each of the BMPs [Better Management Practices]” (p. 3).

The items asked whether farmers “maintain” certain water quality parameters without specifying how often that standard must be maintained. The ambiguity of what it requires, combined with the self-report method, likely paints an overly optimistic picture of what like water quality is like on farms at any given time. On the other hand, the ranges the authors asked about were more stringent than our requirements for optimal water quality. Also, one item asked about both salinity and pH, so presumably farmers only endorsed it if they maintained both optimal pH and salinity.

The survey questions imply that the farmers stocked P. Vannamei. The production type is not clearly specified, although based on the description of farmers and the practices they asked about, it is likely that they practiced some mix of extensive and semi-intensive farming.

#Table 1
# "Maintain pH between 7.5 and 8.5 and salinity between 15 and 25 ppt" 92.30%
# "Maintain adequate oxygen levels 5-7ppm 92.00%

#300 farmers * .92 compliance = 276 compliers
#300 farmers * .9230 compliance = 277 compliers


sivaraman<- data.frame(do_opt = 276,
                         ph_opt = 277,
                        salinity_opt = 277,
                       sample = 300)

Supriatna et al. (2017)

Supriatna et al. (2017) studied eight intensive growout P. Vannamei farms in East Java, Indonesia daily from May 2015 to December 2015. Each farm was studied “for about 100 days,” and water quality “was measured in the morning and during the day, except that dissolved oxygen was measured at 22:00 hours and every two hours near the shrimp harvest time” (p. 769). We interpret this to mean that water quality was measured on each farm ~200 times; although dissolved oxygen was apparently measured even more often, but as a simplification–as we don’t know when the more intensive measurement started– we used a sample size of 200 for all water quality parameters.

Because water quality of each farm was measured intensively and reported at the level of individual farms, we can estimate how many farms at a randomly selected time would be expected to have good water quality.

#DO is in Table 3, all other variables are in Table 1
supriatna<- data.frame(Farm = c("Pond 1", "Pond 2", "Pond 3", "Pond 4", "Pond 5", "Pond 6", "Pond 7", "Pond 8"),
                    SampleSize = c(200, 200, 200, 200, 200, 200, 200, 200),
                    DOm = c(4.82, 5.97, 4.76, 4.74, 4.77, 4.78, 4.76, 4.70),
                    DOsd = c(0.65, 0.44,0.46,0.39, 0.43, 0.58, 0.52, 0.36),
                    pHm = c(8.01, 7.86, 7.95, 7.89, 7.93, 7.98, 7.86, 7.95),
                    pHsd = c(0.39,0.35, 0.35, 0.37, 0.38, 0.36, 0.35, 0.39),
                    Salinitym = c(27.57,27.92,27.50, 28.21, 28.24, 27.30, 27.95, 27.69),
                    Salinitysd = c(0.99,1.35, 1.32, 1.21, 1.25, 1.49, 1.61, 1.22),
                    Tempm = c(26.35, 26.38, 26.38, 26.37,26.37, 26.34, 26.35, 26.37),
                    Tempsd = c(0.90, 0.90, 0.92, 0.88, 0.88, 0.96, 0.81, 0.82))
rownames(supriatna)<- supriatna$Farm
supriatna

Shrimp Welfare Project

India

Shrimp Welfare Project conducted a scoping report of shrimp aquaculture in India. The authors visited 20 farms in Andhra Pradesh, India in December 2021. We confirmed via personal correspondence that all the farms used P. Vannamei shrimp. 19 were earthen farms with stocking densities characteristic of semi-intensive farms, while one represented a typical intensive farm that used minimal water exchange. In terms of the sampling frame, the authors note the potential for selection bias: “there may be a correlation between willingness to allow visitors to take water quality readings and how well a certain farm is managed. I.e. the poorly managed farms may not have agreed to be visited” (p. 18). The authors also point out (p. 15) that water quality measurements were never made after sunset or before sunrise, where we would might expect dissolved oxygen to be at its lowest.

SWP_India <- data.frame(DO = c(4,8.2,5.4,5.3,4.82,4.6,5.8,5.2,7,6.2,4,5.5,5.6,6.8,5.2,4.6,6.2,6.2,6.3,6.5),
                    pH = c(8.2,8.4,8.1,8.2,8.8,8.2,8.2,7.3,8.2,7.8,8,8.5,7.8,8.8,7.7,8.7,8.1,8.4,8.4,8.1),
                    Salinity = c(6,5,7.69,6,6,4,8,10,6,10,5,4,5,7,10,9,7,13,25,10),
                    Temp = c(32,28,27.2,27.2,27.5,28,29,28,26,28,26,28,29,27,27,28,29,29,29,29),
                    Un_Ammonia = c(0.05,0,0.02,0,1,0,0,0,1,1,0.25,0.5,0,1,0,1,0,0.25,0,0))
Vietnam

Shrimp Welfare Project conducted a scoping project in Vietnam, which included a water quality assessment of 7 farms. They shared the raw data with us upon request, which we converted into long format. We also anonymized the names of the farmers.

The data here are from two semi-intensive farms, two super-intensive farms, and two intensive farms. (As described on page 18 of the report, they collected data from a third super-intensive farm, but the data collection method was different and is not included in this dataset.) The ID variable represents the specific pond or tank (some farmers had multiple ponds, but we ignore that clustering here for present purposes). For our purposes, we examine only the growout tanks. We also ignore the second measurement in cases where two measurements were made in the morning over a very short duration.

SWP_Vietnam <- read.csv("VN_clean.csv")
SWP_Vietnam_growout<- subset(SWP_Vietnam, Pond == "Growout" & Daytime != "Morning_after_sunrise")
SWP_Vietnam_growout

Optimal and Suboptimal Water Quality Prevalence

Because all studies included if not exclusively studied growout farms, we relied on recommendations for juveniles and adults raised for consumption, rather than for larvae, paralarvae, or breeders.

Some datasets provide only the sample size of farms, the average value for a given water quality parameter, and its standard deviation. We created functions to sample from the normal distribution using this information in order to generate datasets that we could analyze.

There is no straightforward way to provide a summary of results from these studies because of their differing methodologies. In particular there were:

As a workaround, we analyze all studies as if they estimated the average percentage of the time that shrimp farms maintain water quality within recommended ranges. In reality, only the longitudinal field visits can actually estimate this parameter. To interpret the other studies in the same way, we have to assume that they are noisy special cases of longitudinal field visits. In particular, we will interpret the survey studies and single field visits as testing whether a given farm maintains good water quality 100% of the time or 0% of the time. Although these estimates are highly unrealistic, they do make the limitations of these study types transparent.

Dissolved Oxygen

Dissolved oxygen can be reported in terms of parts per million (ppm) (or, equivalently, mg L-1), or its level of saturation in water. However, calculating saturation requires knowing the water’s temperature and salinity, which in many cases we did not have access to individual farms. Hargreaves and Boyd (2022, p. 211) explain that ppm is less informative but more practical than reporting percentage saturation: “Shrimp actually respond to the partial pressure of oxygen in water rather than the weight/volume concentration in milligrams per liter. In reality, percentage saturation would be the best way of assessing dissolved oxygen concentrations in aquaculture. However, farmers are more familiar with concentration (mg/l), and great confusion would result form use of percentage saturation.”

Hargreaves and Boyd (p. 218) argue that DO levels of 4-6 ppm lead to “maximum respiration rate; greatest scope for growth.” Reduced survival apparently only occurs at levels less than 2 ppm, but sublethal issues of increasing intensity begin at levels lower than 3.5 ppm. Thus, we we regard levels at least 4 ppm optimal (to our knowledge, there is no benefit or harm of especially high DO levels), and the sub-optimal range as 2-3.9.

#Count of measurements within Optimal range

optimal_do<- function(n, mean, sd) {
  set.seed(124) #set seed for replicability 
  do_dist<-rnorm(n = n, mean = mean, sd = sd)
  do_optimal<-sum(do_dist>= 4)
  return(do_optimal)
}

#Count of Measurements within Suboptimal Range

suboptimal_do<- function(n, mean, sd) {
  set.seed(124) #set seed for replicability 
  do_dist<-rnorm(n = n, mean = mean, sd = sd)
  do_suboptimal<-sum(do_dist>= 2 & do_dist < 4)
  return(do_suboptimal)
}
Optimal

Now we estimate what percentage of farms comply with optimal DO standards.

###Boyd

#For simplicity, we assume that none of the farms in the 3-4 ppm category actually have exactly 4 ppm DO. Thus, only farms with >4 ppm DO fall within the optimum range

lindrazba_do_opt_meta<-metaprop(event = c((lindrazba_do["More than 4","farms_west"]+lindrazba_do["More than 4","farms_east"])), n = c((sum(lindrazba_do$farms_west)+sum(lindrazba_do$farms_east))))

lindrazba.opt.est<- plogis(c(lindrazba_do_opt_meta$TE.random ,lindrazba_do_opt_meta$lower.random,lindrazba_do_opt_meta$upper.random))


lindrazba_do_opt<-data.frame(Study = "Lin & Drazba (2006)",
                        Proportion = lindrazba.opt.est[1], 
                        Lower_Limit = lindrazba.opt.est[2],
                        Upper_limit = lindrazba.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Mixed")




###Venka
do_opt_guntar<-optimal_do(n = venka["Guntar", "SampleSize"],mean = venka["Guntar", "DOm"], sd = venka["Guntar", "DOsd"] )
do_opt_krishna<-optimal_do(n = venka["Krishna", "SampleSize"],mean = venka["Krishna", "DOm"], sd = venka["Krishna", "DOsd"] )
do_opt_westgodavari<-optimal_do(n = venka["WestGodavari", "SampleSize"],mean = venka["WestGodavari", "DOm"], sd = venka["WestGodavari", "DOsd"] )
do_opt_eastgodavari<-optimal_do(n = venka["EastGodavari", "SampleSize"],mean = venka["EastGodavari", "DOm"], sd = venka["EastGodavari", "DOsd"] )

venka_do_opt_meta<-metaprop(c(do_opt_guntar,do_opt_krishna, do_opt_westgodavari, do_opt_eastgodavari), c(venka["Guntar", "SampleSize"],venka["Krishna", "SampleSize"],venka["WestGodavari", "SampleSize"],venka["EastGodavari", "SampleSize"]), method = "Inverse")

venka.opt.est<- plogis(c(venka_do_opt_meta$TE.random ,venka_do_opt_meta$lower.random,venka_do_opt_meta$upper.random))


venka_do_opt<-data.frame(Study = "Venkateswarlu et al. (2019)",
                        Proportion = venka.opt.est[1], 
                        Lower_Limit = venka.opt.est[2],
                        Upper_limit = venka.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")

###Hukom

##P. vannamei
do_opt_tv<-optimal_do(n = hukom["TradVannamei", "SampleSize"],mean = hukom["TradVannamei", "DOm"], sd = hukom["TradVannamei", "DOsd"] )
do_opt_tpv<-optimal_do(n = hukom["TradPlusVannamei", "SampleSize"],mean = hukom["TradPlusVannamei", "DOm"], sd = hukom["TradPlusVannamei", "DOsd"] )

##P. Monodon
do_opt_tp<-optimal_do(n = hukom["TradMonodon", "SampleSize"],mean = hukom["TradMonodon", "DOm"], sd = hukom["TradMonodon", "DOsd"] )
do_opt_tpp<-optimal_do(n = hukom["TradPlusMonodon", "SampleSize"],mean = hukom["TradPlusMonodon", "DOm"], sd = hukom["TradPlusMonodon", "DOsd"] )


hukom_do_opt_meta<-metaprop(c(do_opt_tv,do_opt_tpv,do_opt_tp,do_opt_tpp), c(hukom["TradVannamei", "SampleSize"],hukom["TradPlusVannamei", "SampleSize"],hukom["TradMonodon", "SampleSize"],hukom["TradPlusMonodon", "SampleSize"]), method = "Inverse")

hukom.opt.est<- plogis(c(hukom_do_opt_meta$TE.random,hukom_do_opt_meta$lower.random,hukom_do_opt_meta$upper.random))


hukom_do_opt<-data.frame(Study = "Hukom et al. (2020)",
                        Proportion = hukom.opt.est[1], 
                        Lower_Limit = hukom.opt.est[2],
                        Upper_limit = hukom.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Extensive")


###Chowdhury

do_opt_shrimprice_chowdhury<-optimal_do(chowdhury["Shrimp-Rice","SampleSize"], chowdhury["Shrimp-Rice","DOm"], chowdhury["Shrimp-Rice","DOsd"])
do_opt_shrimponly_chowdhury<-optimal_do(chowdhury["Shrimp-Only","SampleSize"], chowdhury["Shrimp-Only","DOm"], chowdhury["Shrimp-Only","DOsd"])


chowdhury_do_opt_meta<-metaprop(c(do_opt_shrimprice_chowdhury,do_opt_shrimponly_chowdhury), c(chowdhury["Shrimp-Rice","SampleSize"],chowdhury["Shrimp-Only","SampleSize"]), method = "Inverse")

chowdhury.opt.est<- plogis(c(chowdhury_do_opt_meta$TE.random,chowdhury_do_opt_meta$lower.random,chowdhury_do_opt_meta$upper.random))


chowdhury_do_opt<-data.frame(Study = "Chowdhury et al. (2011)",
                        Proportion = chowdhury.opt.est[1], 
                        Lower_Limit = chowdhury.opt.est[2],
                        Upper_limit = chowdhury.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Monodon",
                        Farm_Type = "Extensive")


###Sivraman's optimal DO percentage is already computed in the original survey data

sivraman_do_opt_meta<-metaprop(sivaraman$do_opt, sivaraman$sample, method = "Inverse")

sivraman.opt.est<- plogis(c(sivraman_do_opt_meta$TE.random,sivraman_do_opt_meta$lower.random,sivraman_do_opt_meta$upper.random))


sivraman_do_opt<-data.frame(Study = "Sivaraman et al. (2019)",
                        Proportion = sivraman.opt.est[1], 
                        Lower_Limit = sivraman.opt.est[2],
                        Upper_limit = sivraman.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Mixed")




###Supriatna

do_opt_pond1_supriatna<-optimal_do(supriatna["Pond 1","SampleSize"],supriatna["Pond 1","DOm"],supriatna["Pond 1","DOsd"])
do_opt_pond2_supriatna<-optimal_do(supriatna["Pond 2","SampleSize"],supriatna["Pond 2","DOm"],supriatna["Pond 2","DOsd"])
do_opt_pond3_supriatna<-optimal_do(supriatna["Pond 3","SampleSize"],supriatna["Pond 3","DOm"],supriatna["Pond 3","DOsd"])
do_opt_pond4_supriatna<-optimal_do(supriatna["Pond 4","SampleSize"],supriatna["Pond 4","DOm"],supriatna["Pond 4","DOsd"])
do_opt_pond5_supriatna<-optimal_do(supriatna["Pond 5","SampleSize"],supriatna["Pond 5","DOm"],supriatna["Pond 5","DOsd"])
do_opt_pond6_supriatna<-optimal_do(supriatna["Pond 6","SampleSize"],supriatna["Pond 6","DOm"],supriatna["Pond 6","DOsd"])
do_opt_pond7_supriatna<-optimal_do(supriatna["Pond 7","SampleSize"],supriatna["Pond 7","DOm"],supriatna["Pond 7","DOsd"])
do_opt_pond8_supriatna<-optimal_do(supriatna["Pond 8","SampleSize"],supriatna["Pond 8","DOm"],supriatna["Pond 8","DOsd"])

supriatna_do_opt_meta<-metaprop(c(do_opt_pond1_supriatna,do_opt_pond2_supriatna,do_opt_pond3_supriatna,
               do_opt_pond4_supriatna,do_opt_pond5_supriatna,do_opt_pond6_supriatna,
               do_opt_pond7_supriatna,do_opt_pond8_supriatna), 
         c(supriatna["Pond 1","SampleSize"], supriatna["Pond 2","SampleSize"],supriatna["Pond 3","SampleSize"],supriatna["Pond 4","SampleSize"],
           supriatna["Pond 5","SampleSize"],supriatna["Pond 6","SampleSize"],supriatna["Pond 7","SampleSize"],supriatna["Pond 8","SampleSize"]), method = "Inverse")



supriatna.opt.est<- plogis(c(supriatna_do_opt_meta$TE.random,supriatna_do_opt_meta$lower.random,supriatna_do_opt_meta$upper.random))


supriatna_do_opt<-data.frame(Study = "Supriatna et al. (2017)",
                        Proportion = supriatna.opt.est[1], 
                        Lower_Limit = supriatna.opt.est[2],
                        Upper_limit = supriatna.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Intensive")



###SWP

#India

swpi_do_opt_meta<-metaprop(sum(SWP_India$DO >= 4), length(SWP_India$DO), method = "Inverse")

swpi.opt.est<- plogis(c(swpi_do_opt_meta$TE.random,swpi_do_opt_meta$lower.random,swpi_do_opt_meta$upper.random))


swpi_do_opt<-data.frame(Study = "Shrimp Welfare Project: India",
                        Proportion = swpi.opt.est[1], 
                        Lower_Limit = swpi.opt.est[2],
                        Upper_limit = swpi.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive") #There was one intensive farm, but only 1 out of 20 so it seems more accurate to call this semi-intensive rather than mixed.


#Vietnam 

swpv_do_opt_meta<-metaprop(c(sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "DO"] >= 4),
           sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "DO"] >= 4),
           sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "DO"] >= 4),
           sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "DO"] >= 4),
           sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "DO"] >= 4),
           sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "DO"] >= 4),
           sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "DO"] >= 4),
           sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "DO"] >= 4)),
              c(sum(SWP_Vietnam_growout$ID==1),
               sum(SWP_Vietnam_growout$ID==3),
               sum(SWP_Vietnam_growout$ID==5),
               sum(SWP_Vietnam_growout$ID==7),
               sum(SWP_Vietnam_growout$ID==8),
               sum(SWP_Vietnam_growout$ID==9),
               sum(SWP_Vietnam_growout$ID==10),
               sum(SWP_Vietnam_growout$ID==11)), method = "Inverse")

swpv.opt.est<- plogis(c(swpv_do_opt_meta$TE.random,swpv_do_opt_meta$lower.random,swpv_do_opt_meta$upper.random))


swpv_do_opt<-data.frame(Study = "Shrimp Welfare Project: Vietnam",
                        Proportion = swpv.opt.est[1], 
                        Lower_Limit = swpv.opt.est[2],
                        Upper_limit = swpv.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Mixed")
Suboptimal

Next, we compute what percentage of farms have suboptimal DO levels.

###Boyd

#mean

lindrazba_do_sub_meta<-metaprop(event = c((lindrazba_do["3-4","farms_west"] +  lindrazba_do["2-3","farms_west"]+lindrazba_do["3-4","farms_east"] +  lindrazba_do["2-3","farms_east"])), n = c((sum(lindrazba_do$farms_west)+sum(lindrazba_do$farms_east))))

boyd.sub.est<- plogis(c(lindrazba_do_sub_meta$TE.random ,lindrazba_do_sub_meta$lower.random,lindrazba_do_sub_meta$upper.random))


lindrazba_do_sub<-data.frame(Study = "Lin & Drazba (2006)",
                        Proportion = boyd.sub.est[1], 
                        Lower_Limit = boyd.sub.est[2],
                        Upper_limit = boyd.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Mixed")


###Venka
do_sub_guntar<-suboptimal_do(n = venka["Guntar", "SampleSize"],mean = venka["Guntar", "DOm"], sd = venka["Guntar", "DOsd"] )
do_sub_krishna<-suboptimal_do(n = venka["Krishna", "SampleSize"],mean = venka["Krishna", "DOm"], sd = venka["Krishna", "DOsd"] )
do_sub_westgodavari<-suboptimal_do(n = venka["WestGodavari", "SampleSize"],mean = venka["WestGodavari", "DOm"], sd = venka["WestGodavari", "DOsd"] )
do_sub_eastgodavari<-suboptimal_do(n = venka["EastGodavari", "SampleSize"],mean = venka["EastGodavari", "DOm"], sd = venka["EastGodavari", "DOsd"] )

venka_do_sub_meta<-metaprop(c(do_sub_guntar,do_sub_krishna, do_sub_westgodavari, do_sub_eastgodavari), c(venka["Guntar", "SampleSize"],venka["Krishna", "SampleSize"],venka["WestGodavari", "SampleSize"],venka["EastGodavari", "SampleSize"]), method = "Inverse")

venka.sub.est<- plogis(c(venka_do_sub_meta$TE.random ,venka_do_sub_meta$lower.random,venka_do_sub_meta$upper.random))


venka_do_sub<-data.frame(Study = "Venkateswarlu et al. (2019)",
                        Proportion = venka.sub.est[1], 
                        Lower_Limit = venka.sub.est[2],
                        Upper_limit = venka.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")


###Hukom
##P. vannamei
do_sub_tv<-suboptimal_do(n = hukom["TradVannamei", "SampleSize"],mean = hukom["TradVannamei", "DOm"], sd = hukom["TradVannamei", "DOsd"] )
do_sub_tpv<-suboptimal_do(n = hukom["TradPlusVannamei", "SampleSize"],mean = hukom["TradPlusVannamei", "DOm"], sd = hukom["TradPlusVannamei", "DOsd"] )

##P. Monodon
do_sub_tp<-suboptimal_do(n = hukom["TradMonodon", "SampleSize"],mean = hukom["TradMonodon", "DOm"], sd = hukom["TradMonodon", "DOsd"] )
do_sub_tpp<-suboptimal_do(n = hukom["TradPlusMonodon", "SampleSize"],mean = hukom["TradPlusMonodon", "DOm"], sd = hukom["TradPlusMonodon", "DOsd"] )

hukom_do_sub_meta<-metaprop(c(do_sub_tv,do_sub_tpv,do_sub_tp,do_sub_tpp), c(hukom["TradVannamei", "SampleSize"],hukom["TradPlusVannamei", "SampleSize"],hukom["TradMonodon", "SampleSize"],hukom["TradPlusMonodon", "SampleSize"]), method = "Inverse")

hukom.sub.est<- plogis(c(hukom_do_sub_meta$TE.random,hukom_do_sub_meta$lower.random,hukom_do_sub_meta$upper.random))


hukom_do_sub<-data.frame(Study = "Hukom et al. (2020)",
                        Proportion = hukom.sub.est[1], 
                        Lower_Limit = hukom.sub.est[2],
                        Upper_limit = hukom.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Extensive")


###Chowdhury

do_sub_shrimprice_chowdhury<-suboptimal_do(chowdhury["Shrimp-Rice","SampleSize"], chowdhury["Shrimp-Rice","DOm"], chowdhury["Shrimp-Rice","DOsd"])
do_sub_shrimponly_chowdhury<-suboptimal_do(chowdhury["Shrimp-Only","SampleSize"], chowdhury["Shrimp-Only","DOm"], chowdhury["Shrimp-Only","DOsd"])


chowdhury_do_sub_meta<-metaprop(c(do_sub_shrimprice_chowdhury,do_sub_shrimponly_chowdhury), c(chowdhury["Shrimp-Rice","SampleSize"],chowdhury["Shrimp-Only","SampleSize"]), method = "Inverse")

chowdhury.sub.est<- plogis(c(chowdhury_do_sub_meta$TE.random,chowdhury_do_sub_meta$lower.random,chowdhury_do_sub_meta$upper.random))


chowdhury_do_sub<-data.frame(Study = "Chowdhury et al. (2011)",
                        Proportion = chowdhury.sub.est[1], 
                        Lower_Limit = chowdhury.sub.est[2],
                        Upper_limit = chowdhury.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Monodon",
                        Farm_Type = "Extensive")

###Sivraman's suboptimal DO percentage is not in the data.

###Supriatna

do_sub_pond1_supriatna<-suboptimal_do(supriatna["Pond 1","SampleSize"],supriatna["Pond 1","DOm"],supriatna["Pond 1","DOsd"])
do_sub_pond2_supriatna<-suboptimal_do(supriatna["Pond 2","SampleSize"],supriatna["Pond 2","DOm"],supriatna["Pond 2","DOsd"])
do_sub_pond3_supriatna<-suboptimal_do(supriatna["Pond 3","SampleSize"],supriatna["Pond 3","DOm"],supriatna["Pond 3","DOsd"])
do_sub_pond4_supriatna<-suboptimal_do(supriatna["Pond 4","SampleSize"],supriatna["Pond 4","DOm"],supriatna["Pond 4","DOsd"])
do_sub_pond5_supriatna<-suboptimal_do(supriatna["Pond 5","SampleSize"],supriatna["Pond 5","DOm"],supriatna["Pond 5","DOsd"])
do_sub_pond6_supriatna<-suboptimal_do(supriatna["Pond 6","SampleSize"],supriatna["Pond 6","DOm"],supriatna["Pond 6","DOsd"])
do_sub_pond7_supriatna<-suboptimal_do(supriatna["Pond 7","SampleSize"],supriatna["Pond 7","DOm"],supriatna["Pond 7","DOsd"])
do_sub_pond8_supriatna<-suboptimal_do(supriatna["Pond 8","SampleSize"],supriatna["Pond 8","DOm"],supriatna["Pond 8","DOsd"])

supriatna_do_sub_meta<-metaprop(c(do_sub_pond1_supriatna,do_sub_pond2_supriatna,do_sub_pond3_supriatna,
               do_sub_pond4_supriatna,do_sub_pond5_supriatna,do_sub_pond6_supriatna,
               do_sub_pond7_supriatna,do_sub_pond8_supriatna), 
         c(supriatna["Pond 1","SampleSize"], supriatna["Pond 2","SampleSize"],supriatna["Pond 3","SampleSize"],supriatna["Pond 4","SampleSize"],
           supriatna["Pond 5","SampleSize"],supriatna["Pond 6","SampleSize"],supriatna["Pond 7","SampleSize"],supriatna["Pond 8","SampleSize"]), method = "Inverse")



supriatna.sub.est<- plogis(c(supriatna_do_sub_meta$TE.random,supriatna_do_sub_meta$lower.random,supriatna_do_sub_meta$upper.random))


supriatna_do_sub<-data.frame(Study = "Supriatna et al. (2017)",
                        Proportion = supriatna.sub.est[1], 
                        Lower_Limit = supriatna.sub.est[2],
                        Upper_limit = supriatna.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Intensive")



###SWP

#India


swpi_do_sub_meta<-metaprop(sum(SWP_India$DO >= 2 &  SWP_India$DO < 4), length(SWP_India$DO), method = "Inverse")

swpi.sub.est<- plogis(c(swpi_do_sub_meta$TE.random,swpi_do_sub_meta$lower.random,swpi_do_sub_meta$upper.random))


swpi_do_sub<-data.frame(Study = "Shrimp Welfare Project: India",
                        Proportion = swpi.sub.est[1], 
                        Lower_Limit = swpi.sub.est[2],
                        Upper_limit = swpi.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")


#Vietnam 
#calculate compliance percentage at pond level first 

do_sub_swp_v_1<-sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "DO"] <4)/length(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "DO"])

do_sub_swp_v_3<-sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "DO"] <4)/length(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "DO"])

do_sub_swp_v_5<-sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "DO"] <4)/length(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "DO"])

do_sub_swp_v_7<-sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "DO"] <4)/length(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "DO"])

do_sub_swp_v_8<-sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "DO"] <4)/length(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "DO"])

do_sub_swp_v_9<-sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "DO"] <4)/length(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "DO"])

do_sub_swp_v_10<-sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "DO"] <4)/length(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "DO"])

do_sub_swp_v_11<-sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "DO"] <4)/length(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "DO"])



swpv_do_sub_meta<-metaprop(c(sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "DO"] <4),
                             sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "DO"] <4),
                             sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "DO"] <4),
                             sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "DO"] <4),
                             sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "DO"] <4),
                             sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "DO"] <4),
                             sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "DO"] <4),
                             sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "DO"] >= 2 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "DO"] <4)),
              c(sum(SWP_Vietnam_growout$ID==1),
               sum(SWP_Vietnam_growout$ID==3),
               sum(SWP_Vietnam_growout$ID==5),
               sum(SWP_Vietnam_growout$ID==7),
               sum(SWP_Vietnam_growout$ID==8),
               sum(SWP_Vietnam_growout$ID==9),
               sum(SWP_Vietnam_growout$ID==10),
               sum(SWP_Vietnam_growout$ID==11)), method = "Inverse")

swpv.sub.est<- plogis(c(swpv_do_sub_meta$TE.random,swpv_do_sub_meta$lower.random,swpv_do_sub_meta$upper.random))


swpv_do_sub<-data.frame(Study = "Shrimp Welfare Project: Vietnam",
                        Proportion = swpv.sub.est[1], 
                        Lower_Limit = swpv.sub.est[2],
                        Upper_limit = swpv.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Mixed")
Summary Table
DO_Summary<-data.frame(rbind(lindrazba_do_opt,lindrazba_do_sub,venka_do_opt,venka_do_sub,hukom_do_opt,hukom_do_sub,
                             chowdhury_do_opt,chowdhury_do_sub,sivraman_do_opt,supriatna_do_opt,supriatna_do_sub,
                             swpi_do_opt,swpi_do_sub,swpv_do_opt,swpv_do_sub))


DO_Summary$Percentage<-round(DO_Summary$Proportion*100,2)
DO_Summary$Lower.Percentage<-round(DO_Summary$Lower_Limit*100,2)
DO_Summary$Upper.Percentage<-round(DO_Summary$Upper_limit*100,2)

DO_Summary

pH

For P. vannamei, 6.5-8.5 is the optimal pH range, and 5.0-6.4 or 8.6-9.0 are the suboptimal ranges (See Table 11 of Pedrazzani et al., 2023). P. Monodon are possibly more sensitive to small deviations (Hsieh et al. 2021; Noor-Hamid et al., 1994, but we did not have enough confidence in species-specific guidelines to use a different optimal range.

optimal_ph<- function(n, mean, sd) {
  set.seed(124)
  ph_dist<-rnorm(n = n, mean = mean, sd = sd)
  ph_optimal<-sum(ph_dist>= 6.5 & ph_dist<= 8.5)
  return(ph_optimal)
}

suboptimal_ph<- function(n, mean, sd) {
  set.seed(124)
  ph_dist<-rnorm(n = n, mean = mean, sd = sd)
  ph_suboptimal<-sum((ph_dist>= 5.0 & ph_dist< 6.5)| (ph_dist> 8.5 & ph_dist<= 9.0))
  return(ph_suboptimal)
}
Optimal

Now we calculate the prevalence of optimal pH levels.

###Venka
ph_opt_guntar<-optimal_ph(n = venka["Guntar", "SampleSize"],mean = venka["Guntar", "pHm"], sd = venka["Guntar", "pHsd"] )
ph_opt_krishna<-optimal_ph(n = venka["Krishna", "SampleSize"],mean = venka["Krishna", "pHm"], sd = venka["Krishna", "pHsd"] )
ph_opt_westgodavari<-optimal_ph(n = venka["WestGodavari", "SampleSize"],mean = venka["WestGodavari", "pHm"], sd = venka["WestGodavari", "pHsd"] )
ph_opt_eastgodavari<-optimal_ph(n = venka["EastGodavari", "SampleSize"],mean = venka["EastGodavari", "pHm"], sd = venka["EastGodavari", "pHsd"] )

venka_ph_opt_meta<-metaprop(c(ph_opt_guntar,ph_opt_krishna, ph_opt_westgodavari, ph_opt_eastgodavari), c(venka["Guntar", "SampleSize"],venka["Krishna", "SampleSize"],venka["WestGodavari", "SampleSize"],venka["EastGodavari", "SampleSize"]), method = "Inverse")

venka.opt.est<- plogis(c(venka_ph_opt_meta$TE.random ,venka_ph_opt_meta$lower.random,venka_ph_opt_meta$upper.random))


venka_ph_opt<-data.frame(Study = "Venkateswarlu et al. (2019)",
                        Proportion = venka.opt.est[1], 
                        Lower_Limit = venka.opt.est[2],
                        Upper_limit = venka.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")


###Hukom
##P. vannamei
ph_opt_tv<-optimal_ph(n = hukom["TradVannamei", "SampleSize"],mean = hukom["TradVannamei", "pHm"], sd = hukom["TradVannamei", "pHsd"] )
ph_opt_tpv<-optimal_ph(n = hukom["TradPlusVannamei", "SampleSize"],mean = hukom["TradPlusVannamei", "pHm"], sd = hukom["TradPlusVannamei", "pHsd"] )

##P. Monodon
ph_opt_tp<-optimal_ph(n = hukom["TradMonodon", "SampleSize"],mean = hukom["TradMonodon", "pHm"], sd = hukom["TradMonodon", "pHsd"] )
ph_opt_tpp<-optimal_ph(n = hukom["TradPlusMonodon", "SampleSize"],mean = hukom["TradPlusMonodon", "pHm"], sd = hukom["TradPlusMonodon", "pHsd"] )

hukom_ph_opt_meta<-metaprop(c(ph_opt_tv,ph_opt_tpv,ph_opt_tp,ph_opt_tpp), c(hukom["TradVannamei", "SampleSize"],hukom["TradPlusVannamei", "SampleSize"],hukom["TradMonodon", "SampleSize"],hukom["TradPlusMonodon", "SampleSize"]), method = "Inverse")

hukom.opt.est<- plogis(c(hukom_ph_opt_meta$TE.random,hukom_ph_opt_meta$lower.random,hukom_ph_opt_meta$upper.random))

hukom_ph_opt<-data.frame(Study = "Hukom et al. (2020)",
                        Proportion = hukom.opt.est[1], 
                        Lower_Limit = hukom.opt.est[2],
                        Upper_limit = hukom.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Extensive")


###Chowdhury
ph_opt_shrimprice_chowdhury<-optimal_ph(chowdhury["Shrimp-Rice","SampleSize"], chowdhury["Shrimp-Rice","pHm"], chowdhury["Shrimp-Rice","pHsd"])
ph_opt_shrimponly_chowdhury<-optimal_ph(chowdhury["Shrimp-Only","SampleSize"], chowdhury["Shrimp-Only","pHm"], chowdhury["Shrimp-Only","pHsd"])


chowdhury_ph_opt_meta<-metaprop(c(ph_opt_shrimprice_chowdhury,ph_opt_shrimponly_chowdhury), c(chowdhury["Shrimp-Rice","SampleSize"],chowdhury["Shrimp-Only","SampleSize"]), method = "Inverse")

chowdhury.opt.est<- plogis(c(chowdhury_ph_opt_meta$TE.random,chowdhury_ph_opt_meta$lower.random,chowdhury_ph_opt_meta$upper.random))


chowdhury_ph_opt<-data.frame(Study = "Chowdhury et al. (2011)",
                        Proportion = chowdhury.opt.est[1], 
                        Lower_Limit = chowdhury.opt.est[2],
                        Upper_limit = chowdhury.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Monodon",
                        Farm_Type = "Extensive")


###Sivraman's optimal DO percentage is already computed in the original survey data

sivraman_ph_opt_meta<-metaprop(sivaraman$ph_opt, sivaraman$sample, method = "Inverse")

sivraman.opt.est<- plogis(c(sivraman_ph_opt_meta$TE.random,sivraman_ph_opt_meta$lower.random,sivraman_ph_opt_meta$upper.random))


sivraman_ph_opt<-data.frame(Study = "Sivaraman et al. (2019)",
                        Proportion = sivraman.opt.est[1], 
                        Lower_Limit = sivraman.opt.est[2],
                        Upper_limit = sivraman.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Mixed")


###Supriatna

ph_opt_pond1_supriatna<-optimal_ph(supriatna["Pond 1","SampleSize"],supriatna["Pond 1","pHm"],supriatna["Pond 1","pHsd"])
ph_opt_pond2_supriatna<-optimal_ph(supriatna["Pond 2","SampleSize"],supriatna["Pond 2","pHm"],supriatna["Pond 2","pHsd"])
ph_opt_pond3_supriatna<-optimal_ph(supriatna["Pond 3","SampleSize"],supriatna["Pond 3","pHm"],supriatna["Pond 3","pHsd"])
ph_opt_pond4_supriatna<-optimal_ph(supriatna["Pond 4","SampleSize"],supriatna["Pond 4","pHm"],supriatna["Pond 4","pHsd"])
ph_opt_pond5_supriatna<-optimal_ph(supriatna["Pond 5","SampleSize"],supriatna["Pond 5","pHm"],supriatna["Pond 5","pHsd"])
ph_opt_pond6_supriatna<-optimal_ph(supriatna["Pond 6","SampleSize"],supriatna["Pond 6","pHm"],supriatna["Pond 6","pHsd"])
ph_opt_pond7_supriatna<-optimal_ph(supriatna["Pond 7","SampleSize"],supriatna["Pond 7","pHm"],supriatna["Pond 7","pHsd"])
ph_opt_pond8_supriatna<-optimal_ph(supriatna["Pond 8","SampleSize"],supriatna["Pond 8","pHm"],supriatna["Pond 8","pHsd"])

supriatna_ph_opt_meta<-metaprop(c(ph_opt_pond1_supriatna,ph_opt_pond2_supriatna,ph_opt_pond3_supriatna,
               ph_opt_pond4_supriatna,ph_opt_pond5_supriatna,ph_opt_pond6_supriatna,
               ph_opt_pond7_supriatna,ph_opt_pond8_supriatna), 
         c(supriatna["Pond 1","SampleSize"], supriatna["Pond 2","SampleSize"],supriatna["Pond 3","SampleSize"],supriatna["Pond 4","SampleSize"],
           supriatna["Pond 5","SampleSize"],supriatna["Pond 6","SampleSize"],supriatna["Pond 7","SampleSize"],supriatna["Pond 8","SampleSize"]), method = "Inverse")



supriatna.opt.est<- plogis(c(supriatna_ph_opt_meta$TE.random,supriatna_ph_opt_meta$lower.random,supriatna_ph_opt_meta$upper.random))


supriatna_ph_opt<-data.frame(Study = "Supriatna et al. (2017)",
                        Proportion = supriatna.opt.est[1], 
                        Lower_Limit = supriatna.opt.est[2],
                        Upper_limit = supriatna.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Intensive")

###SWP

#India
swpi_ph_opt_meta<-metaprop(sum(SWP_India$pH >= 6.5 & SWP_India$pH <= 8.5), length(SWP_India$pH), method = "Inverse")

swpi.opt.est<- plogis(c(swpi_ph_opt_meta$TE.random,swpi_ph_opt_meta$lower.random,swpi_ph_opt_meta$upper.random))


swpi_ph_opt<-data.frame(Study = "Shrimp Welfare Project: India",
                        Proportion = swpi.opt.est[1], 
                        Lower_Limit = swpi.opt.est[2],
                        Upper_limit = swpi.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive") #There was one intensive farm, but only 1 out of 20 so it seems more accurate to call this semi-intensive rather than mixed.


#Vietnam 

swpv_ph_opt_meta<-metaprop(c(sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "pH"] >= 6.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "pH"] <= 8.5),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "pH"] >= 6.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "pH"] <= 8.5),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "pH"] >= 6.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "pH"] <= 8.5),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "pH"] >= 6.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "pH"] <= 8.5),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "pH"] >= 6.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "pH"] <= 8.5),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "pH"] >= 6.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "pH"] <= 8.5),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "pH"] >= 6.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "pH"] <= 8.5),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "pH"] >= 6.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "pH"] <= 8.5)),
              c(sum(SWP_Vietnam_growout$ID==1),
               sum(SWP_Vietnam_growout$ID==3),
               sum(SWP_Vietnam_growout$ID==5),
               sum(SWP_Vietnam_growout$ID==7),
               sum(SWP_Vietnam_growout$ID==8),
               sum(SWP_Vietnam_growout$ID==9),
               sum(SWP_Vietnam_growout$ID==10),
               sum(SWP_Vietnam_growout$ID==11)), method = "Inverse")

swpv.opt.est<- plogis(c(swpv_ph_opt_meta$TE.random,swpv_ph_opt_meta$lower.random,swpv_ph_opt_meta$upper.random))


swpv_ph_opt<-data.frame(Study = "Shrimp Welfare Project: Vietnam",
                        Proportion = swpv.opt.est[1], 
                        Lower_Limit = swpv.opt.est[2],
                        Upper_limit = swpv.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Mixed")
Suboptimal

Now we calculate the prevalence of suboptimal pH levels.

###Venka
ph_sub_guntar<-suboptimal_ph(n = venka["Guntar", "SampleSize"],mean = venka["Guntar", "pHm"], sd = venka["Guntar", "pHsd"] )
ph_sub_krishna<-suboptimal_ph(n = venka["Krishna", "SampleSize"],mean = venka["Krishna", "pHm"], sd = venka["Krishna", "pHsd"] )
ph_sub_westgodavari<-suboptimal_ph(n = venka["WestGodavari", "SampleSize"],mean = venka["WestGodavari", "pHm"], sd = venka["WestGodavari", "pHsd"] )
ph_sub_eastgodavari<-suboptimal_ph(n = venka["EastGodavari", "SampleSize"],mean = venka["EastGodavari", "pHm"], sd = venka["EastGodavari", "pHsd"] )

venka_ph_sub_meta<-metaprop(c(ph_sub_guntar,ph_sub_krishna, ph_sub_westgodavari, ph_sub_eastgodavari), c(venka["Guntar", "SampleSize"],venka["Krishna", "SampleSize"],venka["WestGodavari", "SampleSize"],venka["EastGodavari", "SampleSize"]), method = "Inverse")

venka.sub.est<- plogis(c(venka_ph_sub_meta$TE.random ,venka_ph_sub_meta$lower.random,venka_ph_sub_meta$upper.random))


venka_ph_sub<-data.frame(Study = "Venkateswarlu et al. (2019)",
                        Proportion = venka.sub.est[1], 
                        Lower_Limit = venka.sub.est[2],
                        Upper_limit = venka.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")




###Hukom
##P. vannamei
ph_sub_tv<-suboptimal_ph(n = hukom["TradVannamei", "SampleSize"],mean = hukom["TradVannamei", "pHm"], sd = hukom["TradVannamei", "pHsd"] )
ph_sub_tpv<-suboptimal_ph(n = hukom["TradPlusVannamei", "SampleSize"],mean = hukom["TradPlusVannamei", "pHm"], sd = hukom["TradPlusVannamei", "pHsd"] )

##P. Monodon
ph_sub_tp<-suboptimal_ph(n = hukom["TradMonodon", "SampleSize"],mean = hukom["TradMonodon", "pHm"], sd = hukom["TradMonodon", "pHsd"] )
ph_sub_tpp<-suboptimal_ph(n = hukom["TradPlusMonodon", "SampleSize"],mean = hukom["TradPlusMonodon", "pHm"], sd = hukom["TradPlusMonodon", "pHsd"] )


hukom_ph_sub_meta<-metaprop(c(ph_sub_tv,ph_sub_tpv,ph_sub_tp,ph_sub_tpp), c(hukom["TradVannamei", "SampleSize"],hukom["TradPlusVannamei", "SampleSize"],hukom["TradMonodon", "SampleSize"],hukom["TradPlusMonodon", "SampleSize"]), method = "Inverse")

hukom.sub.est<- plogis(c(hukom_ph_sub_meta$TE.random,hukom_ph_sub_meta$lower.random,hukom_ph_sub_meta$upper.random))

hukom_ph_sub<-data.frame(Study = "Hukom et al. (2020)",
                        Proportion = hukom.sub.est[1], 
                        Lower_Limit = hukom.sub.est[2],
                        Upper_limit = hukom.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Extensive")


###Chowdhury
ph_sub_shrimprice_chowdhury<-suboptimal_ph(chowdhury["Shrimp-Rice","SampleSize"], chowdhury["Shrimp-Rice","pHm"], chowdhury["Shrimp-Rice","pHsd"])
ph_sub_shrimponly_chowdhury<-suboptimal_ph(chowdhury["Shrimp-Only","SampleSize"], chowdhury["Shrimp-Only","pHm"], chowdhury["Shrimp-Only","pHsd"])

chowdhury_ph_sub_meta<-metaprop(c(ph_sub_shrimprice_chowdhury,ph_sub_shrimponly_chowdhury), c(chowdhury["Shrimp-Rice","SampleSize"],chowdhury["Shrimp-Only","SampleSize"]), method = "Inverse")

chowdhury.sub.est<- plogis(c(chowdhury_ph_sub_meta$TE.random,chowdhury_ph_sub_meta$lower.random,chowdhury_ph_sub_meta$upper.random))


chowdhury_ph_sub<-data.frame(Study = "Chowdhury et al. (2011)",
                        Proportion = chowdhury.sub.est[1], 
                        Lower_Limit = chowdhury.sub.est[2],
                        Upper_limit = chowdhury.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Monodon",
                        Farm_Type = "Extensive")


###Supriatna

ph_sub_pond1_supriatna<-suboptimal_ph(supriatna["Pond 1","SampleSize"],supriatna["Pond 1","pHm"],supriatna["Pond 1","pHsd"])
ph_sub_pond2_supriatna<-suboptimal_ph(supriatna["Pond 2","SampleSize"],supriatna["Pond 2","pHm"],supriatna["Pond 2","pHsd"])
ph_sub_pond3_supriatna<-suboptimal_ph(supriatna["Pond 3","SampleSize"],supriatna["Pond 3","pHm"],supriatna["Pond 3","pHsd"])
ph_sub_pond4_supriatna<-suboptimal_ph(supriatna["Pond 4","SampleSize"],supriatna["Pond 4","pHm"],supriatna["Pond 4","pHsd"])
ph_sub_pond5_supriatna<-suboptimal_ph(supriatna["Pond 5","SampleSize"],supriatna["Pond 5","pHm"],supriatna["Pond 5","pHsd"])
ph_sub_pond6_supriatna<-suboptimal_ph(supriatna["Pond 6","SampleSize"],supriatna["Pond 6","pHm"],supriatna["Pond 6","pHsd"])
ph_sub_pond7_supriatna<-suboptimal_ph(supriatna["Pond 7","SampleSize"],supriatna["Pond 7","pHm"],supriatna["Pond 7","pHsd"])
ph_sub_pond8_supriatna<-suboptimal_ph(supriatna["Pond 8","SampleSize"],supriatna["Pond 8","pHm"],supriatna["Pond 8","pHsd"])

supriatna_ph_sub_meta<-metaprop(c(ph_sub_pond1_supriatna,ph_sub_pond2_supriatna,ph_sub_pond3_supriatna,
               ph_sub_pond4_supriatna,ph_sub_pond5_supriatna,ph_sub_pond6_supriatna,
               ph_sub_pond7_supriatna,ph_sub_pond8_supriatna), 
         c(supriatna["Pond 1","SampleSize"], supriatna["Pond 2","SampleSize"],supriatna["Pond 3","SampleSize"],supriatna["Pond 4","SampleSize"],
           supriatna["Pond 5","SampleSize"],supriatna["Pond 6","SampleSize"],supriatna["Pond 7","SampleSize"],supriatna["Pond 8","SampleSize"]), method = "Inverse")



supriatna.sub.est<- plogis(c(supriatna_ph_sub_meta$TE.random,supriatna_ph_sub_meta$lower.random,supriatna_ph_sub_meta$upper.random))


supriatna_ph_sub<-data.frame(Study = "Supriatna et al. (2017)",
                        Proportion = supriatna.sub.est[1], 
                        Lower_Limit = supriatna.sub.est[2],
                        Upper_limit = supriatna.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Intensive")



###SWP

#India

swpi_ph_sub_meta<-metaprop(sum(SWP_India$pH >= 5.0 & SWP_India$pH < 6.5|SWP_India$pH > 8.5 & SWP_India$pH <=9), length(SWP_India$pH), method = "Inverse")

swpi.sub.est<- plogis(c(swpi_ph_sub_meta$TE.random,swpi_ph_sub_meta$lower.random,swpi_ph_sub_meta$upper.random))


swpi_ph_sub<-data.frame(Study = "Shrimp Welfare Project: India",
                        Proportion = swpi.sub.est[1], 
                        Lower_Limit = swpi.sub.est[2],
                        Upper_limit = swpi.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")

#Vietnam 


swpv_ph_sub_meta<-metaprop(

c(sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "pH"] >= 5.0 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "pH"] < 6.5|SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "pH"] > 8.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "pH"] <= 9),

sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "pH"] >= 5.0 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "pH"] < 6.5|SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "pH"] > 8.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "pH"] <= 9),

sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "pH"] >= 5.0 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "pH"] < 6.5|SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "pH"] > 8.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "pH"] <= 9),

sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "pH"] >= 5.0 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "pH"] < 6.5|SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "pH"] > 8.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "pH"] <= 9),

sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "pH"] >= 5.0 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "pH"] < 6.5|SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "pH"] > 8.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "pH"] <= 9),

sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "pH"] >= 5.0 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "pH"] < 6.5|SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "pH"] > 8.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "pH"] <= 9),

sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "pH"] >= 5.0 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "pH"] < 6.5|SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "pH"] > 8.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "pH"] <= 9),

sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "pH"] >= 5.0 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "pH"] < 6.5|SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "pH"] > 8.5 & 
SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "pH"] <= 9)),
              c(sum(SWP_Vietnam_growout$ID==1),
               sum(SWP_Vietnam_growout$ID==3),
               sum(SWP_Vietnam_growout$ID==5),
               sum(SWP_Vietnam_growout$ID==7),
               sum(SWP_Vietnam_growout$ID==8),
               sum(SWP_Vietnam_growout$ID==9),
               sum(SWP_Vietnam_growout$ID==10),
               sum(SWP_Vietnam_growout$ID==11)), method = "Inverse")

swpv.sub.est<- plogis(c(swpv_ph_sub_meta$TE.random,swpv_ph_sub_meta$lower.random,swpv_ph_sub_meta$upper.random))


swpv_ph_sub<-data.frame(Study = "Shrimp Welfare Project: Vietnam",
                        Proportion = swpv.sub.est[1], 
                        Lower_Limit = swpv.sub.est[2],
                        Upper_limit = swpv.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Mixed")
Summary Table
ph_Summary<-data.frame(rbind(venka_ph_opt,venka_ph_sub,hukom_ph_opt,hukom_ph_sub,
                             chowdhury_ph_opt,chowdhury_ph_sub,sivraman_ph_opt,supriatna_ph_opt,supriatna_ph_sub,
                             swpi_ph_opt,swpi_ph_sub,swpv_ph_opt,swpv_ph_sub))


ph_Summary$Percentage<-round(ph_Summary$Proportion*100,2)
ph_Summary$Lower.Percentage<-round(ph_Summary$Lower_Limit*100,2)
ph_Summary$Upper.Percentage<-round(ph_Summary$Upper_limit*100,2)

ph_Summary

Salinity

For P. vannamei, 10-40.9 psu is the optimal range; 0.6-9.9 and 41.0-59.0 psu are the suboptimal ranges (Table 11 of Pedrazzani et al., 2023). The ranges appear similar enough for juvenile P. Monodon to use the same standards (Ye et al., 2009).

optimal_salinity<- function(n,mean, sd) {
  set.seed(124)
  sal_dist<-rnorm(n = n, mean = mean, sd = sd)
  sal_optimal<-sum(sal_dist>= 10 & sal_dist<= 40.9)
  return(sal_optimal)
}

suboptimal_salinity<- function(n,mean, sd) {
  set.seed(124)
  sal_dist<-rnorm(n = n, mean = mean, sd = sd)
  sal_suboptimal<-sum((sal_dist>= 0.6 & sal_dist< 10)|(sal_dist> 40.9 & sal_dist<= 59))
  return(sal_suboptimal)
}
Optimal
###Boyd

#We were not able to perfectly capture the optimal/suboptimal distinction for the Boyd data, as they binned the results in a way that overlapped range categories.

#For simplicity, we assume that farms in the 6-10 category had salinities less than 10 ppt.

lindrazba_salinity_opt_meta<-metaprop(c(lindrazba_salinity["11-20","farms_west"]+lindrazba_salinity["21-30","farms_west"]+lindrazba_salinity["31-40","farms_west"]+lindrazba_salinity["11-20","farms_east"]+lindrazba_salinity["21-30","farms_east"]+lindrazba_salinity["31-40","farms_east"]), c(sum(lindrazba_do$farms_west)+sum(lindrazba_do$farms_east)))

lindrazba.opt.est<- plogis(c(lindrazba_salinity_opt_meta$TE.random ,lindrazba_salinity_opt_meta$lower.random,lindrazba_salinity_opt_meta$upper.random))


lindrazba_salinity_opt<-data.frame(Study = "Lin & Drazba (2006)",
                        Proportion = lindrazba.opt.est[1], 
                        Lower_Limit = lindrazba.opt.est[2],
                        Upper_limit = lindrazba.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Mixed")


###Venka
salinity_opt_guntar<-optimal_salinity(n = venka["Guntar", "SampleSize"],mean = venka["Guntar", "Salinitym"], sd = venka["Guntar", "Salinitysd"] )
salinity_opt_krishna<-optimal_salinity(n = venka["Krishna", "SampleSize"],mean = venka["Krishna", "Salinitym"], sd = venka["Krishna", "Salinitysd"] )
salinity_opt_westgodavari<-optimal_salinity(n = venka["WestGodavari", "SampleSize"],mean = venka["WestGodavari", "Salinitym"], sd = venka["WestGodavari", "Salinitysd"] )
salinity_opt_eastgodavari<-optimal_salinity(n = venka["EastGodavari", "SampleSize"],mean = venka["EastGodavari", "Salinitym"], sd = venka["EastGodavari", "Salinitysd"] )

venka_salinity_opt_meta<-metaprop(c(salinity_opt_guntar,salinity_opt_krishna, salinity_opt_westgodavari, salinity_opt_eastgodavari), c(venka["Guntar", "SampleSize"],venka["Krishna", "SampleSize"],venka["WestGodavari", "SampleSize"],venka["EastGodavari", "SampleSize"]), method = "Inverse")

venka.opt.est<- plogis(c(venka_salinity_opt_meta$TE.random ,venka_salinity_opt_meta$lower.random,venka_salinity_opt_meta$upper.random))


venka_salinity_opt<-data.frame(Study = "Venkateswarlu et al. (2019)",
                        Proportion = venka.opt.est[1], 
                        Lower_Limit = venka.opt.est[2],
                        Upper_limit = venka.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")

###Hukom
##P. vannamei
salinity_opt_tv<-optimal_salinity(n = hukom["TradVannamei", "SampleSize"],mean = hukom["TradVannamei", "Salinitym"], sd = hukom["TradVannamei", "Salinitysd"] )
salinity_opt_tpv<-optimal_salinity(n = hukom["TradPlusVannamei", "SampleSize"],mean = hukom["TradPlusVannamei", "Salinitym"], sd = hukom["TradPlusVannamei", "Salinitysd"] )

##P. Monodon
salinity_opt_tp<-optimal_salinity(n = hukom["TradMonodon", "SampleSize"],mean = hukom["TradMonodon", "Salinitym"], sd = hukom["TradMonodon", "Salinitysd"] )
salinity_opt_tpp<-optimal_salinity(n = hukom["TradPlusMonodon", "SampleSize"],mean = hukom["TradPlusMonodon", "Salinitym"], sd = hukom["TradPlusMonodon", "Salinitysd"] )

hukom_salinity_opt_meta<-metaprop(c(salinity_opt_tv,salinity_opt_tpv,salinity_opt_tp,salinity_opt_tpp), c(hukom["TradVannamei", "SampleSize"],hukom["TradPlusVannamei", "SampleSize"],hukom["TradMonodon", "SampleSize"],hukom["TradPlusMonodon", "SampleSize"]), method = "Inverse")

hukom.opt.est<- plogis(c(hukom_salinity_opt_meta$TE.random,hukom_salinity_opt_meta$lower.random,hukom_salinity_opt_meta$upper.random))


hukom_salinity_opt<-data.frame(Study = "Hukom et al. (2020)",
                        Proportion = hukom.opt.est[1], 
                        Lower_Limit = hukom.opt.est[2],
                        Upper_limit = hukom.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Extensive")

###Chowdhury
salinity_opt_shrimprice_chowdhury<-optimal_salinity(chowdhury["Shrimp-Rice","SampleSize"], chowdhury["Shrimp-Rice","Salinitym"], chowdhury["Shrimp-Rice","Salinitysd"])
salinity_opt_shrimponly_chowdhury<-optimal_salinity(chowdhury["Shrimp-Only","SampleSize"], chowdhury["Shrimp-Only","Salinitym"], chowdhury["Shrimp-Only","Salinitysd"])

chowdhury_salinity_opt_meta<-metaprop(c(salinity_opt_shrimprice_chowdhury,salinity_opt_shrimponly_chowdhury), c(chowdhury["Shrimp-Rice","SampleSize"],chowdhury["Shrimp-Only","SampleSize"]), method = "Inverse")

chowdhury.opt.est<- plogis(c(chowdhury_salinity_opt_meta$TE.random,chowdhury_salinity_opt_meta$lower.random,chowdhury_salinity_opt_meta$upper.random))


chowdhury_salinity_opt<-data.frame(Study = "Chowdhury et al. (2011)",
                        Proportion = chowdhury.opt.est[1], 
                        Lower_Limit = chowdhury.opt.est[2],
                        Upper_limit = chowdhury.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Monodon",
                        Farm_Type = "Extensive")

###Sivraman's optimal salinity percentage is already computed in the original survey data

sivraman_salinity_opt_meta<-metaprop(sivaraman$salinity_opt, sivaraman$sample, method = "Inverse")

sivraman.opt.est<- plogis(c(sivraman_salinity_opt_meta$TE.random,sivraman_salinity_opt_meta$lower.random,sivraman_salinity_opt_meta$upper.random))


sivraman_salinity_opt<-data.frame(Study = "Sivaraman et al. (2019)",
                        Proportion = sivraman.opt.est[1], 
                        Lower_Limit = sivraman.opt.est[2],
                        Upper_limit = sivraman.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Mixed")



###Supriatna

salinity_opt_pond1_supriatna<-optimal_salinity(supriatna["Pond 1","SampleSize"],supriatna["Pond 1","Salinitym"],supriatna["Pond 1","Salinitysd"])
salinity_opt_pond2_supriatna<-optimal_salinity(supriatna["Pond 2","SampleSize"],supriatna["Pond 2","Salinitym"],supriatna["Pond 2","Salinitysd"])
salinity_opt_pond3_supriatna<-optimal_salinity(supriatna["Pond 3","SampleSize"],supriatna["Pond 3","Salinitym"],supriatna["Pond 3","Salinitysd"])
salinity_opt_pond4_supriatna<-optimal_salinity(supriatna["Pond 4","SampleSize"],supriatna["Pond 4","Salinitym"],supriatna["Pond 4","Salinitysd"])
salinity_opt_pond5_supriatna<-optimal_salinity(supriatna["Pond 5","SampleSize"],supriatna["Pond 5","Salinitym"],supriatna["Pond 5","Salinitysd"])
salinity_opt_pond6_supriatna<-optimal_salinity(supriatna["Pond 6","SampleSize"],supriatna["Pond 6","Salinitym"],supriatna["Pond 6","Salinitysd"])
salinity_opt_pond7_supriatna<-optimal_salinity(supriatna["Pond 7","SampleSize"],supriatna["Pond 7","Salinitym"],supriatna["Pond 7","Salinitysd"])
salinity_opt_pond8_supriatna<-optimal_salinity(supriatna["Pond 8","SampleSize"],supriatna["Pond 8","Salinitym"],supriatna["Pond 8","Salinitysd"])

supriatna_salinity_opt_meta<-metaprop(c(salinity_opt_pond1_supriatna,salinity_opt_pond2_supriatna,salinity_opt_pond3_supriatna,salinity_opt_pond4_supriatna,salinity_opt_pond5_supriatna,salinity_opt_pond6_supriatna,
               salinity_opt_pond7_supriatna,salinity_opt_pond8_supriatna), 
         c(supriatna["Pond 1","SampleSize"], supriatna["Pond 2","SampleSize"],supriatna["Pond 3","SampleSize"],supriatna["Pond 4","SampleSize"],
           supriatna["Pond 5","SampleSize"],supriatna["Pond 6","SampleSize"],supriatna["Pond 7","SampleSize"],supriatna["Pond 8","SampleSize"]), method = "Inverse")

supriatna.opt.est<- plogis(c(supriatna_salinity_opt_meta$TE.random,supriatna_salinity_opt_meta$lower.random,supriatna_salinity_opt_meta$upper.random))

supriatna_salinity_opt<-data.frame(Study = "Supriatna et al. (2017)",
                        Proportion = supriatna.opt.est[1], 
                        Lower_Limit = supriatna.opt.est[2],
                        Upper_limit = supriatna.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Intensive")

###SWP

#India

swpi_salinity_opt_meta<-metaprop(sum(SWP_India$Salinity >= 10 & SWP_India$Salinity <= 40.9), length(SWP_India$Salinity), method = "Inverse")

swpi.opt.est<- plogis(c(swpi_salinity_opt_meta$TE.random,swpi_salinity_opt_meta$lower.random,swpi_salinity_opt_meta$upper.random))


swpi_salinity_opt<-data.frame(Study = "Shrimp Welfare Project: India",
                        Proportion = swpi.opt.est[1], 
                        Lower_Limit = swpi.opt.est[2],
                        Upper_limit = swpi.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")

#Vietnam 

swpv_salinity_opt_meta<-metaprop(c(sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Salinity"] >= 10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Salinity"] <= 40.9),
           sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Salinity"] >= 10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Salinity"] <= 40.9),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Salinity"] >= 10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Salinity"] <= 40.9),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Salinity"] >= 10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Salinity"] <= 40.9),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Salinity"] >= 10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Salinity"] <= 40.9),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Salinity"] >= 10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Salinity"] <= 40.9),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Salinity"] >= 10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Salinity"] <= 40.9),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Salinity"] >= 10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Salinity"] <= 40.9)),
              c(sum(SWP_Vietnam_growout$ID==1),
               sum(SWP_Vietnam_growout$ID==3),
               sum(SWP_Vietnam_growout$ID==5),
               sum(SWP_Vietnam_growout$ID==7),
               sum(SWP_Vietnam_growout$ID==8),
               sum(SWP_Vietnam_growout$ID==9),
               sum(SWP_Vietnam_growout$ID==10),
               sum(SWP_Vietnam_growout$ID==11)), method = "Inverse")

swpv.opt.est<- plogis(c(swpv_salinity_opt_meta$TE.random,swpv_salinity_opt_meta$lower.random,swpv_salinity_opt_meta$upper.random))


swpv_salinity_opt<-data.frame(Study = "Shrimp Welfare Project: Vietnam",
                        Proportion = swpv.opt.est[1], 
                        Lower_Limit = swpv.opt.est[2],
                        Upper_limit = swpv.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Mixed")
Suboptimal

Now, we compute the prevalence of suboptimal salinity.

#To avoid all farms being in compliance by fiat, we treated the "Less than 2" category as if all farms had salinities less than 0.6.
salinity_sub_vannamei_boyd<- (lindrazba_salinity["6-10","farms_west"]+lindrazba_salinity["2-5","farms_west"])/sum(lindrazba_salinity$farms_west)
salinity_sub_monodon_boyd<- (lindrazba_salinity["6-10","farms_east"]+lindrazba_salinity["2-5","farms_east"])/sum(lindrazba_salinity$farms_east)

lindrazba_salinity_sub_meta<-metaprop(c(lindrazba_salinity["6-10","farms_west"]+lindrazba_salinity["2-5","farms_west"]+lindrazba_salinity["6-10","farms_east"]+lindrazba_salinity["2-5","farms_east"]), c(sum(lindrazba_do$farms_west)+sum(lindrazba_do$farms_east)))

boyd.sub.est<- plogis(c(lindrazba_salinity_sub_meta$TE.random ,lindrazba_salinity_sub_meta$lower.random,lindrazba_salinity_sub_meta$upper.random))


lindrazba_salinity_sub<-data.frame(Study = "Lin & Drazba (2006)",
                        Proportion = boyd.sub.est[1], 
                        Lower_Limit = boyd.sub.est[2],
                        Upper_limit = boyd.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Mixed")



###Venka
salinity_sub_guntar<-suboptimal_salinity(n = venka["Guntar", "SampleSize"],mean = venka["Guntar", "Salinitym"], sd = venka["Guntar", "Salinitysd"] )
salinity_sub_krishna<-suboptimal_salinity(n = venka["Krishna", "SampleSize"],mean = venka["Krishna", "Salinitym"], sd = venka["Krishna", "Salinitysd"] )
salinity_sub_westgodavari<-suboptimal_salinity(n = venka["WestGodavari", "SampleSize"],mean = venka["WestGodavari", "Salinitym"], sd = venka["WestGodavari", "Salinitysd"] )
salinity_sub_eastgodavari<-suboptimal_salinity(n = venka["EastGodavari", "SampleSize"],mean = venka["EastGodavari", "Salinitym"], sd = venka["EastGodavari", "Salinitysd"] )

venka_salinity_sub_meta<-metaprop(c(salinity_sub_guntar,salinity_sub_krishna, salinity_sub_westgodavari, salinity_sub_eastgodavari), c(venka["Guntar", "SampleSize"],venka["Krishna", "SampleSize"],venka["WestGodavari", "SampleSize"],venka["EastGodavari", "SampleSize"]), method = "Inverse")

venka.sub.est<- plogis(c(venka_salinity_sub_meta$TE.random ,venka_salinity_sub_meta$lower.random,venka_salinity_sub_meta$upper.random))


venka_salinity_sub<-data.frame(Study = "Venkateswarlu et al. (2019)",
                        Proportion = venka.sub.est[1], 
                        Lower_Limit = venka.sub.est[2],
                        Upper_limit = venka.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")

###Hukom
##P. vannamei
salinity_sub_tv<-suboptimal_salinity(n = hukom["TradVannamei", "SampleSize"],mean = hukom["TradVannamei", "Salinitym"], sd = hukom["TradVannamei", "Salinitysd"] )
salinity_sub_tpv<-suboptimal_salinity(n = hukom["TradPlusVannamei", "SampleSize"],mean = hukom["TradPlusVannamei", "Salinitym"], sd = hukom["TradPlusVannamei", "Salinitysd"] )

##P. Monodon
salinity_sub_tp<-suboptimal_salinity(n = hukom["TradMonodon", "SampleSize"],mean = hukom["TradMonodon", "Salinitym"], sd = hukom["TradMonodon", "Salinitysd"] )
salinity_sub_tpp<-suboptimal_salinity(n = hukom["TradPlusMonodon", "SampleSize"],mean = hukom["TradPlusMonodon", "Salinitym"], sd = hukom["TradPlusMonodon", "Salinitysd"] )

hukom_salinity_sub_meta<-metaprop(c(salinity_sub_tv,salinity_sub_tpv,salinity_sub_tp,salinity_sub_tpp), c(hukom["TradVannamei", "SampleSize"],hukom["TradPlusVannamei", "SampleSize"],hukom["TradMonodon", "SampleSize"],hukom["TradPlusMonodon", "SampleSize"]), method = "Inverse")

hukom.sub.est<- plogis(c(hukom_salinity_sub_meta$TE.random,hukom_salinity_sub_meta$lower.random,hukom_salinity_sub_meta$upper.random))


hukom_salinity_sub<-data.frame(Study = "Hukom et al. (2020)",
                        Proportion = hukom.sub.est[1], 
                        Lower_Limit = hukom.sub.est[2],
                        Upper_limit = hukom.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Extensive")

###Chowdhury
salinity_sub_shrimprice_chowdhury<-suboptimal_salinity(chowdhury["Shrimp-Rice","SampleSize"], chowdhury["Shrimp-Rice","Salinitym"], chowdhury["Shrimp-Rice","Salinitysd"])
salinity_sub_shrimponly_chowdhury<-suboptimal_salinity(chowdhury["Shrimp-Only","SampleSize"], chowdhury["Shrimp-Only","Salinitym"], chowdhury["Shrimp-Only","Salinitysd"])

chowdhury_salinity_sub_meta<-metaprop(c(salinity_sub_shrimprice_chowdhury,salinity_sub_shrimponly_chowdhury), c(chowdhury["Shrimp-Rice","SampleSize"],chowdhury["Shrimp-Only","SampleSize"]), method = "Inverse")

chowdhury.sub.est<- plogis(c(chowdhury_salinity_sub_meta$TE.random,chowdhury_salinity_sub_meta$lower.random,chowdhury_salinity_sub_meta$upper.random))


chowdhury_salinity_sub<-data.frame(Study = "Chowdhury et al. (2011)",
                        Proportion = chowdhury.sub.est[1], 
                        Lower_Limit = chowdhury.sub.est[2],
                        Upper_limit = chowdhury.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Monodon",
                        Farm_Type = "Extensive")

###Supriatna

salinity_sub_pond1_supriatna<-suboptimal_salinity(supriatna["Pond 1","SampleSize"],supriatna["Pond 1","Salinitym"],supriatna["Pond 1","Salinitysd"])
salinity_sub_pond2_supriatna<-suboptimal_salinity(supriatna["Pond 2","SampleSize"],supriatna["Pond 2","Salinitym"],supriatna["Pond 2","Salinitysd"])
salinity_sub_pond3_supriatna<-suboptimal_salinity(supriatna["Pond 3","SampleSize"],supriatna["Pond 3","Salinitym"],supriatna["Pond 3","Salinitysd"])
salinity_sub_pond4_supriatna<-suboptimal_salinity(supriatna["Pond 4","SampleSize"],supriatna["Pond 4","Salinitym"],supriatna["Pond 4","Salinitysd"])
salinity_sub_pond5_supriatna<-suboptimal_salinity(supriatna["Pond 5","SampleSize"],supriatna["Pond 5","Salinitym"],supriatna["Pond 5","Salinitysd"])
salinity_sub_pond6_supriatna<-suboptimal_salinity(supriatna["Pond 6","SampleSize"],supriatna["Pond 6","Salinitym"],supriatna["Pond 6","Salinitysd"])
salinity_sub_pond7_supriatna<-suboptimal_salinity(supriatna["Pond 7","SampleSize"],supriatna["Pond 7","Salinitym"],supriatna["Pond 7","Salinitysd"])
salinity_sub_pond8_supriatna<-suboptimal_salinity(supriatna["Pond 8","SampleSize"],supriatna["Pond 8","Salinitym"],supriatna["Pond 8","Salinitysd"])

supriatna_salinity_sub_meta<-metaprop(c(salinity_sub_pond1_supriatna,salinity_sub_pond2_supriatna,salinity_sub_pond3_supriatna,salinity_sub_pond4_supriatna,salinity_sub_pond5_supriatna,salinity_sub_pond6_supriatna,
               salinity_sub_pond7_supriatna,salinity_sub_pond8_supriatna), 
         c(supriatna["Pond 1","SampleSize"], supriatna["Pond 2","SampleSize"],supriatna["Pond 3","SampleSize"],supriatna["Pond 4","SampleSize"],
           supriatna["Pond 5","SampleSize"],supriatna["Pond 6","SampleSize"],supriatna["Pond 7","SampleSize"],supriatna["Pond 8","SampleSize"]), method = "Inverse")

supriatna.sub.est<- plogis(c(supriatna_salinity_sub_meta$TE.random,supriatna_salinity_sub_meta$lower.random,supriatna_salinity_sub_meta$upper.random))

supriatna_salinity_sub<-data.frame(Study = "Supriatna et al. (2017)",
                        Proportion = supriatna.sub.est[1], 
                        Lower_Limit = supriatna.sub.est[2],
                        Upper_limit = supriatna.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Intensive")

###SWP

#India

swpi_salinity_sub_meta<-metaprop(sum(SWP_India$Salinity >= 0.6 & SWP_India$Salinity < 10|SWP_India$Salinity > 40.9 & SWP_India$Salinity <= 59), length(SWP_India$Salinity), method = "Inverse")

swpi.sub.est<- plogis(c(swpi_salinity_sub_meta$TE.random,swpi_salinity_sub_meta$lower.random,swpi_salinity_sub_meta$upper.random))


swpi_salinity_sub<-data.frame(Study = "Shrimp Welfare Project: India",
                        Proportion = swpi.sub.est[1], 
                        Lower_Limit = swpi.sub.est[2],
                        Upper_limit = swpi.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")

#Vietnam 


swpv_salinity_sub_meta<-metaprop(c(sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Salinity"] >= 0.6 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Salinity"] < 10)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Salinity"] > 40.9 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Salinity"] <= 59)), sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Salinity"] >= 0.6 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Salinity"] < 10)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Salinity"] > 40.9 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Salinity"] <= 59)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Salinity"] >= 0.6 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Salinity"] < 10)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Salinity"] > 40.9 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Salinity"] <= 59)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Salinity"] >= 0.6 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Salinity"] < 10)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Salinity"] > 40.9 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Salinity"] <= 59)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Salinity"] >= 0.6 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Salinity"] < 10)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Salinity"] > 40.9 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Salinity"] <= 59)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Salinity"] >= 0.6 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Salinity"] < 10)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Salinity"] > 40.9 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Salinity"] <= 59)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Salinity"] >= 0.6 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Salinity"] < 10)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Salinity"] > 40.9 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Salinity"] <= 59)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Salinity"] >= 0.6 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Salinity"] < 10)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Salinity"] > 40.9 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Salinity"] <= 59))),
c(sum(SWP_Vietnam_growout$ID==1),
               sum(SWP_Vietnam_growout$ID==3),
               sum(SWP_Vietnam_growout$ID==5),
               sum(SWP_Vietnam_growout$ID==7),
               sum(SWP_Vietnam_growout$ID==8),
               sum(SWP_Vietnam_growout$ID==9),
               sum(SWP_Vietnam_growout$ID==10),
               sum(SWP_Vietnam_growout$ID==11)), method = "Inverse")

swpv.sub.est<- plogis(c(swpv_salinity_sub_meta$TE.random,swpv_salinity_sub_meta$lower.random,swpv_salinity_sub_meta$upper.random))


swpv_salinity_sub<-data.frame(Study = "Shrimp Welfare Project: Vietnam",
                        Proportion = swpv.sub.est[1], 
                        Lower_Limit = swpv.sub.est[2],
                        Upper_limit = swpv.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Mixed")
Summary Table
salinity_Summary<-data.frame(rbind(lindrazba_salinity_opt,lindrazba_salinity_sub,venka_salinity_opt,venka_salinity_sub,hukom_salinity_opt,hukom_salinity_sub,chowdhury_salinity_opt,chowdhury_salinity_sub,sivraman_salinity_opt,supriatna_salinity_opt,supriatna_salinity_sub,swpi_salinity_opt,swpi_salinity_sub,swpv_salinity_opt,swpv_salinity_sub))


salinity_Summary$Percentage<-round(salinity_Summary$Proportion*100,2)
salinity_Summary$Lower.Percentage<-round(salinity_Summary$Lower_Limit*100,2)
salinity_Summary$Upper.Percentage<-round(salinity_Summary$Upper_limit*100,2)

salinity_Summary

Temperature

For P. vannamei, 25.5 C - 32.4 C is the optimal range; 14.5 - 25.4 C - and 32.5 C - 35.4 C are the suboptimal ranges (Table 11 of Pedrazzani et al., 2023). The optimal range for P. monodon is likely similar (Jackson & Wang, 1998).

optimal_temperature<- function(n, mean, sd) {
  set.seed(124)
  temp_dist<-rnorm(n = n, mean = mean, sd = sd)
  temp_optimal<-sum(temp_dist>= 25.5 & temp_dist<= 32.4)
  return(temp_optimal)
}


suboptimal_temperature<- function(n, mean, sd) {
  set.seed(124)
  temp_dist<-rnorm(n = n, mean = mean, sd = sd)
  temp_suboptimal<-sum((temp_dist>= 14.5 & temp_dist< 25.5)|(temp_dist> 32.4 & temp_dist<= 35.4))
  return(temp_suboptimal)
}
Optimal

Now we compute the prevalence of optimal temperatures on farms.

###Venka
temperature_opt_guntar<-optimal_temperature(n = venka["Guntar", "SampleSize"],mean = venka["Guntar", "Tempm"], sd = venka["Guntar", "Tempsd"] )
temperature_opt_krishna<-optimal_temperature(n = venka["Krishna", "SampleSize"],mean = venka["Krishna", "Tempm"], sd = venka["Krishna", "Tempsd"] )
temperature_opt_westgodavari<-optimal_temperature(n = venka["WestGodavari", "SampleSize"],mean = venka["WestGodavari", "Tempm"], sd = venka["WestGodavari", "Tempsd"] )
temperature_opt_eastgodavari<-optimal_temperature(n = venka["EastGodavari", "SampleSize"],mean = venka["EastGodavari", "Tempm"], sd = venka["EastGodavari", "Tempsd"] )

venka_temperature_opt_meta<-metaprop(c(temperature_opt_guntar,temperature_opt_krishna, temperature_opt_westgodavari, temperature_opt_eastgodavari), c(venka["Guntar", "SampleSize"],venka["Krishna", "SampleSize"],venka["WestGodavari", "SampleSize"],venka["EastGodavari", "SampleSize"]), method = "Inverse")

venka.opt.est<- plogis(c(venka_temperature_opt_meta$TE.random ,venka_temperature_opt_meta$lower.random,venka_temperature_opt_meta$upper.random))


venka_temperature_opt<-data.frame(Study = "Venkateswarlu et al. (2019)",
                        Proportion = venka.opt.est[1], 
                        Lower_Limit = venka.opt.est[2],
                        Upper_limit = venka.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")



###Hukom
##P. vannamei
temperature_opt_tv<-optimal_temperature(n = hukom["TradVannamei", "SampleSize"],mean = hukom["TradVannamei", "Tempm"], sd = hukom["TradVannamei", "Tempsd"] )
temperature_opt_tpv<-optimal_temperature(n = hukom["TradPlusVannamei", "SampleSize"],mean = hukom["TradPlusVannamei", "Tempm"], sd = hukom["TradPlusVannamei", "Tempsd"] )


##P. Monodon
temperature_opt_tp<-optimal_temperature(n = hukom["TradMonodon", "SampleSize"],mean = hukom["TradMonodon", "Tempm"], sd = hukom["TradMonodon", "Tempsd"] )
temperature_opt_tpp<-optimal_temperature(n = hukom["TradPlusMonodon", "SampleSize"],mean = hukom["TradPlusMonodon", "Tempm"], sd = hukom["TradPlusMonodon", "Tempsd"] )


hukom_temperature_opt_meta<-metaprop(c(temperature_opt_tv,temperature_opt_tpv,temperature_opt_tp,temperature_opt_tpp), c(hukom["TradVannamei", "SampleSize"],hukom["TradPlusVannamei", "SampleSize"],hukom["TradMonodon", "SampleSize"],hukom["TradPlusMonodon", "SampleSize"]), method = "Inverse")

hukom.opt.est<- plogis(c(hukom_temperature_opt_meta$TE.random,hukom_temperature_opt_meta$lower.random,hukom_temperature_opt_meta$upper.random))


hukom_temperature_opt<-data.frame(Study = "Hukom et al. (2020)",
                        Proportion = hukom.opt.est[1], 
                        Lower_Limit = hukom.opt.est[2],
                        Upper_limit = hukom.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Extensive")


###Chowdhury
temperature_opt_shrimprice_chowdhury<-optimal_temperature(chowdhury["Shrimp-Rice","SampleSize"], chowdhury["Shrimp-Rice","Tempm"], chowdhury["Shrimp-Rice","Tempsd"])
temperature_opt_shrimponly_chowdhury<-optimal_temperature(chowdhury["Shrimp-Only","SampleSize"], chowdhury["Shrimp-Only","Tempm"], chowdhury["Shrimp-Only","Tempsd"])

chowdhury_temperature_opt_meta<-metaprop(c(temperature_opt_shrimprice_chowdhury,temperature_opt_shrimponly_chowdhury), c(chowdhury["Shrimp-Rice","SampleSize"],chowdhury["Shrimp-Only","SampleSize"]), method = "Inverse")

chowdhury.opt.est<- plogis(c(chowdhury_temperature_opt_meta$TE.random,chowdhury_temperature_opt_meta$lower.random,chowdhury_temperature_opt_meta$upper.random))


chowdhury_temperature_opt<-data.frame(Study = "Chowdhury et al. (2011)",
                        Proportion = chowdhury.opt.est[1], 
                        Lower_Limit = chowdhury.opt.est[2],
                        Upper_limit = chowdhury.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Monodon",
                        Farm_Type = "Extensive")


###Supriatna

temperature_opt_pond1_supriatna<-optimal_temperature(supriatna["Pond 1","SampleSize"],supriatna["Pond 1","Tempm"],supriatna["Pond 1","Tempsd"])
temperature_opt_pond2_supriatna<-optimal_temperature(supriatna["Pond 2","SampleSize"],supriatna["Pond 2","Tempm"],supriatna["Pond 2","Tempsd"])
temperature_opt_pond3_supriatna<-optimal_temperature(supriatna["Pond 3","SampleSize"],supriatna["Pond 3","Tempm"],supriatna["Pond 3","Tempsd"])
temperature_opt_pond4_supriatna<-optimal_temperature(supriatna["Pond 4","SampleSize"],supriatna["Pond 4","Tempm"],supriatna["Pond 4","Tempsd"])
temperature_opt_pond5_supriatna<-optimal_temperature(supriatna["Pond 5","SampleSize"],supriatna["Pond 5","Tempm"],supriatna["Pond 5","Tempsd"])
temperature_opt_pond6_supriatna<-optimal_temperature(supriatna["Pond 6","SampleSize"],supriatna["Pond 6","Tempm"],supriatna["Pond 6","Tempsd"])
temperature_opt_pond7_supriatna<-optimal_temperature(supriatna["Pond 7","SampleSize"],supriatna["Pond 7","Tempm"],supriatna["Pond 7","Tempsd"])
temperature_opt_pond8_supriatna<-optimal_temperature(supriatna["Pond 8","SampleSize"],supriatna["Pond 8","Tempm"],supriatna["Pond 8","Tempsd"])

supriatna_temperature_opt_meta<-metaprop(c(temperature_opt_pond1_supriatna,temperature_opt_pond2_supriatna,temperature_opt_pond3_supriatna,temperature_opt_pond4_supriatna,temperature_opt_pond5_supriatna,temperature_opt_pond6_supriatna,
               temperature_opt_pond7_supriatna,temperature_opt_pond8_supriatna), 
         c(supriatna["Pond 1","SampleSize"], supriatna["Pond 2","SampleSize"],supriatna["Pond 3","SampleSize"],supriatna["Pond 4","SampleSize"],
           supriatna["Pond 5","SampleSize"],supriatna["Pond 6","SampleSize"],supriatna["Pond 7","SampleSize"],supriatna["Pond 8","SampleSize"]), method = "Inverse")



supriatna.opt.est<- plogis(c(supriatna_temperature_opt_meta$TE.random,supriatna_temperature_opt_meta$lower.random,supriatna_temperature_opt_meta$upper.random))


supriatna_temperature_opt<-data.frame(Study = "Supriatna et al. (2017)",
                        Proportion = supriatna.opt.est[1], 
                        Lower_Limit = supriatna.opt.est[2],
                        Upper_limit = supriatna.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Intensive")


###SWP

#India

swpi_temperature_opt_meta<-metaprop(sum(SWP_India$Temp >= 25.5 & SWP_India$Temp <= 32.4), length(SWP_India$Temp), method = "Inverse")

swpi.opt.est<- plogis(c(swpi_temperature_opt_meta$TE.random,swpi_temperature_opt_meta$lower.random,swpi_temperature_opt_meta$upper.random))


swpi_temperature_opt<-data.frame(Study = "Shrimp Welfare Project: India",
                        Proportion = swpi.opt.est[1], 
                        Lower_Limit = swpi.opt.est[2],
                        Upper_limit = swpi.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")


#Vietnam 

swpv_temperature_opt_meta<-metaprop(c(sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Temperature"] >= 25.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Temperature"] <= 32.4),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Temperature"] >= 25.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Temperature"] <= 32.4),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Temperature"] >= 25.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Temperature"] <= 32.4),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Temperature"] >= 25.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Temperature"] <= 32.4),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Temperature"] >= 25.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Temperature"] <= 32.4),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Temperature"] >= 25.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Temperature"] <= 32.4),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Temperature"] >= 25.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Temperature"] <= 32.4),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Temperature"] >= 25.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Temperature"] <= 32.4)),
              c(sum(SWP_Vietnam_growout$ID==1),
               sum(SWP_Vietnam_growout$ID==3),
               sum(SWP_Vietnam_growout$ID==5),
               sum(SWP_Vietnam_growout$ID==7),
               sum(SWP_Vietnam_growout$ID==8),
               sum(SWP_Vietnam_growout$ID==9),
               sum(SWP_Vietnam_growout$ID==10),
               sum(SWP_Vietnam_growout$ID==11)), method = "Inverse")

swpv.opt.est<- plogis(c(swpv_temperature_opt_meta$TE.random,swpv_temperature_opt_meta$lower.random,swpv_temperature_opt_meta$upper.random))


swpv_temperature_opt<-data.frame(Study = "Shrimp Welfare Project: Vietnam",
                        Proportion = swpv.opt.est[1], 
                        Lower_Limit = swpv.opt.est[2],
                        Upper_limit = swpv.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Mixed")
Suboptimal

Now we compute the prevalence of suboptimal temperatures on farms.

###Venka
temperature_sub_guntar<-suboptimal_temperature(n = venka["Guntar", "SampleSize"],mean = venka["Guntar", "Tempm"], sd = venka["Guntar", "Tempsd"] )
temperature_sub_krishna<-suboptimal_temperature(n = venka["Krishna", "SampleSize"],mean = venka["Krishna", "Tempm"], sd = venka["Krishna", "Tempsd"] )
temperature_sub_westgodavari<-suboptimal_temperature(n = venka["WestGodavari", "SampleSize"],mean = venka["WestGodavari", "Tempm"], sd = venka["WestGodavari", "Tempsd"] )
temperature_sub_eastgodavari<-suboptimal_temperature(n = venka["EastGodavari", "SampleSize"],mean = venka["EastGodavari", "Tempm"], sd = venka["EastGodavari", "Tempsd"] )


venka_temperature_sub_meta<-metaprop(c(temperature_sub_guntar,temperature_sub_krishna, temperature_sub_westgodavari, temperature_sub_eastgodavari), c(venka["Guntar", "SampleSize"],venka["Krishna", "SampleSize"],venka["WestGodavari", "SampleSize"],venka["EastGodavari", "SampleSize"]), method = "Inverse")

venka.sub.est<- plogis(c(venka_temperature_sub_meta$TE.random ,venka_temperature_sub_meta$lower.random,venka_temperature_sub_meta$upper.random))


venka_temperature_sub<-data.frame(Study = "Venkateswarlu et al. (2019)",
                        Proportion = venka.sub.est[1], 
                        Lower_Limit = venka.sub.est[2],
                        Upper_limit = venka.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")

###Hukom
##P. vannamei
temperature_sub_tv<-suboptimal_temperature(n = hukom["TradVannamei", "SampleSize"],mean = hukom["TradVannamei", "Tempm"], sd = hukom["TradVannamei", "Tempsd"] )
temperature_sub_tpv<-suboptimal_temperature(n = hukom["TradPlusVannamei", "SampleSize"],mean = hukom["TradPlusVannamei", "Tempm"], sd = hukom["TradPlusVannamei", "Tempsd"] )

##P. Monodon
temperature_sub_tp<-suboptimal_temperature(n = hukom["TradMonodon", "SampleSize"],mean = hukom["TradMonodon", "Tempm"], sd = hukom["TradMonodon", "Tempsd"] )
temperature_sub_tpp<-suboptimal_temperature(n = hukom["TradPlusMonodon", "SampleSize"],mean = hukom["TradPlusMonodon", "Tempm"], sd = hukom["TradPlusMonodon", "Tempsd"] )

hukom_temperature_sub_meta<-metaprop(c(temperature_sub_tv,temperature_sub_tpv,temperature_sub_tp,temperature_sub_tpp), c(hukom["TradVannamei", "SampleSize"],hukom["TradPlusVannamei", "SampleSize"],hukom["TradMonodon", "SampleSize"],hukom["TradPlusMonodon", "SampleSize"]), method = "Inverse")

hukom.sub.est<- plogis(c(hukom_temperature_sub_meta$TE.random,hukom_temperature_sub_meta$lower.random,hukom_temperature_sub_meta$upper.random))


hukom_temperature_sub<-data.frame(Study = "Hukom et al. (2020)",
                        Proportion = hukom.sub.est[1], 
                        Lower_Limit = hukom.sub.est[2],
                        Upper_limit = hukom.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Extensive")


###Chowdhury
temperature_sub_shrimprice_chowdhury<-suboptimal_temperature(chowdhury["Shrimp-Rice","SampleSize"], chowdhury["Shrimp-Rice","Tempm"], chowdhury["Shrimp-Rice","Tempsd"])
temperature_sub_shrimponly_chowdhury<-suboptimal_temperature(chowdhury["Shrimp-Only","SampleSize"], chowdhury["Shrimp-Only","Tempm"], chowdhury["Shrimp-Only","Tempsd"])

chowdhury_temperature_sub_meta<-metaprop(c(temperature_sub_shrimprice_chowdhury,temperature_sub_shrimponly_chowdhury), c(chowdhury["Shrimp-Rice","SampleSize"],chowdhury["Shrimp-Only","SampleSize"]), method = "Inverse")

chowdhury.sub.est<- plogis(c(chowdhury_temperature_sub_meta$TE.random,chowdhury_temperature_sub_meta$lower.random,chowdhury_temperature_sub_meta$upper.random))


chowdhury_temperature_sub<-data.frame(Study = "Chowdhury et al. (2011)",
                        Proportion = chowdhury.sub.est[1], 
                        Lower_Limit = chowdhury.sub.est[2],
                        Upper_limit = chowdhury.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Monodon",
                        Farm_Type = "Extensive")

###Supriatna

temperature_sub_pond1_supriatna<-suboptimal_temperature(supriatna["Pond 1","SampleSize"],supriatna["Pond 1","Tempm"],supriatna["Pond 1","Tempsd"])
temperature_sub_pond2_supriatna<-suboptimal_temperature(supriatna["Pond 2","SampleSize"],supriatna["Pond 2","Tempm"],supriatna["Pond 2","Tempsd"])
temperature_sub_pond3_supriatna<-suboptimal_temperature(supriatna["Pond 3","SampleSize"],supriatna["Pond 3","Tempm"],supriatna["Pond 3","Tempsd"])
temperature_sub_pond4_supriatna<-suboptimal_temperature(supriatna["Pond 4","SampleSize"],supriatna["Pond 4","Tempm"],supriatna["Pond 4","Tempsd"])
temperature_sub_pond5_supriatna<-suboptimal_temperature(supriatna["Pond 5","SampleSize"],supriatna["Pond 5","Tempm"],supriatna["Pond 5","Tempsd"])
temperature_sub_pond6_supriatna<-suboptimal_temperature(supriatna["Pond 6","SampleSize"],supriatna["Pond 6","Tempm"],supriatna["Pond 6","Tempsd"])
temperature_sub_pond7_supriatna<-suboptimal_temperature(supriatna["Pond 7","SampleSize"],supriatna["Pond 7","Tempm"],supriatna["Pond 7","Tempsd"])
temperature_sub_pond8_supriatna<-suboptimal_temperature(supriatna["Pond 8","SampleSize"],supriatna["Pond 8","Tempm"],supriatna["Pond 8","Tempsd"])

supriatna_temperature_sub_meta<-metaprop(c(temperature_sub_pond1_supriatna,temperature_sub_pond2_supriatna,temperature_sub_pond3_supriatna,temperature_sub_pond4_supriatna,temperature_sub_pond5_supriatna,temperature_sub_pond6_supriatna,
               temperature_sub_pond7_supriatna,temperature_sub_pond8_supriatna), 
         c(supriatna["Pond 1","SampleSize"], supriatna["Pond 2","SampleSize"],supriatna["Pond 3","SampleSize"],supriatna["Pond 4","SampleSize"],
           supriatna["Pond 5","SampleSize"],supriatna["Pond 6","SampleSize"],supriatna["Pond 7","SampleSize"],supriatna["Pond 8","SampleSize"]), method = "Inverse")



supriatna.sub.est<- plogis(c(supriatna_temperature_sub_meta$TE.random,supriatna_temperature_sub_meta$lower.random,supriatna_temperature_sub_meta$upper.random))


supriatna_temperature_sub<-data.frame(Study = "Supriatna et al. (2017)",
                        Proportion = supriatna.sub.est[1], 
                        Lower_Limit = supriatna.sub.est[2],
                        Upper_limit = supriatna.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Intensive")

###SWP

#India

swpi_temperature_sub_meta<-metaprop(sum((SWP_India$Temp >= 14.5 & SWP_India$Temp < 25.5)|
                           (SWP_India$Temp > 32.4 & SWP_India$Temp <= 35.4)), length(SWP_India$Temp), method = "Inverse")

swpi.sub.est<- plogis(c(swpi_temperature_sub_meta$TE.random,swpi_temperature_sub_meta$lower.random,swpi_temperature_sub_meta$upper.random))


swpi_temperature_sub<-data.frame(Study = "Shrimp Welfare Project: India",
                        Proportion = swpi.sub.est[1], 
                        Lower_Limit = swpi.sub.est[2],
                        Upper_limit = swpi.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")

#Vietnam 

swpv_temperature_sub_meta<-metaprop(c(sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Temperature"] >= 14.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Temperature"] < 25.5)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Temperature"] > 32.4 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "Temperature"] <= 35.4)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Temperature"] >= 14.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Temperature"] < 25.5)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Temperature"] > 32.4 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "Temperature"] <= 35.4)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Temperature"] >= 14.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Temperature"] < 25.5)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Temperature"] > 32.4 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "Temperature"] <= 35.4)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Temperature"] >= 14.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Temperature"] < 25.5)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Temperature"] > 32.4 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "Temperature"] <= 35.4)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Temperature"] >= 14.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Temperature"] < 25.5)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Temperature"] > 32.4 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "Temperature"] <= 35.4)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Temperature"] >= 14.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Temperature"] < 25.5)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Temperature"] > 32.4 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "Temperature"] <= 35.4)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Temperature"] >= 14.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Temperature"] < 25.5)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Temperature"] > 32.4 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "Temperature"] <= 35.4)),
sum((SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Temperature"] >= 14.5 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Temperature"] < 25.5)|(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Temperature"] > 32.4 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "Temperature"] <= 35.4))),
              c(sum(SWP_Vietnam_growout$ID==1),
               sum(SWP_Vietnam_growout$ID==3),
               sum(SWP_Vietnam_growout$ID==5),
               sum(SWP_Vietnam_growout$ID==7),
               sum(SWP_Vietnam_growout$ID==8),
               sum(SWP_Vietnam_growout$ID==9),
               sum(SWP_Vietnam_growout$ID==10),
               sum(SWP_Vietnam_growout$ID==11)), method = "Inverse")

swpv.sub.est<- plogis(c(swpv_temperature_sub_meta$TE.random,swpv_temperature_sub_meta$lower.random,swpv_temperature_sub_meta$upper.random))


swpv_temperature_sub<-data.frame(Study = "Shrimp Welfare Project: Vietnam",
                        Proportion = swpv.sub.est[1], 
                        Lower_Limit = swpv.sub.est[2],
                        Upper_limit = swpv.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Mixed")
Summary Table
temperature_Summary<-data.frame(rbind(venka_temperature_opt,venka_temperature_sub,hukom_temperature_opt,hukom_temperature_sub,chowdhury_temperature_opt,chowdhury_temperature_sub,supriatna_temperature_opt,supriatna_temperature_sub,swpi_temperature_opt,swpi_temperature_sub,swpv_temperature_opt,swpv_temperature_sub))


temperature_Summary$Percentage<-round(temperature_Summary$Proportion*100,2)
temperature_Summary$Lower.Percentage<-round(temperature_Summary$Lower_Limit*100,2)
temperature_Summary$Upper.Percentage<-round(temperature_Summary$Upper_limit*100,2)

temperature_Summary

Un-ionized Ammonia

Only the Shrimp Welfare Project datasets measured un-ionized ammonia. Some of the others measured total ammonia. Although standards exist for how much combined total ammonia is appropriate, we only include measurements of un-ionized ammonia because it is much more relevant to shrimp welfare.

For P. Vannamei, the optimal range 0-.10 mg/L and the suboptimal range is .11-.30 mg/L (Table 11 of Pedrazzani et al., 2023). We assumed that the ranges for P. Monodon are similar enough to ignore here Chen et al., 1990.

Optimal

We begin by estimating compliance with optimal ammonia levels.

###SWP

#India

swpi_ammonia_opt_meta<-metaprop(sum(SWP_India$Un_Ammonia <= .10), length(SWP_India$Un_Ammonia), method = "Inverse")

swpi.opt.est<- plogis(c(swpi_ammonia_opt_meta$TE.random,swpi_ammonia_opt_meta$lower.random,swpi_ammonia_opt_meta$upper.random))


swpi_ammonia_opt<-data.frame(Study = "Shrimp Welfare Project: India",
                        Proportion = swpi.opt.est[1], 
                        Lower_Limit = swpi.opt.est[2],
                        Upper_limit = swpi.opt.est[3],
                        Range = "Optimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")

#Vietnam 

swpv_ammonia_opt_meta<-metaprop(c(sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "NH3"] <= 0.10),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "NH3"] <= 0.10),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "NH3"] <= 0.10),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "NH3"] <= 0.10),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "NH3"] <= 0.10),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "NH3"] <= 0.10),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "NH3"] <= 0.10),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "NH3"] <= 0.10)),
              c(sum(SWP_Vietnam_growout$ID==1),
               sum(SWP_Vietnam_growout$ID==3),
               sum(SWP_Vietnam_growout$ID==5),
               sum(SWP_Vietnam_growout$ID==7),
               sum(SWP_Vietnam_growout$ID==8),
               sum(SWP_Vietnam_growout$ID==9),
               sum(SWP_Vietnam_growout$ID==10),
               sum(SWP_Vietnam_growout$ID==11)), method = "Inverse")

swpv.opt.est<- plogis(c(swpv_ammonia_opt_meta$TE.random,swpv_ammonia_opt_meta$lower.random,swpv_ammonia_opt_meta$upper.random))


swpv_ammonia_opt<-data.frame(Study = "Shrimp Welfare Project: Vietnam",
                        Proportion = swpv.opt.est[1], 
                        Lower_Limit = swpv.opt.est[2],
                        Upper_limit = swpv.opt.est[3],
                        Range = "Optimal",
                        Species = "Both",
                        Farm_Type = "Mixed")
Suboptimal

Next, we estimate compliance with suboptimal ammonia levels.

#India
swpi_ammonia_sub_meta<-metaprop(sum(SWP_India$Un_Ammonia > .10 & SWP_India$Un_Ammonia <= .30), length(SWP_India$Un_Ammonia), method = "Inverse")

swpi.sub.est<- plogis(c(swpi_ammonia_sub_meta$TE.random,swpi_ammonia_sub_meta$lower.random,swpi_ammonia_sub_meta$upper.random))


swpi_ammonia_sub<-data.frame(Study = "Shrimp Welfare Project: India",
                        Proportion = swpi.sub.est[1], 
                        Lower_Limit = swpi.sub.est[2],
                        Upper_limit = swpi.sub.est[3],
                        Range = "Suboptimal",
                        Species = "P. Vannamei",
                        Farm_Type = "Semi-Intensive")

#Vietnam 

swpv_ammonia_sub_meta<-metaprop(c(sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "NH3"] > 0.10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 1, "NH3"] <= 0.30),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "NH3"] > 0.10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 3, "NH3"] <= 0.30),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "NH3"] > 0.10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 5, "NH3"] <= 0.30),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "NH3"] > 0.10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 7, "NH3"] <= 0.30),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "NH3"] > 0.10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 8, "NH3"] <= 0.30),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "NH3"] > 0.10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 9, "NH3"] <= 0.30),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "NH3"] > 0.10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 10, "NH3"] <= 0.30),
sum(SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "NH3"] > 0.10 & SWP_Vietnam_growout[SWP_Vietnam_growout$ID == 11, "NH3"] <= 0.30)),
              c(sum(SWP_Vietnam_growout$ID==1),
               sum(SWP_Vietnam_growout$ID==3),
               sum(SWP_Vietnam_growout$ID==5),
               sum(SWP_Vietnam_growout$ID==7),
               sum(SWP_Vietnam_growout$ID==8),
               sum(SWP_Vietnam_growout$ID==9),
               sum(SWP_Vietnam_growout$ID==10),
               sum(SWP_Vietnam_growout$ID==11)), method = "Inverse")

swpv.sub.est<- plogis(c(swpv_ammonia_sub_meta$TE.random,swpv_ammonia_sub_meta$lower.random,swpv_ammonia_sub_meta$upper.random))


swpv_ammonia_sub<-data.frame(Study = "Shrimp Welfare Project: Vietnam",
                        Proportion = swpv.sub.est[1], 
                        Lower_Limit = swpv.sub.est[2],
                        Upper_limit = swpv.sub.est[3],
                        Range = "Suboptimal",
                        Species = "Both",
                        Farm_Type = "Mixed")
Summary Table
ammonia_Summary<-data.frame(rbind(swpi_ammonia_opt,swpi_ammonia_sub,swpv_ammonia_opt,swpv_ammonia_sub))


ammonia_Summary$Percentage<-round(ammonia_Summary$Proportion*100,2)
ammonia_Summary$Lower.Percentage<-round(ammonia_Summary$Lower_Limit*100,2)
ammonia_Summary$Upper.Percentage<-round(ammonia_Summary$Upper_limit*100,2)

ammonia_Summary

Main Takeaways

Dissolved oxygen

DO_Summary$Species<-factor(DO_Summary$Species,levels=c("P. Vannamei", "P. Monodon", "Both"))


DOplot<-ggplot(DO_Summary) +
  geom_pointrange(aes(y = Study,  x = Percentage, xmin = Lower.Percentage, xmax = Upper.Percentage,color = Farm_Type, shape = Species)) +
  facet_wrap(~Range, scales = "free_y", ncol = 1)+
    labs(title = "Prevalence of Optimal and Suboptimal Dissolved Oxygen",
    x = "Percentage of Measurement Occasions", y = "Study") +
  scale_colour_manual(values=c( "#E69F00", "#56B4E9" ,"#009E73", "#cc79a7"))+
  scale_x_continuous(limits = c(0, 100), breaks = c(0, 25, 50, 75, 100))+
theme(plot.title = element_text(hjust = 0.5, size = 14), 
        axis.text.y=element_text(lineheight=5)) +
  theme(#legend.position="bottom",legend.title=element_blank(), 
        legend.text.align = 0, legend.key=element_rect(fill=NA),
        legend.margin=margin(c(.5,6,.5,.5)),
        legend.box.background=element_rect(color="black", linewidth=.3), 
        legend.background = element_blank(),
        legend.box.spacing=margin(c(22)),
        legend.text = element_text(
          margin = margin(r = .09, l=-.05,unit = "in"), 
          lineheight=20)) +
  guides(shape = guide_legend(title = "Species"),
         color = guide_legend(title = "Production Type")) +
  labs(caption = "Shapes are means and error bars are 95% confidence intervals")+ 
  theme(plot.caption = element_text(hjust = .5)) +
  scale_shape_manual(values=c(16,17,15),labels=c(expression(italic("P. vannamei")), expression(italic("P. monodon")),"Both") )
DOplot

#ggsave("DO.png", plot = DOplot, width = 6.5, height = 3.25, dpi = 300)

pH

ph_Summary$Species<-factor(ph_Summary$Species,levels=c("P. Vannamei", "P. Monodon", "Both"))

pHplot<-ggplot(ph_Summary) +
  geom_pointrange(aes(y = Study,  x = Percentage, xmin = Lower.Percentage, xmax = Upper.Percentage,color = Farm_Type, shape = Species)) +
  facet_wrap(~Range, scales = "free_y", ncol = 1)+
    labs(title = "Prevalence of Optimal and Suboptimal pH",
         x = "Percentage of Measurement Occasions", y = "Study") +
  scale_colour_manual(values=c( "#E69F00", "#56B4E9" ,"#009E73", "#cc79a7"))+
  scale_x_continuous(limits = c(0, 100), breaks = c(0, 25, 50, 75, 100))+
theme(plot.title = element_text(hjust = 0.5, size = 14), 
        axis.text.y=element_text(lineheight=5)) +
  theme(#legend.position="bottom",legend.title=element_blank(), 
        legend.text.align = 0, legend.key=element_rect(fill=NA),
        legend.margin=margin(c(.5,6,.5,.5)),
        legend.box.background=element_rect(color="black", linewidth=.3), 
        legend.background = element_blank(),
        legend.box.spacing=margin(c(22)),
        legend.text = element_text(
          margin = margin(r = .09, l=-.05,unit = "in"), 
          lineheight=20)) +
  guides(shape = guide_legend(title = "Species"),
         color = guide_legend(title = "Production Type")) +
  labs(caption = "Shapes are means and error bars are 95% confidence intervals")+ 
  theme(plot.caption = element_text(hjust = .5)) +
  scale_shape_manual(values=c(16,17,15),labels=c(expression(italic("P. vannamei")), expression(italic("P. monodon")),"Both") )
pHplot

#ggsave("pH.png", plot = pHplot, width = 6.5, height = 3.25, dpi = 300)

Salinity

salinity_Summary$Species<-factor(salinity_Summary$Species,levels=c("P. Vannamei", "P. Monodon", "Both"))

Salinityplot<-ggplot(salinity_Summary) +
  geom_pointrange(aes(y = Study,  x = Percentage, xmin = Lower.Percentage, xmax = Upper.Percentage,color = Farm_Type, shape = Species)) +
  facet_wrap(~Range, scales = "free_y", ncol = 1)+
    labs(title = "Prevalence of Optimal and Suboptimal Salinity",
    x = "Percentage of Measurement Occasions", y = "Study") +
  scale_colour_manual(values=c( "#E69F00", "#56B4E9" ,"#009E73", "#cc79a7"))+
  scale_x_continuous(limits = c(0, 100), breaks = c(0, 25, 50, 75, 100))+
theme(plot.title = element_text(hjust = 0.5, size = 14), 
        axis.text.y=element_text(lineheight=5)) +
  theme(#legend.position="bottom",legend.title=element_blank(), 
        legend.text.align = 0, legend.key=element_rect(fill=NA),
        legend.margin=margin(c(.5,6,.5,.5)),
        legend.box.background=element_rect(color="black", linewidth=.3), 
        legend.background = element_blank(),
        legend.box.spacing=margin(c(22)),
        legend.text = element_text(
          margin = margin(r = .09, l=-.05,unit = "in"), 
          lineheight=20)) +
  guides(shape = guide_legend(title = "Species"),
         color = guide_legend(title = "Production Type")) +
  labs(caption = "Shapes are means and error bars are 95% confidence intervals")+ 
  theme(plot.caption = element_text(hjust = .5)) +
  scale_shape_manual(values=c(16,17,15),labels=c(expression(italic("P. vannamei")), expression(italic("P. monodon")),"Both") )
Salinityplot

#ggsave("Salinity.png", plot = Salinityplot, width = 6.5, height = 3.25, dpi = 300)

Temperature

temperature_Summary$Species<-factor(temperature_Summary$Species,levels=c("P. Vannamei", "P. Monodon", "Both"))

Tempplot<-ggplot(temperature_Summary) +
  geom_pointrange(aes(y = Study,  x = Percentage, xmin = Lower.Percentage, xmax = Upper.Percentage,color = Farm_Type, shape = Species)) +
  facet_wrap(~Range, scales = "free_y", ncol = 1)+
    labs(title = "Prevalence of Optimal and Suboptimal Temperature",
    x = "Percentage of Measurement Occasions", y = "Study") +
  scale_colour_manual(values=c( "#E69F00", "#56B4E9" ,"#009E73", "#cc79a7"))+
  scale_x_continuous(limits = c(0, 100), breaks = c(0, 25, 50, 75, 100))+
theme(plot.title = element_text(hjust = 0.5, size = 14), 
        axis.text.y=element_text(lineheight=5)) +
  theme(#legend.position="bottom",legend.title=element_blank(), 
        legend.text.align = 0, legend.key=element_rect(fill=NA),
        legend.margin=margin(c(.5,6,.5,.5)),
        legend.box.background=element_rect(color="black", linewidth=.3), 
        legend.background = element_blank(),
        legend.box.spacing=margin(c(22)),
        legend.text = element_text(
          margin = margin(r = .09, l=-.05,unit = "in"), 
          lineheight=20)) +
  guides(shape = guide_legend(title = "Species"),
         color = guide_legend(title = "Production Type")) +
  labs(caption = "Shapes are means and error bars are 95% confidence intervals")+ 
  theme(plot.caption = element_text(hjust = .5)) +
  scale_shape_manual(values=c(16,17,15),labels=c(expression(italic("P. vannamei")), expression(italic("P. monodon")),"Both") )
Tempplot

#ggsave("Temp.png", plot = Tempplot, width = 6.5, height = 3.25, dpi = 300)

Un-ionized Ammonia

ammonia_Summary$Species<-factor(ammonia_Summary$Species,levels=c("P. Vannamei", "P. Monodon", "Both"))


Ammoniaplot<-ggplot(ammonia_Summary) +
  geom_pointrange(aes(y = Study,  x = Percentage, xmin = Lower.Percentage, xmax = Upper.Percentage,color = Farm_Type, shape = Species)) +
  facet_wrap(~Range, scales = "free_y", ncol = 1)+
    labs(title = "Prevalence of Optimal and Suboptimal Un-ionized Ammonia",
    x = "Percentage of Measurement Occasions", y = "Study") +
  scale_colour_manual(values=c( "#E69F00", "#56B4E9" ,"#009E73", "#cc79a7"))+
  scale_x_continuous(limits = c(0, 100), breaks = c(0, 25, 50, 75, 100))+
theme(plot.title = element_text(hjust = 0.5, size = 14), 
        axis.text.y=element_text(lineheight=5)) +
  theme(#legend.position="bottom",legend.title=element_blank(), 
        legend.text.align = 0, legend.key=element_rect(fill=NA),
        legend.margin=margin(c(.5,6,.5,.5)),
        legend.box.background=element_rect(color="black", linewidth=.3), 
        legend.background = element_blank(),
        legend.box.spacing=margin(c(22)),
        legend.text = element_text(
          margin = margin(r = .09, l=-.05,unit = "in"), 
          lineheight=20)) +
  guides(shape = guide_legend(title = "Species"),
         color = guide_legend(title = "Production Type")) +
  labs(caption = "Shapes are means and error bars are 95% confidence intervals")+ 
  theme(plot.caption = element_text(hjust = .5)) +
  scale_shape_manual(values=c(16,17,15),labels=c(expression(italic("P. vannamei")), expression(italic("P. monodon")),"Both") )
Ammoniaplot

#ggsave("ammonia.png", plot = Ammoniaplot, width = 6.5, height = 3.25, dpi = 300)

Limitations

There are several caveats to keep in mind when interpreting the results: