My experience, also. Had the patch antenna at the same place on the roof for many years. Presently, the U-blox 7 CEP is under 2 meters, but the altitude varies by +/- 10+ meters over time.The geometry and number of satellites determine location and altitude accuracy. My test location varies around a 10 meter radius. The altitude varies +/- 20 meters.
I don't have a handy reference explaining the math behind altitude solutions. But this link shows the many systems designed to improve the altitude solutions
https://en.m.wikipedia.org/wiki/GNSS_augmentation
Bottom line to the naysayers above: learn the difference between precision and accuracy. GPS $GPGLL may have an altitude reading to the meter, but that string doesn't show the errors bars of the numbers. Don't let it fool you.
I maintain that barometric measures with correction for atmospheric conditions are most accurate of the alternatives, unaugmented GPS, and integrated accelerometer (noisy data). But practically, any of these may be good enough for your mission... If you understand where the numbers come from