GPS is not 100% accurate. You will need to do something more sophisticated. Maybe take X locations and calculate the median position. If the distance is larger than Y meters then add the distance and move to the next point.
The GPS doesn't really know your speed. It calculates it based on the difference between the current location and the previous one (probably with some averaging filter).