Average temperature

From Cumulus Wiki
Revision as of 16:38, 8 March 2020 by Sfws (talk | contribs) (→‎Cumulus outputs: Expanding re NOAA report annual averages with reference to Cumulus MX builds up to 3067)
Jump to navigationJump to search

Calculation

The average temperature for the day, is calculated by Cumulus using samples of the temperature taken at 1-minute intervals (sometimes called the 'integration method'). (This assumes Cumulus is running continuously, if it has just been restarted, for some station types Cumulus will use the temperatures stored at the console logging interval for the period since Cumulus previously ran). Each minute the new measurement is added onto the accumulator Total and increments by one the counter Samples in the today.ini log file.

Cumulus outputs

At rollover, the AvgTemp field in yesterday.ini holds the final integrated mean calculated by the quotient of Total over Samples in the old today.ini and the same average is written to dayfile.txt. The integrated mean temperature for each day is also output to the monthly NOAA style report row for the last line (which is yesterday's date). Integrated average temperatures are thus available as webtags for today and yesterday. For past days they are found in the dayfile.txt.

The average of these daily intregated means for the whole month is shown at the bottom of the monthly NOAA style report, and the lowest, actual, and highest of these integrated daily mean for each month are output to the annual NOAA style report. Providing Cumulus is in continuous operation, so the number of measurements in the calculation is the same for every day, the average of integrated daily means over a month is mathematically the same as an integrated mean for the whole month.

The annual averages shown at the bottom of the annual NOAA report do not use these integrated daily means, instead they simply add up the figures in that column. Thus, the way that Cumulus 1.9.4 (and Cumulus MX up to and including build 3067) works out all of the annual averages is arithmetrically wrong (the discrepancy varies through the year but is highest in March/April (because February has fewer days). The yearly average is calculated by adding all the months and then dividing by the number of months. Arithmetrically, the most accurate average is from adding all individual readings and dividing by number of readings (this what Cumulus does in the today.ini file that holds sum and number of readings. The NOAA reports however read from the daily log so a more accurate annual average can be calculated from adding all the daily averages and dividing by number of days (which is what newer CM builds do).

Alternatives

This offers an alternative to the simple mean of the highest and lowest temperatures of the day, and can give a 'better' average in cases where the high or low temperature occurred for a relatively short period, so could skew the simple average. To compare the two, select This period from the view menu and by default it will show both the integrated mean and simple mean temperatures for yesterday when you click Update display.

Note that statistically, a median temperature could be used to avoid such skewing, this would require holding all the individual measurements for a day, ranking them in order of magnitude and quoting the central value in that list - Cumulus does not retain the every minute individual values and cannot calculate median. If you wanted to compare daily median and daily mean, you would need to analyse the monthly log file with an external package.