BOM vs Dayboro.AU Forecast Accuracy Comparison
Month | Temperature (%) | High Temp (%) | Low Temp (%) | Wind Speed (%) | Max Gust (%) | Precipitation (%) | UV Index (%) |
---|---|---|---|---|---|---|---|
March 2025 | 97% | 81% | 76% | 0% | 100% | 0% | 52% |
February 2025 | 90% | 65% | 45% | 57% | 100% | 0% | 71% |
Statistical Summary
Overall Performance
Seasonal Accuracy
Best Performance by Metric
How do we calculate?
We compare our forecasts against those created on-site in Dayboro, AU. See the post Dayboro.au forecasts versus reality.
How Weather Accuracy Statistics Are Calculated
Here’s an explanation of how the numbers and statistics in the Weather Accuracy System are calculated, including the formulas used.
Basic Difference Calculation
The foundation of the accuracy assessment is calculating the difference between forecast values and actual measurements.
For example, with temperature:
Temperature_difference = Actual_temperature - Forecast_temperature
This is done for multiple weather metrics:
- High temperature
- Low temperature
- Average temperature (derived from high and low)
- Wind speed
- Maximum gust
- Precipitation
- Relative humidity (when available)
- UV index (when available)
Accuracy Percentage Calculation
Raw differences are converted to accuracy percentages using this formula:
Accuracy_percentage = (1 - (|difference| / max_tolerable)) × 100%
Where:
difference
is the absolute value of the differencemax_tolerable
is set to 5.0 for all metrics, representing the maximum acceptable difference- If
difference
exceedsmax_tolerable
, accuracy is set to 0%
In code, this is implemented as:
function weather_accuracy_difference_to_accuracy($diff) {
$abs_diff = abs(floatval($diff));
$max_tolerable = 5.0;
if ($abs_diff >= $max_tolerable) {
return 0;
}
return round((1 - ($abs_diff / $max_tolerable)) * 100);
}
This creates a linear scale where:
- Perfect prediction (difference = 0) yields 100% accuracy
- Small differences (under 1) yield high accuracy (>80%)
- Moderate differences (2-4) yield medium accuracy (20-60%)
- Large differences (≥5) yield 0% accuracy
Daily to Monthly Aggregation
For monthly views, daily differences are averaged:
Monthly_average_difference = Sum_of_daily_differences / Number_of_days
Monthly_accuracy = weather_accuracy_difference_to_accuracy(Monthly_average_difference)
Overall Accuracy Calculation
The “Overall Accuracy” for a month combines all available metrics:
Overall_accuracy = (Temperature_acc + Hi_Temp_acc + Low_Temp_acc + Wind_Spd_acc + TotPrcp_acc + Max_Gust_acc + RelHum_acc + UV_Index_acc) / Number_of_metrics
Seasonal Averages
Seasonal averages group months by season and average their overall accuracy scores:
Season_accuracy = Sum_of_monthly_overall_accuracies / Number_of_months
For the Southern Hemisphere:
- Summer: December, January, February
- Autumn: March, April, May
- Winter: June, July, August
- Spring: September, October, November
Year-over-Year Trends
These calculate how accuracy has changed between years:
Year_trend = Current_year_accuracy - Previous_year_accuracy
A positive trend shows improvement, while a negative trend indicates declining accuracy.
Colour Coding
Difference values are color-coded for visual assessment:
- Green: |difference| ≤ 2 (small differences)
- Orange: 2 < |difference| ≤ 4 (moderate differences)
- Red: |difference| > 4 (large differences)
Best/Worst Performance
These statistics identify the months with the highest and lowest overall accuracy scores, helping to identify patterns in forecast performance.
BOM Forecast Versus Actual Recorded
date | bom_high_temp_c | bom_low_temp_c | bom_avg_wind_speed | bom_max_gust | bom_total_rainfall | bom_max_uv_index | bom_avg_humidity | bom_avg_fuel_dryness | actual_high_temp_c | actual_low_temp_c | actual_avg_wind_speed | actual_max_gust | actual_rainfall | actual_dominant_wind_direction |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
17/12/2024 | 28.00 | 24.00 | 8.00 | 0.00 | 11.00 | 84.70 | 0.90 | 31.60 | 22.80 | 1.30 | 16.60 | 24.60 | 38 | |
18/12/2024 | 29.00 | 23.00 | 9.30 | 1.00 | 11.00 | 88.10 | 1.40 | 35.70 | 19.30 | 0.80 | 13.00 | 54.60 | 85 | |
19/12/2024 | 27.00 | 21.00 | 16.60 | 0.00 | 10.00 | 67.00 | 1.90 | 29.40 | 16.10 | 1.40 | 16.60 | 0.00 | 92 | |
20/12/2024 | 28.00 | 19.00 | 9.80 | 10.00 | 67.80 | 2.50 | 30.90 | 15.20 | 1.20 | 18.30 | 0.00 | 33 | ||
21/12/2024 | 30.00 | 18.00 | 7.50 | 10.00 | 71.10 | 3.10 | 34.30 | 19.50 | 1.70 | 18.30 | 0.00 | 27 | ||
22/12/2024 | 30.00 | 19.00 | 7.90 | 11.00 | 70.10 | 3.70 | 34.10 | 17.00 | 1.50 | 18.30 | 0.00 | 28 | ||
23/12/2024 | 33.00 | 20.00 | 7.90 | 11.00 | 67.10 | 4.20 | 35.60 | 18.60 | 1.40 | 13.00 | 0.00 | 37 | ||
24/12/2024 | 29.00 | 22.00 | 11.30 | 10.00 | 59.80 | 2.30 | 35.70 | 18.10 | 1.40 | 16.60 | 0.00 | 59 | ||
25/12/2024 | 28.00 | 20.00 | 10.50 | 10.00 | 62.40 | 3.00 | 31.20 | 16.60 | 1.70 | 23.80 | 0.00 | 18 | ||
26/12/2024 | 29.00 | 20.00 | 8.10 | 10.00 | 68.10 | 2.80 | 32.80 | 15.50 | 1.50 | 16.60 | 0.00 | 37 |