Instructions

Determine how many sources (N) nationwide

Determine number of sources in MACT floor sample set

For solid waste incineration sources follow CAA Section 129(a)(2) guidance:

Take 12 percent of units in the category, and round up to next whole number for MACT floor sample set

For all other sources follow CAA Section 112(d)(3):

N nationwide ≥30, take top 12% of sources with data, and round up to next whole number for MACT floor sample 

N nationwide <30, take top 5 sources with data for MACT floor sample set

Rank sources to Determine the MACT floor sample set

Calculate the UPL for each source using a confidence interval of 99% and rank the sources by the UPL to 

determine the best performing 12 percent (existing source MACT) and best performing source (new source 

Identify the distribution of sample set

Statistical tests of the kurtosis and skewness are used to evaluate the normality assumption.

For data sets with greater than 3 runs (n>3) use the "n>3Distribution" tab to determine the distribution. Enter run 

values for each source in the Raw Data section.

For data sets with 3 runs (n=3) use the "n=3Distribution" tab to determine the distribution. Enter run values for 

each source in the Raw Data section.

The skewness, kurtosis, standard error of skewness, and standard error of kurtosis will be calculated for the raw 

data and the logtransformed data.

For n>3 data sets, if the Result Raw Data says "Normal" the data can be considered normally distributed, use 

"UPL Pooled Template "

for n>3 data sets, if the Result Log Data says "Normal" the data can be considered lognormally distributed, use 

"Lognormal Template "

For n>3 data sets, if the Result Ray Data says "Non Normal" and the Result Log Data says "Non Normal" than the 

data have an unknown/skewed distribution, use "Template_skewed " 

For n=3 data sets, the distribution will be specified as normal or lognormal in row 24.

Templates

Plug the sources' raw run data into the appropriate template based on distribution.

Determine the confidence interval % to use fot the t-statistic and z-statistic based on "n" number of runs. 99% is 

the default in all the templates.

For "UPL Pooled Template " the UPL will be calculated in cell F107.

For "Lognormal Template ", use the "lognormal z-stat" worksheet to find the z-statistic at the specified confidentce 

interval. The UPL will be calculated in cell D165

For the "Template_skewed " Template:

Cell E173 of the "Template_skewed " tab shows the actual confidence level (1 - 'Calculations for Template 

skew'!J139) after accounting for the skewness and kurtosis. If the confidence level is larger or lower than specified 

confidence level % [Default is 99%] then need to adjust the t-statistic. 
To adjust the t-statistic go to the “Recalculate t-stat skew ” tab. This tab starts with the t-statistic in cell H161 from 

the “Template_skewed ” tab. If the confidence level from cell E171 of the "Template_skewed " tab was larger or 

lower than specified confidence level %, need to decrease or increase the t-statistic to get closer to the specified 

confidence level %. 

Cell G3 of "Recaltulate t-stat skew " tab has the value of the increase also called "interval", the candidate t-values 

will be calculated as the t-value in cell H102 plus multiples of the interval. These are calculated automatically for 

you in row 5 after a value is placed in cell G3. The corresponding p-values and confidence levels are also 

calculated automatically for you. 

Cell G3 of "Recaltulate t-stat skew" tab, the “interval” can be manipulated. For example, start with 0.1 and notice 

what the values in row 9 are. If they are not at specified confidence level % keep increasing or decreasing the 

value in G3 until one of the values in row 9 is the specified confidence level percent %. May have to go out to 

several significant figures.

Calculations are in the tabs: "Recalculations1 skew " through "Recalculations6 skew ". Don’t need to do anything in 

them, they are basically duplicates of tab “Calculations_for_Template skew ” and each one use a different value of 

the candidate t-values in row 5. 

Sometimes the actual significance level in cell E173 of tab “Template_skewed ” is larger than specified 

confidence level %, then you have to use a negative interval (meaning that your value in cell G3, tab “Recalculate tstat skew ” has to be negative).

Once the adjusted t-value from tab “Recalculate t-stat skew ” is at specified confidence interval %, copy the 

recalculated t-value and paste special the value into cell E178 in tab “Template_skewed ”. Also paste special the 

"interval of differences for t-values" from the "Recalculate t-stat skew " tab into cell E176 of "Template_skewed ". 

Note: Cell E173 of "Template_skewed " is linked to the "Calculations for Template skew " and Cell B174 of 

"Template_skewed" is linked to the "Recalculations1 skew" worksheet. In order to use "Template_skewed " for 

multiple data sets of UPL calculations make a copy of the worksheet and rename. Paste special Cell E173 and 

B174 values to freeze the values and remove reference to other worksheets.

The UPL will be calculated in cell E181 of "Template_skewed " 

If the new source UPL is greater in value (less stringent) than the existing source UPL, run the t-test to determine if there is 

statistical difference between the existing source MACT floor pool and the best performing source. In the "t-test " tab enter 

the new source run data into the new source column and enter the existing source run data into the existing source columns. 

If the results in cell B127 of "t-test " tab say "Means are not different" then can default to the existing source UPL for the 

new source UPL. If the results say "Means are different", then cannot default to the existing source UPL for the new source 

UPL.

Other Notes and Terms

Type of data affects m (number of future runs) that will be used in calculation, for example:

If using individual test runs (typically three to a test) to determine compliance; m=3 

If 30-day averages are used to determine compliance; m=30 

If using the average of test runs to determine compliance; m=1

Default m future runs is 3 in each template.

Does data set have non-detect issues, if so take extra step to do UPL v. 3xRDL comparison.

N = total number of sources

n = number of individual runs

df = degrees of freedom = n - 1

X = mean of data
s

2

 = pooled variance of data

m = number of future runs

tdf = t-statistic: t-distribution with df degrees of freedom at 99% [Default] confidence level 

Templates can hold up to 30 sources (N); if data set has more than 30 sources, need to expand template.

Templates can hold up to 35 runs (n) for each source (N), if data set has more than 35 runs of data per source, 

need to expand template.
Raw Data

Runs SPPD_FAC_02 SPPD_FAC_04 SPPD_FAC_06 SPPD_FAC_01 SPPD_FAC_09

1 1.20E-03 2.39E-02 3.30E-02 6.20E-02 3.40E-02

2 2.60E-03 2.36E-02 8.00E-03 1.70E-02 7.90E-02

3 1.63E-02 1.76E-02 7.10E-02 1.30E-02 2.80E-02

4 2.61E-02 7.40E-02

5 1.78E-02 3.70E-02

6 1.63E-02 4.00E-02

7 5.50E-02

8 4.10E-02

9 5.60E-02

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

KURTOSIS CALCULATIONS FOR SAMPLE SETS WITH n > 3 ONLY

Testing Normality Raw Data Logtransformed

Sample Size 24.00 24.00

Kurtosis -0.53 2.76 http://www.spcforexcel.com/are-skewness-and-kurtosis-useful-statistics

SE Kurtosis 0.96 0.96 note: cannot use this equation when n=3 because the denominator in second component is not defined (the term n-3 in denominator of seco

Result Kurtosis normal non normal

Skewness 0.66 -1.49

SE Skewness 0.47 0.47

Result Skewness normal non normal

Result Raw Data Result Log Data

Normal Non Normal
Logtransformed

SPPD_FAC_ SPPD_FA SPPD_FA SPPD_FA

-6.73E+00 -3.73E+00 -3.41E+00 -2.78E+00

-5.95E+00 -3.75E+00 -4.83E+00 -4.07E+00

-4.12E+00 -4.04E+00 -2.65E+00 -4.34E+00

-3.65E+00 -2.60E+00

-4.03E+00 -3.30E+00

-4.12E+00 -3.22E+00

-2.90E+00

-3.19E+00

-2.88E+00

defined (the term n-3 in denominator of second component is zero).
SPPD_FA

-3.38E+00

-2.54E+00

-3.58E+00

Raw Data

Runs SPPD_FAC_02 SPPD_FAC_04 SPPD_FAC_06 SPPD_FAC_01 SPPD_FAC_09

1 1.20E-03 2.39E-02 3.30E-02 6.20E-02 3.40E-02

2 2.60E-03 2.36E-02 8.00E-03 1.70E-02 7.90E-02

3 1.63E-02 1.76E-02 7.10E-02 1.30E-02 2.80E-02

4 2.61E-02 7.40E-02

5 1.78E-02 3.70E-02

6 1.63E-02 4.00E-02

7 5.50E-02

8 4.10E-02

9 5.60E-02

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

Testing Normality Raw Data

Sample Size 24.00

Kurtosis -0.53

SE Kurtosis 0.96

Result Kurtosis normal

Skewness 0.66

SE Skewness 0.47 Result Raw Data

Result Skewness normal normal

ni = number test runs = 6 3 3 9 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Total Number of sources = 5

n =Total # test runs = 24

23

This step is for QC only:

means 1.34E-02 2.17E-02 3.73E-02 4.39E-02 4.70E-02 #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0! #DIV/0!

3.31E-02

Mean =

Pooled Variance = 5.09E-04

m= number future runs = 3

Term1 3.75E-01

Term2 1.91E-04

Squared root Term2 1.38E-02

NOTE: the pvalue for the t-statistic is calculated as: 2*alpha, where 1-alpha is desired confidence, so if 99% confidence is desired then alpha=0.01 and 2*alpha=2*(0.01)

t-statistic = quantile t-distribution with df degrees of freedom at .99 confidence level = 2.499866739

UPL POOLED VARIANCE = 0.068

Use for large sample sets and small sample sets that are Normal.

 

2

2

1

1

1

n

i

i

s x X

n 

 





1 1

1

N ni

ij

i j

X x

n  

 

1 1

n m



2 1 1

s

n m

      

1

1

N

i

i

df n



 

      

df t

2 1 1

s

n m

    

 

1

1

i n

i ik

i k

x x

n 

 

1

N

i

i

n





N

2

,

1 1 X tdf p

s

n m

 

     

0900006481946321 UPL Pooled Template 12/8/2014