Estimating Isomerized Alpha Acids and nonIAA from Multiple IBU Measurements

Abstract
The IBU measures more than just the concentration of isomerized alpha acids (IAA); it includes concentrations of other bittering substances, called nonIAA. (These substances may also be referred to as "Auxiliary Bittering Compounds", or ABC). In trying to get a better understanding of the factors that contribute to the IBU, we would like to estimate the IAA and nonIAA concentrations separately. It is possible to estimate IAA and nonIAA concentrations in beer from multiple IBU measurements, as long as the conditions in each batch are (nearly) identical except for the concentrations of hops and/or steep times. This post explains this estimation technique, which I use in a number of blog posts, including Four Experiments on Alpha-Acid Utilization and IBUs, Hopping-Rate Correction Based on Alpha-Acid Solubility, The Effect of pH on Utilization and IBUs, Alpha-Acid Solubility and pH, and The Relative Contribution of Oxidized Alpha- and Beta-Acids to the IBU.

1. Background

1.1 What's in an IBU?
The International Bitterness Unit (IBU) estimates the concentration of bitter substances in beer, including isomerized alpha acids (IAA) and the other bitter substances that are referred to collectively as "nonIAA" [Peacock, p. 161]. The nonIAA substances include oxidized alpha acids, oxidized beta acids, hop polyphenols, and malt polyphenols. Measuring the IAA concentration is best done using HPLC, but such tests are of limited availability and great expense. There is no standardized measurement technique for the concentration of all nonIAA substances. Therefore, it would be useful to be able to estimate IAA and nonIAA concentrations from the IBU measurement.

1.2 A General Description of IBUs
The IBU is defined in terms of the amount of infrared light absorbed when passing through a sample of acidified beer, but Val Peacock provides a second definition of the IBU in terms of the concentrations of various substances [Peacock, p. 157]:

IBU = 5/7 × ([IAA]beer + [nonIAA]beer)

where IBU is the measured IBU value, [IAA]beer is the concentration of isomerized alpha acids in the finished beer (the brackets [] denoting concentration, and the subscript "beer" denoting the type of solution), and [nonIAA]beer is the concentration of other bittering substances that aren’t isomerized alpha acids (also in the finished beer). Concentrations are expressed in parts per million, or ppm. The derivation of this formula is outlined in A Summary of Factors Affecting IBUs.

1.3 A Refinement of the General Description of IBUs
We can expand upon Peacock's general formula to (a) replace 5/7 with the more precise ratio 51.2/69.68 [Peacock, p. 161], (b) express [IAA]beer as the concentration of IAA produced during the boil multiplied by a scaling factor that accounts for the losses of IAA during the boil, fermentation, and aging, (c) express [nonIAA]beer as the concentration of hops in the wort multiplied by a scaling factor that maps from this concentration to the concentration of hop-related nonIAA in the finished beer, and (d) account for the contribution of malt polyphenols to the IBU as a factor separate from the hop-related nonIAA, creating [nonIAAhops] and [nonIAAmaltPP], both of which are concentrations in the finished beer. We want to separate out the malt factor because the malt polyphenol concentration will be independent of the amount of hops added, but we will assume that there is a linear relationship between amount of hops added and the hop-related nonIAA concentration.

In particular, we can define [IAA]wort as the concentration of IAA in the wort during the boil and define a scaling factor, scalingIAA, that relates [IAA]wort to [IAA]beer. We can also define another scaling factor, scalingnonIAAhops, that relates the concentration of hops in the wort (in ppm) to the concentration of hop-related nonIAA in the finished beer. (Both of these factors may vary from batch to batch, depending on the various losses and the concentrations of (oxidized) alpha- and beta-acids in the hops. However, as long as we focus on batches of beer in which these conditions should be the same, then the scaling factors should also be the same for these batches.) The contribution of malt polyphenols to the IBU, expressed as IAA-equivalent units, can be modeled as

[nonIAAmaltPP]beer = ((OG − 1.0) × 19.0) × ((2.477 × (5.75 − pH)) + 1.0) × (69.68/51.2)

where OG is the original gravity and pH is the post-boil pH, as described in the blog post The Contribution of Malt Polyphenols to the IBU. The scaling by 69.68/51.2 converts from IBU units to IAA-equivalent parts per million. These adjustments give us the following formulas as a modification to Peacock's original formula:

