This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Instant pace is not accurate and has bias towards slower than actual pace

It appears instant pace on my Fenix 6X Sapphire has a consistent bias towards a slower than actual pace, often by 0:30-1:00 min/mile. 
That makes it more difficult to pace accurately, for example during races. It seems the bias is worse on more challenging terrain, for example on trails or under tree cover.

To understand this better I wrote a python script that parses a run activity that I export in TCX format (for easier parsing because TCX is a text based format).

Here are some examples of my script output. This is from a faster paced trail run on moderate tree covered trails:

Mile 1.00: Split: 8:42, Avg Pace: 10:04
Mile 2.00: Split: 8:52, Avg Pace: 9:22
Mile 3.00: Split: 8:37, Avg Pace: 9:17
Mile 4.00: Split: 8:04, Avg Pace: 8:31
Mile 4.53: Split: 8:03, Avg Pace: 8:03
----------
Overall pace 8:30, Avg Pace: 9:08

In this example Split time is produced every mile based on elapsed time from the beginning.
Avg Pace is produced by looking at the instant speed reported each second in each sample, averaging it over all samples of that split, and then converting that average speed to pace format (in minutes per mile). Basically Avg Pace represents the averaged result of what the watch was showing me during the run.

If anyone questions that approach, it should be OK to average the speed because it is sampled at even intervals every second (it wouldn't be OK in the case of smart recording).

As you can see there is quite a bit of discrepancy, especially in the beginning, although it gets better towards the end. Overall, after averaging, the watch reported 0:38/mile slower instant pace than what I actually ran, so there is a strong bias towards slower pace.

Here is another example - this is from a mix of road and suburban trails on more open terrain:

Mile 1.00: Split: 9:07, Avg Pace: 9:22
Mile 2.00: Split: 8:04, Avg Pace: 8:09
Mile 3.00: Split: 10:49, Avg Pace: 10:43
Mile 4.00: Split: 10:35, Avg Pace: 11:30
Mile 5.00: Split: 8:23, Avg Pace: 8:18
Mile 6.00: Split: 13:05, Avg Pace: 13:39
Mile 7.00: Split: 7:58, Avg Pace: 7:56
Mile 8.00: Split: 9:08, Avg Pace: 9:34
Mile 9.00: Split: 8:11, Avg Pace: 8:44
Mile 10.00: Split: 8:43, Avg Pace: 8:46
Mile 11.00: Split: 10:08, Avg Pace: 10:13
Mile 12.00: Split: 8:22, Avg Pace: 8:32
Mile 13.00: Split: 8:29, Avg Pace: 8:30
Mile 13.76: Split: 10:02, Avg Pace: 10:00
----------
Overall pace: 9:21, Avg Pace: 9:32

Even though this is much better overall, during some miles the discrepancy between the split times and the averaged instant pace was still up to 1 min/mile.

One more example - this is from a much slower mountainous trail run on steep terrain with a good amount of walking:
Mile 1.00: Split: 9:44, Avg Pace: 10:17
Mile 2.00: Split: 11:44, Avg Pace: 12:15
Mile 3.00: Split: 14:14, Avg Pace: 14:08
Mile 4.00: Split: 29:14, Avg Pace: 27:51
Mile 5.00: Split: 17:40, Avg Pace: 20:02
Mile 6.00: Split: 12:23, Avg Pace: 12:43
Mile 7.00: Split: 12:36, Avg Pace: 13:46
Mile 8.00: Split: 11:53, Avg Pace: 12:34
Mile 9.00: Split: 14:34, Avg Pace: 15:07
Mile 10.00: Split: 24:11, Avg Pace: 23:23
Mile 11.00: Split: 8:50, Avg Pace: 8:46
Mile 12.00: Split: 12:23, Avg Pace: 13:31
Mile 13.00: Split: 10:46, Avg Pace: 11:50
Mile 14.00: Split: 16:09, Avg Pace: 16:42
Mile 15.00: Split: 17:20, Avg Pace: 17:51
Mile 16.00: Split: 13:23, Avg Pace: 13:32
Mile 16.68: Split: 11:14, Avg Pace: 12:32
----------
Overall pace: 14:40, Avg Pace: 15:15

In this case the instant pace was faster than actual in a couple of splits, mostly in very slow ones where I walked or stopped. But the overall pattern is the same - there is a clear bias towards a slower pace.

I should add that today I installed a Rolling Average Pace Garmin IQ field that averages pace over the last 100 yards. I placed that field next to Garmin's Instant Pace and watched them side by side during an easy run. One thing was clear, every time I reached a steady pace and cruised for a while to let the rolling pace stabilize, the rolling average pace was always a bit faster than Garmin's Instant pace, which confirmed the same bias that I discovered from the post-analysis of the runs with my script.

Has anyone had similar observations?

12/05/21 EDIT: I changed the title of the post since Garmin seems to have improved the pace. It is more stable and precise than before, meaning that the values are closer together, but it is still not accurate - there is still a significant bias towards slower than actual pace

  • OK - It's obvious Garmin can improve on 'instant pace' as this it's clearly a lot worse than what other manufacturers manage.

    Can your finding be used to improve real time pacing? Could it be implemented in a CIQ Datafield?

    Have you sent your findings to Garmin support? I know a lot of people say this hoping to shut down discussion over controversial issues, but I mean this genuinely, as you are doing interesting stuff, especially if it's can be used to improve real time results.   

  • The Pace also seems to work different on different devices. On my old Forerunner 310XT its much better than on the Fenix 6X Pro. It is not as heavy smoothing on the 310XT but then its also fluctuating more.

    Yes, there are good possibilities to get a better working Pace from this. But I dont know if Garmin wants to put effort to it. Most people seems to accept this built-in bad working Pace.

    And yes, it would be possible to create a CIQ data field with better accuracy than the built-in Pace. A developer with knowledge about Monkey C should be able to do it. I am a developer myself but have never developed in C so i have a learning curve to do it myself.

    No, I have not yet contacted Garmin support about my findings but i will as soon as i think that i have enough info and data.

    The Pace Pro function is really good in theory but its impossible to use on my running tracks due to these issues.

  • I have downloaded the API and learned about it a bit. It seems developing a simple data field should be very straightforward. A simple data field doesn't need to deal with UI or graphics, or anything like that. It just needs to produce text output when invoked by the watch, and it gets access to all the underlying metrics collected by the watch - time, distance, cadence, altitude, etc. So yes, implementing a rolling average should be fairly trivial. In fact there is already a CIQ field like that called Rolling Average Pace.

    https://apps.garmin.com/en-US/apps/28fdec7f-3807-4d24-b85a-4c86b40501f4

    But a problem with a simple rolling average is that it is less accurate in more dynamic scenarios like starting and stopping, or switching between walking and running - it takes awhile to settle. 

  • It needs to have some intelligence if it should work in different conditions. A basic rolling average will not be good enough if we should handle GPS dropouts, sharp turns, 3D Pace, starts/stops etc. Its doable, but a simple averaging will not be enough. I can do the math, if you do the coding ;)

  • @silentvoyager ,  @AndersB 

    I could give you some support if my time permits this. OTOH there is much support available in the developer/discussion forum.

    So I suggest to try it, it's not so hard. There are many samples available which are included with the sdk for the first steps, which can be modified or extended. And you've access to many metrics to experiment with.

  • , do you have possibility to answer some quick questions?

    Do you use GPS Only, GPS+GALILEO or GPS+GLONASS?

    Do you have "3D Speed" and/or "3D Distance" enabled / On?

    How do you wear the watch? Left or right wrist? Outer, inner or upper wrist?

    Which type of HR strap do you use?

    I can see some differences in my own statistics when I have tried different settings and also between how I wear the watch. 

  • Do you use GPS Only, GPS+GALILEO or GPS+GLONASS?

    Do you have "3D Speed" and/or "3D Distance" enabled / On?

    How do you wear the watch? Left or right wrist? Outer, inner or upper wrist?

    Which type of HR strap do you use?

    GPS+Glonass

    Both 3D Speed and 3D distance are off because I don't think it matters that much, and I remember reading that using 3D speed does further increase post-processing on Garmin side. On average I get about 100-200 ft of climb per mile (20-40 m per km), so the difference between having 3D metrics on and off should be well within 1%.

    I wear the watch normally on left wrist, on top of wrist bone. When I run the watch face tends to be positioned somewhat skywards. GPS tracks actually don't look that bad.

    HR strap is Polar H10, and I use it on more than 90% of my activities. The remaining ones use the built-in optical sensor.

  • Ok, thanks for the information.

    When i look back in my stats it seems to have been less pace issues when wearing the watch on the inner left wrist. 12-o-clock pointing to the sky. 3D off and GPS+GALILEO. I use a Hrm Run strap.

    But i have rather few activities with that settings and wear of the watch. So, i will try that on the next run to see if it have impact.

    Most of my latest runs i have had GPS+GLONASS, 3D On and weared the watch on upper left wrist (on the wrist bone, watch face towards the sky).

    I have also seen that the Vertical Ratio % seems connected some way. Im thinking that it might be problems with stride length or something.

  • GNSS preference depends on geographic location. I am in NW part of USA, so Glonass is supposedly preferred in this location and Galileo coverage is supposedly not so good. I can try GPS only and see whether that makes any difference. I used both GPS only and GPS+Glonass with Suunto 9 before and haven't noticed much difference.

    Vertical ratio is a running dynamics metric which I don't have. I'd guess when this ratio is higher, stride is bouncier and stride length is shorter. Perhaps Garmin relies too much on stride length in their pace calculation which makes the pace drop. But I suspect the higher vertical ratio is just another indicator of the same underlying issue. Perhaps it is the stride length which is determined incorrectly, and that makes both the vertical ratio too high and the pace too slow. 

  • erhaps it is the stride length which is determined incorrectly

    I have no idea what they do, but I wouldn't be surprised if stride length isn't just distance over x-amount of time, divided by cadence. I don't see how you measure it from the wrist with any sort of certainty....?