<p><strong>These GFS parameters are stored as a running average, reset every 6 hours.</strong> This is a bit unusual and requires some special handling to get back to hourly forecasts.</p>
<p>The value you have, time-tagged 03:00 (3h) and labeled as &quot;0-3 hour ave&quot; in GRIB is indeed the average of the forecasts from 0-3 hours ahead, time-tagged interval ending. Or could be understood as the average of what one would typically like to have as three one-hour averages labelled 01:00 (0-1 hour ahead average), 02:00 (1-2 hour ahead average) and 03:00 (2-3 hour ahead average), time-tagged interval ending.</p>
<p>This is as follows for each the different time steps found in GFS data:</p>
<ul>
<li>01:00 (labeled as &quot;0-1 hour ave&quot;): the forecast for 01:00 (tagged interval ending, 1 hour average).</li>
<li>02:00 (labeled as &quot;0-2 hour ave&quot;): the average of the 01:00 and 02:00 forecasts (interval ending 1 hour averages).</li>
<li>03:00 (labeled as &quot;0-3 hour ave&quot;): the average of the 01:00, 02:00, 03:00 forecasts.</li>
<li>04:00 (labeled as &quot;0-4 hour ave&quot;): the average of the 01:00, 02:00, 03:00, 04:00 forecasts.</li>
<li>05:00 (labeled as &quot;0-5 hour ave&quot;): the average of the 01:00, 02:00, 03:00, 04:00, 05:00 forecasts.</li>
<li>06:00 (labeled as &quot;0-6 hour ave&quot;): the average of the 01:00, 02:00, 03:00, 04:00, 05:00, 06:00 forecasts.</li>
<li>07:00 (labeled as &quot;6-7 hour ave&quot;): the 07:00 forecast. The averaging has been reset after 6h.</li>
<li>08:00 (labeled as &quot;6-8 hour ave&quot;): the average of the 07:00 and 08:00 forecasts.</li>
<li>and so on.</li>
</ul>
<p>To <strong>get back to hourly forecasts</strong> (or 3-hourly for 3-hourly datasets), you either need to do the math yourself or you can use the <code>wgrib2</code> option <code>-ncep_norm</code>. See <a href="https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/ncep_norm.html" rel="nofollow noreferrer">https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/ncep_norm.html</a> .</p>
<p>To <strong>convert back yourself</strong>, you need to use the previous average and substract it with proper weighting. Here is short instructions by Shrinivas Moorthi from this thread <a href="http://gradsusr.org/pipermail/gradsusr/2016-November/040397.html" rel="nofollow noreferrer">http://gradsusr.org/pipermail/gradsusr/2016-November/040397.html</a> :</p>
<pre><code>Let us denote the data from 6 hourly output as C1, C2, C3, C4, C5, C6.

To get hourly mean, then
for hour 1, the mean is C1,
for hour 2, the mean is 2C2-C1
for hour 3, the mean is 3C3-2C2
for hour 4, the mean is 4C4-3C2
for hour 5, the mean is 5C5-4C4
and for hour 6, it is 6C6-5C5

This pattern repeats every six ours.
</code></pre>
<p>There also is an NCEP/NOAA paper on the model data, where this is explained somewhere deep down, but I couldn't find it right now. The two links above however give a bit of explanation/guidance as well.</p>
<p>And always a good idea to compare your results to the output of a tool doing the conversion automatically.</p>