[IAA]beer = [IAA]wort × scalingIAA
[nonIAAhops]beer = [hops]wort × scalingnonIAAhops
IBU = 51.2/69.68 × ([IAA]beer + [nonIAAhops]beer + [nonIAAmaltPP]beer)

where [IAA]wort is the total concentration of IAA produced during the boil, and scalingIAA is the scaling factor that accounts for losses of IAA during the boil, fermentation, and aging. Also, [nonIAAhops]beer is the hop-related contribution to nonIAA in the finished beer, [hops]wort is the concentration of hops in the wort (in ppm), and scalingnonIAAhops is the scaling factor from concentration of total hop particles to the concentration of hop-related nonIAA in the beer. The Peacock formula is mostly unchanged, except for the revised ratio, the specification of [nonIAAhops]beer that is specific to hops, and the addition of [nonIAAmaltPP]beer as a separate nonIAA component.

1.4 Conversion of Alpha Acids to Isomerized Alpha Acids
Mark Malowicki wrote his thesis on the conversion of alpha acids into isomerized alpha acids [Malowicki]. In this work, he developed a formula to predict the concentration of IAA from temperature, time, and the initial concentration of alpha acids:

k1(T) = 7.9×1011 e-11858/T
k2(T) = 4.1×1012 e-12994/T
[IAA]wort = [AA]0 × (k1(T)/(k2(T) − k1(T))) × (ek1(T)t − ek2(T)t)

where k1(T) is a rate constant for the conversion of alpha acids into isomerized alpha acids, k2(T) is a rate constant for the conversion of isomerized alpha acids into degradation products, T is the temperature (in degrees Kelvin), [AA]0 is the initial concentration of alpha acids (in ppm), and t is time (in minutes) [Malowicki, pp. 25-27].

Malowicki found that this conversion was not influenced by pH or the presence of maltose, glucose, or calcium [Malowicki, p. 39, p. 44]. It's generally believed that wort gravity [Kappler, p. 335; Lewis and Young, p. 266], pH [Kappler, p. 334; Lewis and Young, p. 266], and calcium [McMurrough, p. 104] can have a significant effect on utilization (the ratio of IAA in finished beer to alpha-acids added to the wort). Malowicki's results imply that any of these effects on utilization are due to losses of IAA or nonIAA, not to a different rate of isomerization. Therefore, we can use his equations to compute [IAA]wort in the modified Peacock equation from the initial alpha-acid concentration, time, and temperature; any other effects on utilization will be reflected in scalingIAA and/or scalingnonIAAhops.

One thing that will affect the production of IAA, other than time and temperature, is the solubility limit of the alpha acids. I believe that alpha acids in hot wort and above their solubility limit are quickly degraded and do not isomerize, although this has not yet been independently confirmed. I've estimated this solubility limit as starting at approximately 240 ppm.

1.5 Production of nonIAA
The nonIAA contribution to the IBU consists of oxidized alpha acids, oxidized beta acids, hop polyphenols, and malt polyphenols. The oxidized alpha and beta acids are created during aging of the hops (in the presence of oxygen) [e.g. Algazzali, pp. 12-13, 15; Garetz] and oxidized alpha acids are produced during the boil [Spetsig 1968, p. 350; Stevens and Wright, p. 500]. The oxidized alpha and beta acids are very soluble in beer (with the oxidized alpha acids more soluble than IAA) [Maye et al., p. 23; Algazzali, p.16], and at least some of the polyphenols are soluble, especially in hot water [Forster, p. 124]. Hough et al. indicate that that the oxidized beta acids are fairly stable in the boil [Hough et al., p. 488-489]. The rate of oxidation of alpha acids during the boil is less clear, but "[oxidized alpha acid] formation on wort boiling can be one of the first things to happen in the complex chemistry of humulone isomerization" [Dierckens and Verzele, p. 454]. All of this suggests that the nonIAA levels may be fairly stable throughout the boil; in other words, there may be no significant time dependency for the production of nonIAA beyond the first five minutes of the boil. The high level of solubility of the oxidized alpha and beta acids implies that (after oxidation) we don't need to worry about a solubility limit as we add more and more hops.

2. Methods
We have five parameters in the formula for IBUs but only two unknown values: scalingIAA and scalingnonIAAhops. The other three parameters, [IAA]wort, [hops]wort, and [nonIAAmaltPP]beer, can be computed or estimated from the known values of steep temperature, steep time, weight of the hops, alpha-acid rating, volume, original gravity, and post-boil pH. (Other factors (such as beer age or krausen deposits) may affect losses of IAA and nonIAA, and will therefore be reflected in these two scaling factors.)

