CRN logo CRN logo
Official USCRN Temperature Algorithm

Each hour, each USCRN station transmits three average temperatures for the hour --- one temperature for each of the three temperature sensors at the station. We call these T1, T2, and T3; they are given in degrees C. In addition, the station transmits the speed of the fan in the housing around each temperature sensor; these are F1, F2, and F3. These six numbers T1,T2,T3,F1,F2,F3 are used to derive a single temperature value, called the "official USCRN hourly temperature", as follows.

We first compute the pairwise differences of each of the three temperatures:

D12 = | T1 - T2 |
D23 = | T2 - T3 |
D31 = | T3 - T1 |

When all three temperature sensors are operating normally, the values T1, T2, and T3 will be nearly equal to each other, so these three differences will be very small. If any of them is not small, then we may want to discard one or more of the temperature values in our determination of an official USCRN temperature. Because the thermometers have different degrees of accuracy at extreme temperatures, we use two different tolerance levels in determining whether a temperature difference is small enough: in comparing two temperatures that are both between -50C and 50C we use a tolerance of 0.3, and in in comparing two temperatures where at least one of them is less than -50C or greater than 50C, we use a tolerance of 0.6.

To formally state this, let i and j be the indices of the two T values being compared (i.e. i,j = 1,2,3, i ≠ j). Then define:

tol(i,j) = 0.3 if -50 ≤ Ti ≤ 50 and -50 ≤ Tj ≤ 50
tol(i,j) = 0.6 if either Ti or Tj is < -50 or > 50.
For each of the three differences Dij, we say that
Dij is "within tolerance" if Dij ≤ tol(i,j)
Dij is "outside tolerance" if Dij > tol(i,j)
The algorithm also takes into account the speed of the fans for each temperature sensor; if a fan speed is too low then the value from the corresponding sensor may be suspect. To precisely define how we decide whether a fan speed is too low, let:
FNi = normal fan speed for fan #i
FCi = 0.8 * FNi
FNi is determined for each fan by examining a history of fan speeds for that fan and keeping a running average of that fan's speed. FCi is referred to as the "critical fan speed" for fan #i. We say that a fan is "functioning normally" if Fi ≥ FCi.
  • If all three fans are functioning normally, and
    • If all three Dij are within tolerance, then the official USCRN temperature is the median of T1,T2,T3;
    • If two of the Dij are within tolerance and one is outside tolerance, then the official USCRN temperature is the median of T1,T2,T3;
    • If one of the Dij is within tolerance and two are outside tolerance, then the official USCRN temperature is the average of the two temperatures whose difference is within tolerance;
    • If all three of the Dij are outside tolerance, then the official USCRN temperature is specified as "missing"
  • If two fans are functioning normally and one is not, and
    • If the Dij for the two sensors whose fans are functioning normally is within tolerance, then the official USCRN temperature is the average of these two sensors' temperatures;
    • If the Dij for the two sensors whose fans are functioning normally is outside tolerance, then the official USCRN temperature is specified as "missing"
  • If one fan is functioning normally and two are not, then the official USCRN temperature is the temperature from the sensor whose fan is functioning normally
  • If none of the three fans are functioning normally, then the official USCRN temperature is specified as "missing"