CC BY-SA 4.0
2022-12-16T20:50:09.350Z
Thank you for your thorough and very helpful answer! I really appreciate your help!
Jordan
CC BY-SA 4.0
2022-12-19T11:05:39.067Z
Thanks for your comment, Jordan, pleasure. I have come across this a few times over the last years with colleagues asking/being confused... When I searched for this once more now, I still didn't find good documentation, but found your question, so I thought I'd write this down properly once for everyone.
FelixD
CC BY-SA 4.0
2022-12-13T11:21:51.347Z
2022-12-13T11:41:08.357Z
2022-12-13T11:41:08.357Z
FelixD
<p>I believe some of the Global Forecast System (GFS) <a href="https://www.nco.ncep.noaa.gov/pmb/products/gfs/gfs.t00z.pgrb2.0p25.f003.shtml" rel="nofollow noreferrer">parameters</a> are point values while others are average values over an interval. For example, the parameter DSWRF (Downward Short-Wave Radiation Flux) is labeled as a &quot;0-3 hour ave&quot;. Does this mean that for forecast hour 3 from the GFS, the DSWRF value is the average for the interval of hour 3 to hour 6? Is anything not labeled as an average a point value? Is there documentation that answers these questions (I can't find any)? I ask because the documentation for <a href="https://github.com/SolarArbiter/solarforecastarbiter-core/blob/23ac3c7a699f720fb642c3cc7d1acb83b486c2a6/solarforecastarbiter/reference_forecasts/models.py#L81" rel="nofollow noreferrer">solarforecastarbiter-core</a> claims that &quot;Cloud cover from GFS is an interval average with ending label&quot; (line 88). If this were true for my DSWRF example above, the forecast for hour 3 would be the average for the interval of hour 0 to hour 3 rather than from hour 3 to hour 6.</p>
<p>Thank you for your help!</p>

<gfs>
Understanding GFS Parameter Averaging Times
Jordan
# Understanding GFS Parameter Averaging Times

(Asked by: username_0 on 2022-08-25)

I believe some of the Global Forecast System (GFS) [parameters](https://www.nco.ncep.noaa.gov/pmb/products/gfs/gfs.t00z.pgrb2.0p25.f003.shtml) are point values while others are average values over an interval. For example, the parameter DSWRF (Downward Short-Wave Radiation Flux) is labeled as a "0-3 hour ave". Does this mean that for forecast hour 3 from the GFS, the DSWRF value is the average for the interval of hour 3 to hour 6? Is anything not labeled as an average a point value? Is there documentation that answers these questions (I can't find any)? I ask because the documentation for [solarforecastarbiter-core](https://github.com/SolarArbiter/solarforecastarbiter-core/blob/23ac3c7a699f720fb642c3cc7d1acb83b486c2a6/solarforecastarbiter/reference_forecasts/models.py#L81) claims that "Cloud cover from GFS is an interval average with ending label" (line 88). If this were true for my DSWRF example above, the forecast for hour 3 would be the average for the interval of hour 0 to hour 3 rather than from hour 3 to hour 6.

Thank you for your help!

**Tags:** gfs


---

## 1 answers

### Answer by username_1 on 2022-12-13. Score: 2 | Accepted answer

**These GFS parameters are stored as a running average, reset every 6 hours.** This is a bit unusual and requires some special handling to get back to hourly forecasts.

The value you have, time-tagged 03:00 (3h) and labeled as "0-3 hour ave" in GRIB is indeed the average of the forecasts from 0-3 hours ahead, time-tagged interval ending. Or could be understood as the average of what one would typically like to have as three one-hour averages labelled 01:00 (0-1 hour ahead average), 02:00 (1-2 hour ahead average) and 03:00 (2-3 hour ahead average), time-tagged interval ending.

This is as follows for each the different time steps found in GFS data:

* 01:00 (labeled as "0-1 hour ave"): the forecast for 01:00 (tagged interval ending, 1 hour average).
* 02:00 (labeled as "0-2 hour ave"): the average of the 01:00 and 02:00 forecasts (interval ending 1 hour averages).
* 03:00 (labeled as "0-3 hour ave"): the average of the 01:00, 02:00, 03:00 forecasts.
* 04:00 (labeled as "0-4 hour ave"): the average of the 01:00, 02:00, 03:00, 04:00 forecasts.
* 05:00 (labeled as "0-5 hour ave"): the average of the 01:00, 02:00, 03:00, 04:00, 05:00 forecasts.
* 06:00 (labeled as "0-6 hour ave"): the average of the 01:00, 02:00, 03:00, 04:00, 05:00, 06:00 forecasts.
* 07:00 (labeled as "6-7 hour ave"): the 07:00 forecast. The averaging has been reset after 6h.
* 08:00 (labeled as "6-8 hour ave"): the average of the 07:00 and 08:00 forecasts.
* and so on.

To **get back to hourly forecasts** (or 3-hourly for 3-hourly datasets), you either need to do the math yourself or you can use the `wgrib2` option `-ncep_norm`. See <https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/ncep_norm.html> .

To **convert back yourself**, you need to use the previous average and substract it with proper weighting. Here is short instructions by Shrinivas Moorthi from this thread <http://gradsusr.org/pipermail/gradsusr/2016-November/040397.html> :

```
Let us denote the data from 6 hourly output as C1, C2, C3, C4, C5, C6.

To get hourly mean, then
for hour 1, the mean is C1,
for hour 2, the mean is 2C2-C1
for hour 3, the mean is 3C3-2C2
for hour 4, the mean is 4C4-3C2
for hour 5, the mean is 5C5-4C4
and for hour 6, it is 6C6-5C5

This pattern repeats every six ours.

```

There also is an NCEP/NOAA paper on the model data, where this is explained somewhere deep down, but I couldn't find it right now. The two links above however give a bit of explanation/guidance as well.

And always a good idea to compare your results to the output of a tool doing the conversion automatically.

> **Comments:**
> **username_0**: Thank you for your thorough and very helpful answer! I really appreciate your help!  
> **username_1**: Thanks for your comment, username_0, pleasure. I have come across this a few times over the last years with colleagues asking/being confused... When I searched for this once more now, I still didn't find good documentation, but found your question, so I thought I'd write this down properly once for everyone.  

---