In theory, we can obtain scalingIAA and scalingnonIAAhops from only two measured IBU values using the technique described below. In practice, we want more values, because errors or any source of unexpected variability in the measured IBUs will become errors in our IAA and nonIAA estimates. The more measured IBU values we have, the better we can average out the error in the IAA and nonIAA estimates. As one example of unexpected variability, consider the case in which we brew two batches of beer that should be identical in all respects, including taking hops from the same bag. As Verzele and De Keukeleire note, "there are easily differences up to 15-20% in alpha acids content between and within bales of a single hop delivery" [Verzele and De Keukeleire, p. 331]. Small samples of hops from the same source can therefore have relatively large differences in alpha-acid content. In this example, maybe one beer has hops with 14.5% alpha acids and the other beer has 16.0% alpha acids. This is a 10% relative difference, well within the 20% possible variation. In this case, we can get 30.0 IBUs from the first batch and 32.4 IBUs from the second. While a difference of 2.4 IBUs is not large in terms of IBU prediction, if we're unable to account for this variability (because we assume that samples of hops from the same source all have the same alpha-acid rating), then our IAA and nonIAA estimates will be impacted. The best approach, if possible, is to take multiple samples from the same batch at different boil times, cooling and fermenting them with the same procedure. This approach guarantees the same weight of hops, alpha-acid rating, and initial gravity; one can then account for the differences in volume and gravity that occur over time. (Using different hops is generally not recommended, because scalingnonIAAhops may vary in this case due to storage conditions.)

If we have M measured IBU values (from the same batch of beer at different boil times, or from different batches of beer with different additions of the same hops), we have M equations (one IBU equation at a specific steep time or hop concentration per measured value) and two unknowns. Methods for solving such a problem usually aim to minimize the mean-squared error, where the individual error is defined as the difference between the measured and predicted values:

errork = measuredIBUkpredictedIBUk errorMSE = Σ(errork2) / M

where k is one of the M measured conditions, and we want to minimize errorMSE. The root-mean-square (RMS) error is often reported, which is the square root of errorMSE:

errorRMS = (errorMSE)

(The RMS error is conceptually similar to the expected difference between the measured and predicted values (i.e. the average absolute difference), but it penalizes outliers more.)

Because we have only two parameters to solve for, the easiest way to find the minimum mean-squared error is to do a brute-force search over all possible values of scalingIAA and scalingnonIAAhops with a resolution of 0.001. If we search over all values from 0.0 to 1.0 with an increment of 0.001, we have one million combinations (1000 for scalingIAA and 1000 for scalingnonIAAhops). This is quite reasonable given the current speed of computers; it takes less than 10 seconds per condition k using a slow scripting language, and less than a second with compiled code. (In practice, because scalingnonIAAhops tends to be very small, I search from 0.0 to 0.1 in increments of 0.0001, which takes the same amount of time.)

Once we have an estimate for scalingnonIAAhops, we can map from measured IBU to estimated nonIAA and IAA concentrations in beer with the formulas:

[nonIAA]beer = ([hops]wort × scalingnonIAAhops) + [nonIAAmaltPP]beer
[IAA]beer = ((69.68/51.2) × IBU) − ([nonIAA]beer + [nonIAAmaltPP]beer)

