GPS does NOT ever actually give any indication of speed. All it does, given the reception of 4 satellites is to extremely accurately give a 3 dimensional plot of your position.. in simple terms... latitude, longitude, height. Nothing else at all.
The software then takes over, and, for example in an aircraft, will calculate 2 positions 1/5 second apart and so work out a speed. The shuttle space craft, I'm told, does it every 1/100 of a second !!
This is used as a backup to a ring laser gyro with built in accelerometers, to give an accurate read out of position height and speed. And the kit costs lots !!!
Your satnav uses the same technology to derive its position ... but the rate/number of calculations is far, far smaller. Therefore the time between the calculations is much higher, so the sped accuracy is far less.
If you travel at a constant speed on a straight and level road for at least 30 seconds, it is probably quite good. As soon as your speed changes, your height changes, or the direction changes, then the satnav makes various assumptions which all lead to inaccuracy.
This can easily be seen, travel at 15 miles an hour, brake very hard to a halt and watch the speed readout ... it will still be decreasing whilst you are stationary ... only a moment .. but it will ... that is the "averaging" effect of cheap computing of GPS.