Graphical and statistical analyses of environmental data, with focus on analyzing chemical concentrations and physical parameters, usually in the context of mandated environmental monitoring. Major environmental statistical methods found in the literature and regulatory guidance documents, with extensive help that explains what these methods do, how to use them, and where to find them in the literature. Numerous built-in data sets from regulatory guidance documents and environmental statistics literature. Includes scripts reproducing analyses presented in the book "EnvStats: An R Package for Environmental Statistics" (Millard, 2013, Springer, ISBN 978-1-4614-8455-4, < http://www.springer.com/book/9781461484554>).

Changes in Version 2.1.1, 2016.06.13:

```
o Updated the function stripChart():
-- For the case when there are two independent groups and
plot.diff=TRUE and paired=TRUE:
++ Adjusted the default value of diff.lim.
++ Added the argument diff.method to indicate what method to use to
plot the paired differences. The default value is diff.method="stack".
-- For the case when there are two independent groups and
plot.diff=TRUE and paired=FALSE:
++ The default value for the argument diff.lim (which determines the
range on the axis associated with the confidence interval for the
difference between groups) is now on the same scale as the range of
the original observations.
++ The default location of the confidence interval for the difference
between groups has changed slightly.
-- Fixed a bug for the case when ci.and.test='parametric' and the argument
test.arg.list contains components named 'paired' and 'var.equal'.
-- When the argument test.arg.list is supplied with a component named
'paired' and the value of that component does not match the value of
the argument 'paired', the value of the component is set to the value of
the argument 'paired' and a warning is issued.
-- Fixed a bug for the case when add=TRUE.
o Updated the function summaryStats():
-- Takes the new argument 'paired' applicable to the case when there are 2 groups
that are paired observations.
++ When paired=TRUE and p.value=TRUE, the paired t-test
or paired Wilcoxon test is performed.
-- Fixed bug for the case when there are 2 independent groups, test="parametric",
and the argument 'test.arg.list' contains the component paired=TRUE.
o Updated the functions enormCensored() and elnormCensored():
-- The argument 'method' now accepts the values "ROS" and "rROS"
(i.e., you can set method="ROS" or method="rROS").
++ The ROS method denotes the Regression on Order Statistics method.
This method is equivalent to the already existing method
Quantile-Quantile Regression (method ="qq.reg").
++ The rROS method denotes the robust Regression on Order Statistics method.
This method is equivalent to the already existing method
Imputation Using Quantile-Quantile Regression (method ="impute.w.qq.reg").
o Updated the function elnormAltCensored():
-- The argument 'method' now accepts the value "rROS" (i.e., you can set
method="rROS"), denoting the robust Regression on Order Statistics method.
This method is equivalent to the already existing method
Imputation Using Quantile-Quantile Regression (method ="impute.w.qq.reg").
```

========================

Changes in Version 2.1.0, 2016.04.18:

```
o Added the datasets ACE.13.TCE.df and Helsel.Hirsch.02.Mayfly.df.
o Updated summaryStats():
-- Fixed bug so it does not return an error when the argument 'object' is a
logical or character vector.
-- Fixed bug so it uses the argument test.arg.list in the case when there
are 2 groups, test="parametric", and group.p.value.type="within".
-- When p.value=TRUE and there are 2 groups, added estimate of difference in
location to output:
when test="parametric" shows the difference between the means, and
when test="nonparametric" shows the median of the difference between
a sample from group 1 and a sample from group 2.
o Updated stripChart():
-- Takes new argument 'plot.diff' applicable to the case when there are 2 groups.
++ When plot.diff=TRUE and paired=FALSE, the confidence interval
for the difference between the two locations is displayed and the right axis
(when vertical=TRUE) or top axis (when vertical=FALSE) is labeled in units of
the confidence interval for the difference between the two locations.
++ When plot.diff=TRUE and paired=TRUE, the paired differences are
displayed and the right axis (when vertical=TRUE) or
top axis (when vertical=FALSE) is labeled in units of the paired differences.
In addition, if show.ci=TRUE, the confidence interval based on the paired
differences is displayed.
-- Takes new argument 'paired' applicable to the case when there are
2 groups that are paired observations.
++ When paired=TRUE and p.value=TRUE, the paired t-test
or paired Wilcoxon test is performed.
-- Takes new argument 'paired.lines'.
When paired=TRUE and paired.lines=TRUE, lines are drawn between the
paired observations.
-- Takes new argument 'paired.lty'.
When paired=TRUE and paired.lines=TRUE, paired.lty is a vector indicating
the line types to use to distinguish different paired observations.
-- Takes new argument 'paired.lwd'.
When paired=TRUE and paired.lines=TRUE, paired.lwd is a scalar or vector
indicating the width of the lines used to distinguish different paired observations.
-- Takes new argument 'paired.pch'.
When paired=TRUE and paired.lines=TRUE, paired.pch is a vector indicating
the plotting symbols to use to distinguish different paired observations.
-- Takes new argument 'paired.col'.
When paired=TRUE and paired.lines=TRUE, paired.col is a vector indicating
the color of the lines and/or plotting symbols to use to distinguish
different paired observations. This argument overrides the argument 'col'.
-- Takes new argument 'diff.col'.
++ When plot.diff=TRUE and paired=TRUE, diff.col indicates the color
of the displayed paired differences and the color of the confidence
interval when show.ci=TRUE.
++ When plot.diff=TRUE and paired=FALSE, diff.col indicates the color
of the confidence interval for the difference between the two means
when show.ci=TRUE.
++ This argument overrides the argument 'col'.
-- Takes new argument 'diff.pch'.
++ When plot.diff=TRUE and paired=TRUE, diff.pch indicates the plotting
symbol for the displayed paired differences.
++ This argument overrides the argument 'pch'.
-- Takes new arguments 'diff.name', 'diff.name.cex', and 'diff.axis.label'.
++ When plot.diff=TRUE, diff.name is a character string indicating the
the label for the difference between the two groups. The default value
is Group 2 Name - Group 1 Name where Group 1 Name and Group 2 Name indicate
the name of the first and second groups, respectively.
++ When plot.diff=TRUE, diff.name.cex is a numeric scalar indicating
what value of cex to use to plot the character indicating the estimate of
of the difference between groups 1 and 2.
++ When plot.diff=TRUE, diff.axis.label is a character string indicating the
the label for the axis associated with the difference between the two groups.
The default value is "Difference Between Groups" when paired=FALSE, and
"Paired Difference" when paired=TRUE.
-- Takes new arguments 'diff.lim' and 'diff.at'.
++ When plot.diff=TRUE, diff.lim is a numeric vector of length 2 indicating the
limits to use for the axis associated with the difference between the two groups.
++ When plot.diff=TRUE, diff.at is a numeric vector indicating where to place
tick marks on the axis associated with the difference between the two groups.
-- Takes new arguments 'sep.line', 'sep.lty', 'sep.lwd', and 'sep.col'.
++ When plot.diff=TRUE, sep.line is a logical scalar indicating whether to
draw a line between the second group and the difference between groups 1 and 2.
The default value is sep.line=TRUE.
++ When plot.diff=TRUE, sep.lty is a numeric scalar indicating the line type to
use to draw the line between the second group and difference between groups
1 and 2. The default value is sep.lty=2.
++ When plot.diff=TRUE, sep.lwd is a numeric scalar indicating the width of the
line to draw between the second group and difference between groups
1 and 2. The default value is sep.lwd=cex.
++ When plot.diff=TRUE, sep.col is a numeric scalar or character string indicating
the color of the line to draw between the second group and difference between
groups 1 and 2. The default value is sep.col="gray".
-- Takes new arguments 'plot.diff.mar'.
++ When plot.diff=TRUE and add = FALSE, plot.diff.mar is a numeric vector of
length 4 indicating the value of the mar graphics parameter to use for the plot.
The default value is c(5.1, 4.1, 4.1, 4.1), which differs from the usual
default value in that the value for side 4 is 4.1 instead of 2.1. This allows
for room to add an axis and axis label on side 4 indicating that that axis
represents the difference between the 2 groups.
o Updated help files and fixed formatting issues in the PDF version.
```

========================

Changes in Version 2.0.2, 2015.11.17:

```
o Updated rosnerTest() and help file:
-- The minimum number of non-missing, finite values in the argument x
can now be 3 instead of 10.
-- An updated version of Rosner's (1983) Table 1 is given in the help file.
The table shows the observed Type I error levels for various combinations of
sample sizes and values of k.
-- The conditions for when a warning is issued when warn=TRUE have been
slightly altered. See the help file for more information.
o Fixed bugs in stripChart.default() so that
-- The title indicates the correct test when the argument
test.arg.list includes the component paired=TRUE.
-- Does not return an error when the first argument is not a
formula and there are missing values and p.value=TRUE.
o Updated help files and fixed formatting issues in the PDF version.
```

========================

Changes in Version 2.0.1, 2015.05.24:

```
o Updated stripChart() by adding the arguments
ci.bar.lwd and nsmall.
See the help file for details.
o Fixed bug in summaryStats.formula() so that it will correctly
deal with a character or logical vector as its first argument.
o Fixed bug in errorBar() so that it does not pass high-level
graphics arguments to segments().
o Updated help files and fixed formatting issues in the PDF version.
```

========================

Changes in Version 2.0.0, 2015.03.09:

```
o EnvStats contains a modified version of the R function predict.lm().
To comply with CRAN policy, added the generic function predict() and the
function predict.default(), and also updated the already existing (within
EnvStats) predict.lm() function.
o EnvStats contains a modified version of the R function print.htest().
To comply with CRAN policy, added the generic function print() and the
function print.default().
o Included the function errorBar() in the NAMESPACE. This function allows
the user to plot error bars. See the help file for more information.
o Updated the function calibrate() to return an object of class "calibrate"
which inherits from class "lm".
o Included the function print.gofOutlier() in the NAMESPACE so that the results
print correctly for the function rosnerTest() to perform Rosner's test for
outliers assuming a normal (Gaussian) distribution.
o Updated summaryStats() so that it will accept a character or logical vector
as its first argument.
o Updated stripChart() so that it will accept a numeric matrix as its
first argument.
o Fixed a bug in the function elnorm3() for the case when method="lmle".
(Thanks to Jon Hosking for pointing this out!).
o Fixed formatting problems in the PDF version of the help files.
```

========================

Changes in Version 1.0.3, 2014.10.20:

```
o Added the function rosnerTest to perform Rosner's test for outliers in a
normal (Gaussian) distribution.
o Modified the function stripChart():
- The argument ci.offset is now allowed to be either a scalar or
a vector of length equal to the number of groups.
- A new argument group.names.cex has been added to give explicit
control over the size of the group labels.
o Fixed a bug in gofTestCensored() for the case when the data contain only
one censored observation and the censored observation is larger than
the smallest non-censored observation for left-censored data or is smaller than
the largest non-censored observation for right-censored data.
o Fixed a bug in anovaPE() that allowed the user to attempt to compute a
lack-of-fit and pure error anova table when there are not enough degrees of
freedom to do so.
o Fixed a bug in calibrate() to allow only models with enough degrees of
freedom to be tested for lack-of-fit via anovaPE. Also added the arguments
test.higher.orders and F.test.
o Modified detectionLimitCalibrate() as follows:
+ now returns not just the detection limit but both the decision limit
(on the scale of the signal) and the detection limit (on the scale of
the concentration).
+ changed the default value for the argument simultaneous to simultaneous=TRUE.
o Fixed a bug in signTest: values equal to the the argument mu were not
being discarded. (Thanks to Ed Gilroy for pointing this out!).
o Fixed a bug in enparCensored: error message appeared when
ci.method="bootstrap". (Thanks to Dennis Helsel for pointing this
out!).
o Fixed a bug in enormCensored when method="mle", ci=TRUE,
ci.method="normal.approx", and ci.type="lower" or ci.type="upper":
LCL and UCL were switched. (Thanks to Dennis Helsel for pointing
this out!).
o For enormCensored, elnormCensored, elnormAltCensored, egammaCensored,
egammaAltCensored, and epoisCensored, one-sided confidence intervals are
now available when ci.method="profile.likelihood".
o For enparCensored, enormCensored, elnormCensored, elnormAltCensored,
egammaCensored, egammaAltCensored, and epoisCensored, arguments and results
returned when ci.method="bootstrap" have been updated:
+ The argument use.acc.con has been deprecated. Bias-corrected
and accelerated (BCa) bootstrap results are now always computed
where the acceleration constant is estimated rather than allowing
the user to set it to 0 (i.e., setting use.acc.con=FALSE in
older versions of EnvStats). Note that 1) code that explicitly
set use.acc.con=FALSE will no longer work for these functions, and
2) use.acc.con=FALSE was the default so results run previously
will not match what is now returned (even if the random seed is
set to the same value as was used before).
+ The argument ci.type is now allowed to be "lower" or "upper".
+ As before, there are two sets of confidence limits that are returned:
* percentile confidence limits (denoted Pct.LCL and Pct.UCL) and
* bias-corrected and accelerated confidence limits (denoted
BCa.LCL and BCa.UCL)
+ For enparCensored, a third set of confidence limits are also returned:
* studentized confidence limits (denoted t.LCL and t.UCL)
o Fixed bugs in oneSamplePermutationTest and twoSamplePermutationTestLocation:
the default value of the argument seed is now set to seed=NULL.
o Fixed a bug in kendallSeasonalTrendTest: an error message appeared when
the argument 'y' was supplied as a matrix and independent.obs=FALSE.
o Change all calls to the EnvStats global variable Distribution.df to
EnvStats::Distribution.df.
o Fixed formatting problems in the PDF version of the help files.
```

========================

Changes in Version 1.0.2, 2013.10.29:

```
o Changed the names of functions used for minimization in the following functions:
ciBinomN.vec, elnorm3, enormMultiplyCensored.mle, enormSinglyCensored.mle,
predIntPois
```

========================

Changes in Version 1.0.1:

```
o Fixed bugs in the following functions that had misspelled variable
names or variables that had not been defined:
ci.gamma.chisq.approx, ci.lnorm3.zero.skew, ciBinomN, eqlnorm,
plot.gofCensored, ppccNormMultiplyCensoredGofTest,
ppccNormSinglyCensoredGofTest, predIntPois, print.boxcox,
print.boxcoxCensored
```

========================

Changes in Version 1.0.0

```
o The current version of EnvStats is Version 1.0.0.
o EnvStats is built upon Version 2.0 of the S-PLUS module "EnvironmentalStats for S-PLUS". It includes numerous additions and changes.
o Function and data object names in EnvStats differ from those in EnvironmentalStats for S-PLUS. All objects that begin with an upper case letter are data objects, and all functions begin with a lower case letter. So for example, all data objects that began with "epa." in EnvironmentalStats for S-PLUS begin with "EPA." in EnvStats.
o For former EnvironmentalStats for S-PLUS users, here are the name conversions for the functions:
Old Name New Name
-------- --------
anova.pe anovaPE
aov.n aovN
aov.power aovPower
boxcox.multiply.censored Embeded in boxcoxCensored
boxcox.singly.censored Embeded in boxcoxCensored
boxcox.transform boxcoxTransform
cdf.compare cdfCompare
cdf.compare.censored cdfCompareCensored
cdfplot cdfPlot
chen.t.test chenTTest
chisq.gof Embedded in gofTest
ci.binom.half.width ciBinomHalfWidth
ci.binom.n ciBinomN
ci.norm.half.width ciNormHalfWidth
ci.norm.n ciNormN
ci.npar.conf.level ciNparConfLevel
ci.npar.n ciNparN
detection.limit.calibrate detectionLimitCalibrate
dlnorm.alt dlnormAlt
dlnorm.mix dlnormMix
dlnorm.mix.alt dlnormMixAlt
dlnorm.trunc dlnormTrunc
dlnorm.trunc.alt dlnormTruncAlt
dnorm.mix dnormMix
dnorm.trunc dnormTrunc
dzmlnorm.alt dzmlnormAlt
ecdplot ecdfPlot
ecdfplot.censored ecdfPlotCensored
elnorm.alt elnormAlt
elnorm.alt.multiply.censored Embeded in elnormAltCensored
elnorm.alt.singly.censored Embeded in elnormAltCensored
elnorm.multiply.censored Embeded in elnormCensored
elnorm.singly.censored Embeded in elnormCensored
enorm.multiply.censored Embeded in enormCensored
enorm.singly.censored Embeded in enormCensored
enpar.censored enparCensored
epdfplot epdfPlot
epois.multiply.censored Embeded in epoisCensored
epois.singly.censored Embeded in epoisCensored
error.bar errorBar
ev.norm.ord.stats evNormOrdStats
ev.norm.ord.stats.scalar evNormOrdStatsScalar
ezmlnorm.alt ezmlnormAlt
full.summary summaryFull
geo.mean geoMean
geo.sd geoSD
pdfplot pdfPlot
inverse.predict.calibrate inversePredictCalibrate
kendall.trend.test kendallTrendTest
ks.gof Embedded in gofTest
l.moment lMoment
linear.trend.test.n linearTrendTestN
linear.trend.test.power linearTrendTestPower
linear.trend.test.scaled.mds linearTrendTestScaledMds
log.choose.multinomial logChooseMultinomial
one.sample.permutation.test oneSamplePermutationTest
pdfplot pdfPlot
plnorm.alt plnormAlt
plnorm.mix plnormMix
plnorm.mix.alt plnormMixAlt
plnorm.trunc plnormTrunc
plnorm.trunc.alt plnormTruncAlt
plot.aov.design plotAovDesign
plot.ci.binom.design plotCiBinomDesign
plot.ci.norm.design plotCiNormDesign
plot.ci.npar.design plotCiNparDesign
plot.linear.trend.test.design plotLinearTrendTestDesign
plot.permutation.test plot.permutationTest
plot.pred.int.lnorm.alt.simultaneous.test.power.curve plotPredIntLnormAltSimultaneousTestPowerCurve
plot.pred.int.lnorm.alt.test.power.curve plotPredIntLnormAltTestPowerCurve
plot.pred.int.norm.design plotPredIntNormDesign
plot.pred.int.norm.simultaneous.test.power.curve plotPredIntNormSimultaneousTestPowerCurve
plot.pred.int.norm.test.power.curve plotPredIntNormTestPowerCurve
plot.pred.int.npar.design plotPredIntNparDesign
plot.pred.int.npar.simultaneous.design plotPredIntNparSimultaneousDesign
plot.pred.int.npar.simultaneous.test.power.curve plotPredIntNparSimultaneousTestPowerCurve
plot.prop.test.design plotPropTestDesign
plot.t.test.design plotTTestDesign
plot.t.test.lnorm.alt.design plotTTestLnormAltDesign
plot.tol.int.norm.design plotTolIntNormDesign
plot.tol.int.npar.design plotTolIntNparDesign
pnorm.mix pnormMix
pnorm.trunc pnormTrunc
ppcc.evd.gof Embedded in gofTest
ppcc.norm.gof Embedded in gofTest
ppcc.norm.group.gof Embedded in gofGroupTest
ppcc.norm.multiply.censored.gof Embedded in gofCensoredTest
ppcc.norm.singly.censored.gof Embedded in gofCensoredTest
ppoints.censored ppointCensored
pred.int.lnorm predIntLnorm
pred.int.lnorm.alt.simultaneous.test.power predIntLnormAltSimultaneousTestPower
pred.int.lnorm.alt.test.power predIntLnormAltTestPower
pred.int.lnorm.simultaneous predIntLnormSimultaneous
pred.int.norm predIntNorm
pred.int.norm.half.width predIntNormHalfWidth
pred.int.norm.K predIntNormK
pred.int.norm.n predIntNormN
pred.int.norm.simultaneous predIntNormSimultaneous
pred.int.norm.simultaneous.K predIntNormSimultaneousK
pred.int.norm.simultaneous.test.power predIntNormSimultaneousTestPower
pred.int.norm.test.power predIntNormTestPower
pred.int.npar predIntNpar
pred.int.npar.conf.level predIntNparConfLevel
pred.int.npar.n predIntNparN
pred.int.npar.simultaneous predIntNparSimultaneous
pred.int.npar.simultaneous.conf.level predIntNparSimultaneousConfLevel
pred.int.npar.simultaneous.n predIntNparSimultaneousN
pred.int.npar.simultaneous.test.power predIntNparSimultaneousTestPower
pred.int.pois predIntPois
prop.test.mdd propTestMdd
prop.test.n propTestN
prop.test.power propTestPower
pw.moment pwMoment
pzmlnorm.alt pzmlnormAlt
qlnorm.alt qlnormAlt
qlnorm.mix qlnormMix
qlnorm.mix.alt qlnormMixAlt
qlnorm.trunc qlnormTrunc
qlnorm.trunc.alt qlnormTruncAlt
qnorm.mix qnormMix
qnorm.trunc qnormTrunc
qqline qqLine
qqplot qqPlot
qqplot.gestalt qqPlotGestalt
qqplot.censored qqPlotCensored
quantile.test quantileTest
qzmlnorm.alt qzmlnormAlt
rlnorm.alt rlnormAlt
rlnorm.mix rlnormMix
rlnorm.mix.alt rlnormMixAlt
rlnorm.trunc rlnormTrunc
rlnorm.trunc.alt rlnormTruncAlt
rnorm.mix rnormMix
rnorm.trunc rnormTrunc
rzmlnorm.alt rzmlnormAlt
seasonal.kendall.trend.test kendallSeasonalTrendTest
serial.correlation.test serialCorrelationTest
sf.gof Embedded in gofTest
sf.group.gof Embedded in gofGroupTest
sf.multiply.censored.gof Embedded in gofCensoredTest
sf.singly.censored.gof Embedded in gofCensoredTest
sign.test signTest
simulate.mv.matrix simulateMvMatrix
simulate.vector simulateVector
skew.gof Embedded in gofTest
sw.gof Embedded in gofTest
sw.group.gof Embedded in gofGroupTest
sw.singly.censored.gof Embedded in gofCensoredTest
t.test.n tTestN
t.test.power tTestPower
t.test.scaled.mdd tTestScaledMdd
t.test.lnorm.alt.n tTestLnormAltN
t.test.lnorm.alt.power tTestLnormAltPower
t.test.lnorm.alt.ratio.of.means tTestLnormAltRatioOfMeans
tol.int.lnorm tolIntLnorm
tol.int.norm tolIntNorm
tol.int.norm.half.width tolIntNormHalfWidth
tol.int.norm.K tolIntNormK
tol.int.norm.n tolIntNormN
tol.int.npar tolIntNpar
tol.int.npar.conf.level tolIntNparConfLevel
tol.int.npar.coverage tolIntNparCoverage
tol.int.npar.n tolIntNparN
tol.int.pois tolIntPois
two.sample.linear.rank.test twoSampleLinearRankTest
two.sample.linear.rank.test.censored twoSampleLinearRankTestCensored
two.sample.permutation.test.location twoSamplePermutationTestLocation
two.sample.permutation.test.proportion twoSamplePermuationTestProportion
var.group.test varGroupTest
var.test varTest
z.test.gevd.shape zTestGevdShape
```