Compute the half-width of a prediction interval for the next \(k\) observations from a normal distribution.

predIntNormHalfWidth(n, df = n - 1, n.mean = 1, k = 1, sigma.hat = 1, 
    method = "Bonferroni", conf.level = 0.95)

Arguments

n

numeric vector of positive integers greater than 1 indicating the sample size upon which the prediction interval is based. Missing (NA), undefined (NaN), and infinite (Inf, -Inf) values are not allowed.

df

numeric vector of positive integers indicating the degrees of freedom associated with the prediction interval. The default is df=n-1.

n.mean

numeric vector of positive integers specifying the sample size associated with the \(k\) future averages. The default value is n.mean=1 (i.e., individual observations). Note that all future averages must be based on the same sample size.

k

numeric vector of positive integers specifying the number of future observations or averages the prediction interval should contain with confidence level conf.level. The default value is k=1.

sigma.hat

numeric vector specifying the value(s) of the estimated standard deviation(s). The default value is sigma.hat=1.

method

character string specifying the method to use if the number of future observations (k) is greater than 1. The possible values are method="Bonferroni" (approximate method based on Bonferonni inequality; the default), and
method="exact" (exact method due to Dunnett, 1955). This argument is ignored if k=1.

conf.level

numeric vector of values between 0 and 1 indicating the confidence level of the prediction interval. The default value is conf.level=0.95.

Details

If the arguments n, k, n.mean, sigma.hat, and conf.level are not all the same length, they are replicated to be the same length as the length of the longest argument.

The help files for predIntNorm and predIntNormK give formulas for a two-sided prediction interval based on the sample size, the observed sample mean and sample standard deviation, and specified confidence level. Specifically, the two-sided prediction interval is given by: $$[\bar{x} - Ks, \bar{x} + Ks] \;\;\;\;\;\; (1)$$ where \(\bar{x}\) denotes the sample mean: $$\bar{x} = \frac{1}{n} \sum_{i=1}^n x_i \;\;\;\;\;\; (2)$$ \(s\) denotes the sample standard deviation: $$s^2 = \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})^2 \;\;\;\;\;\; (3)$$ and \(K\) denotes a constant that depends on the sample size \(n\), the confidence level, the number of future averages \(k\), and the sample size associated with the future averages, \(m\) (see the help file for predIntNormK). Thus, the half-width of the prediction interval is given by: $$HW = Ks \;\;\;\;\;\; (4)$$

Value

numeric vector of half-widths.

References

See the help file for predIntNorm.

Author

Steven P. Millard (EnvStats@ProbStatInfo.com)

Note

See the help file for predIntNorm.

Examples

  # Look at how the half-width of a prediction interval increases with 
  # increasing number of future observations:

  1:5 
#> [1] 1 2 3 4 5
  #[1] 1 2 3 4 5 

  hw <- predIntNormHalfWidth(n = 10, k = 1:5)

  round(hw, 2) 
#> [1] 2.37 2.82 3.08 3.26 3.41
  #[1] 2.37 2.82 3.08 3.26 3.41

  #----------

  # Look at how the half-width of a prediction interval decreases with 
  # increasing sample size:

  2:5 
#> [1] 2 3 4 5
  #[1] 2 3 4 5 

  hw <- predIntNormHalfWidth(n = 2:5)

  round(hw, 2) 
#> [1] 15.56  4.97  3.56  3.04
  #[1] 15.56  4.97  3.56  3.04

  #----------

  # Look at how the half-width of a prediction interval increases with 
  # increasing estimated standard deviation for a fixed sample size:

  seq(0.5, 2, by = 0.5) 
#> [1] 0.5 1.0 1.5 2.0
  #[1] 0.5 1.0 1.5 2.0 

  hw <- predIntNormHalfWidth(n = 10, sigma.hat = seq(0.5, 2, by = 0.5))

  round(hw, 2) 
#> [1] 1.19 2.37 3.56 4.75
  #[1] 1.19 2.37 3.56 4.75

  #----------

  # Look at how the half-width of a prediction interval increases with 
  # increasing confidence level for a fixed sample size:

  seq(0.5, 0.9, by = 0.1) 
#> [1] 0.5 0.6 0.7 0.8 0.9
  #[1] 0.5 0.6 0.7 0.8 0.9 

  hw <- predIntNormHalfWidth(n = 5, conf = seq(0.5, 0.9, by = 0.1))

  round(hw, 2) 
#> [1] 0.81 1.03 1.30 1.68 2.34
  #[1] 0.81 1.03 1.30 1.68 2.34

  #==========

  # The data frame EPA.92c.arsenic3.df contains arsenic concentrations (ppb) 
  # collected quarterly for 3 years at a background well and quarterly for 
  # 2 years at a compliance well.  Using the data from the background well, compute 
  # the half-width associated with sample sizes of 12 (3 years of quarterly data), 
  # 16 (4 years of quarterly data), and 20 (5 years of quarterly data) for a 
  # two-sided 90% prediction interval for k=4 future observations.

  EPA.92c.arsenic3.df
#>    Arsenic Year  Well.type
#> 1     12.6    1 Background
#> 2     30.8    1 Background
#> 3     52.0    1 Background
#> 4     28.1    1 Background
#> 5     33.3    2 Background
#> 6     44.0    2 Background
#> 7      3.0    2 Background
#> 8     12.8    2 Background
#> 9     58.1    3 Background
#> 10    12.6    3 Background
#> 11    17.6    3 Background
#> 12    25.3    3 Background
#> 13    48.0    4 Compliance
#> 14    30.3    4 Compliance
#> 15    42.5    4 Compliance
#> 16    15.0    4 Compliance
#> 17    47.6    5 Compliance
#> 18     3.8    5 Compliance
#> 19     2.6    5 Compliance
#> 20    51.9    5 Compliance
  #   Arsenic Year  Well.type
  #1     12.6    1 Background
  #2     30.8    1 Background
  #3     52.0    1 Background
  #...
  #18     3.8    5 Compliance
  #19     2.6    5 Compliance
  #20    51.9    5 Compliance

  mu.hat <- with(EPA.92c.arsenic3.df, 
    mean(Arsenic[Well.type=="Background"])) 

  mu.hat 
#> [1] 27.51667
  #[1] 27.51667 

  sigma.hat <- with(EPA.92c.arsenic3.df, 
    sd(Arsenic[Well.type=="Background"]))

  sigma.hat 
#> [1] 17.10119
  #[1] 17.10119 

  hw <- predIntNormHalfWidth(n = c(12, 16, 20), k = 4, sigma.hat = sigma.hat, 
    conf.level = 0.9)

  round(hw, 2) 
#> [1] 46.16 43.89 42.64
  #[1] 46.16 43.89 42.64

  #==========

  # Clean up
  #---------
  rm(hw, mu.hat, sigma.hat)