where [nonIAA]beer is the total concentration of nonIAA in the finished beer, including contributions from both hops and malt. (We don't need scalingIAA unless we want to estimate the IAA concentration in the wort.)

3. Implementation of the Parameter Estimation Process
The most complete way to show the details of the estimation process is to provide pseudo-code that illustrates each step of parameter estimation. Even if you're not familiar with programming, this code may still provide some insight into the step-by-step processes. The programming here isn't tricky; the most complicated things are a "for" loop, an expression of the form "x = x + y", and the assumption that there is an array of values for each condition (measured IBU, weight of hops, volume of wort, alpha-acid rating, OG, and steep time), with an index into the array denoted by square brackets, e.g. OG[1] is the first original gravity value in the list of M conditions. The symbols "//" denote a comment that has no effect on processing.

// units: weight is in grams, volume is in liters, temperature is in Kelvin
//     (373.15=boiling), and the AA rating is in the range from 0.0 to 1.0
//
// key programming concepts: 
//     '{' and '}' denote a block of code
//     ';' marks the end of an instruction
//    'for' loop : a loop with initial, final, increment, and code blocks 
//     x = x + y : the value currently in x is added to y; x is updated
//     values of an array are indexed with square brackets, from 1...M
//     pow(x,y) computes x to the power of y
//     exp(x) computes the e to the power of x

temperature = 373.15;
k1 = 7.9 * pow(10,11) * exp(-11858/temperature);
k2 = 4.1 * pow(10,12) * exp(-12994/temperature);
minimumError = 1000000.0; 
for {IAAscale = 0.0} {IAAscale <= 1.0} {IAAscale = IAAscale + 0.001} {
  for {nonIAAscale = 0.0} {nonIAAscale <= 0.1} {nonIAAscale = nonIAAscale + 0.0001} {
    err_sum = 0.0;
    for {k = 1} {k <= M} {k = k+1} {
      AA0         = AArating[k] * hopsWeight[k] * 1000.0 / volume[k];
      IAA_wort    = AA0 * (k1/(k2-k1)) * (exp(-1.0*k1*time[k]) - exp(-1.0*k2*time[k]));
      IAA_beer    = IAA_wort * IAAscale;
      hopsConcent = hopsWeight[k] * 1000.0 / volume[k]; 
      nonIAA_beer = hopsConcent * nonIAAscale;
      maltPP_beer   = (((OG[k] - 1.0) * 1000.0) * 0.025) * (69.68/51.2); 
      IBU_predicted = (51.2/69.68) * (IAA_beer + nonIAA_beer + maltPP_beer);
      diff = IBU_measured[k] - IBU_predicted;
      err  = diff * diff;
      err_sum = err_sum + err;
    }
    if {err_sum < minimumError} {
      minimumError = err_sum;
      bestIAAscale = IAAscale;
      bestNonIAAscale = nonIAAscale;
    }
  }
}
err_RMS = sqrt(minimumError / M);
print "best IAA scale factor: ", bestIAAscale;
print "best nonIAA hops scale factor: ", bestNonIAAscale;
print "with RMS error: ", err_RMS;
From the arrays of M values, this code will compute the values of scalingIAA and scalingnonIAAhops that minimize the mean-squared error between the measured IBU values and predicted IBU values, and print out the resulting values and error.

4. Example of Mapping IBU to IAA (and Vice Versa)
As one example of how this mapping works, let's say we brew several batches of beer with different amounts of hops and steep times, using 14.1% AA hops. From these batches (including measured IBU values) and the above code, we estimate scalingIAA as 0.310 and scalingnonIAAhops as 0.00379. In one batch, we added 8.054 grams of hops to 5.678 liters of wort, from which we can compute the initial alpha-acid concentration and total hop concentration:

[AA]0 = AArating × weight × 1000 / volume
[AA]0 = 0.141 × 8.054 × 1000 / 5.678 = 200.00 ppm

[hops]wort = weight × 1000 / volume
[hops]wort = 8.054 × 1000 / 5.678 = 1418.457 ppm

(I'm using only metric units here to simplify the presentation. If you're using British Imperial units (ounces, gallons, etc.), it's convenient to convert those to metric first.) The original gravity after a 20-minute steep time is 1.038 and pH 5.23, and we can use that to estimate the IBUs derived from malt polyphenols:

[nonIAAmaltPP]beer = ((OG − 1.0) × 19.0) × ((2.477 × (5.75 − pH)) + 1.0) × (69.68/51.2)
[nonIAAmaltPP]beer = 0.722 × 2.288 × 1.361 = 2.248 ppm

Let's say that this batch has a measured IBU value of 15.0 after a 20-minute steep time. From this information, we can compute the nonIAA concentration,

[nonIAA]beer = ([hops]wort × scalingnonIAAhops) + [nonIAAmaltPP]beer
[nonIAA]beer = (1418.457 × 0.00379) + 2.248) = 7.624 ppm

and the IAA concentration:

[IAA]beer = ((69.68/51.2) × IBU) − (([hops]wort × scalingnonIAAhops) + [nonIAAmaltPP]beer)
[IAA]beer = ((69.68/51.2) × 15.0) − ((1418.457 × 0.00379) + 2.248) = 12.790 ppm

The hop-derived nonIAA concentration is 5.376 ppm, and the nonIAA concentration from malt is 2.248 ppm; their sum is [nonIAA]beer, or 7.624 ppm. We can check the accuracy of our math by computing the IBU from the IAA and nonIAA concentrations. By definition, the IBUs will be equal to the sum of the IAA and nonIAA concentrations, multiplied by about 5/7:

IBU = 51.2/69.68 × ([IAA]beer + [nonIAA]beer)
IBU = 51.2/69.68 × (12.790 + 7.624) = 15.0

In this case, the isomerized alpha acids make up 62.7% of the IBU (because 12.790 / (12.790 + 7.624) = 0.6265). Even though the hops have been well preserved, the steep time of only 20 minutes reduces the IAA contribution to less than that of a 1960's beer with more oxidized hops and a 90-minute boil [Peacock, p. 161].

If we don't know the measured IBU value but we do know the scaling factors, we can estimate the IBU using scalingIAA. In this case, instead of computing [IAA]wort from IBU, we can estimate it using Malowicki's equations (with T = 373.15 degrees Kelvin (boiling) and t = 20 minutes) to determine [IAA]wort, and then apply the scaling factor to determine [IAA]beer:

[IAA]wort = [AA]0 × (k1(T)/(k2(T) − k1(T))) × (ek1(T)t − ek2(T)t)
[IAA]wort = 200.0 × (0.0125/(0.0031 − 0.0125)) × (e–0.0125×20.0 − e–0.0031×20.0)
[IAA]wort = 200.0 × −1.328 × (e–0.250− e–0.062)
[IAA]wort = 200.0 × −1.328 × (0.779 − 0.940) = 42.842

[IAA]beer = [IAA]wort × scalingIAA
[IAA]beer = 42.842 × 0.310 = 13.281

IBU = 51.2/69.68 × ([IAA]beer + [nonIAA]beer)
IBU = 51.2/69.68 × (13.281 + 7.624) = 15.36

In this particular example, the estimated IBU value (15.36) is very close to the measured value (15.0).

5. Estimating Each Component of nonIAA
We have considered the hop-derived fraction of [nonIAA]beer as a single source of bitterness. In fact, the hop-derived auxiliary bittering compounds are composed of oxidized alpha acids, oxidized beta acids, and hop polyphenols. If we use available models of the concentration of hop polyphenols and oxidized beta acids when using well-preserved hops, we can search for the fraction of alpha acids that oxidize during the boil and survive fermentation, instead of the more general scalingnonIAAhops. In this case, we have:

[nonIAA]beer = [PPhops]beer × scalePPhops + [oAA]beer × scaleoAA + [oBA]beer × scaleoBA + [nonIAAmaltPP]beer

where, as described in the blog post The Relative Contribution of Oxidized Alpha- and Beta-Acids to the IBU,

[PPhops]beer = 0.04 × 0.20 × 0.70 × W × 1000 / V
scalePPhops = 7/5 × 0.022 = 0.0308
[oAA]beer = lossFactoroAA × AA × W × 1000 / V
scaleoAA = 0.0130/0.0142 = 0.9155
[oBA]beer = 0.00195 × BA × W × 1000 / V
scaleoBA = 0.85

where W is the weight of the hops (in grams), V is the post-boil volume of wort (in liters), AA is the alpha-acid rating of the hops (from 0 to 1), and BA is the beta-acid rating of the hops (from 0 to 1). The parameter lossFactoroAA is the only unknown parameter, and represents the fraction of alpha acids that oxidize during the boil and survive into the finished beer. Generally, I've found that lossFactoroAA is between around 0.02 and 0.06, or 2% to 6% of the available alpha acids. In the SMPH model of IBUs, the percent of alpha acids that oxidize during the boil is estimated at 11%, and the loss factor of oAA during the boil is estimated at 0.51, for an overall estimate of lossFactoroAA of 0.056. This estimate doesn't include other factors such as losses caused by pH, krausen, etc.

6. Conclusion
This blog post presents a technique to estimate IAA and nonIAA concentrations from multiple IBU values. The IBU values should come from batches of beer that differ only in the concentration or steep time of the hops; all other parameters should be the same or as close as possible (e.g. original gravity, other wort characteristics such as pH, alpha acids, hop storage conditions, and fermentation conditions). The more IBU values that are available, the better that any differences will average out, and the better the estimates will be. This post doesn't provide any experimental data, but the use of this technique can be found in a number of blog posts on this site.

References

 


Navigate to: AlchemyOverlord home page