Simulating a linear voltage regulator with ngspice
That's about what I would expect. You don't have a very good circuit there, that's the problem. 

The only voltage reference is the series combination of the 1N4004 and the B-E junction of Q1. For an input voltage change from 10V to 20V, the current through those parts will change roughly an order of magnitude, so a 10%-ish change in output voltage is to be expected. 

You could get somewhat better performance by replacing the 1N4004 with a green LED (however the output will no longer go down to 2V). You could also bootstrap some current from the regulated output to reduce the percentage change in the current. It will still be quite temperature sensitive (approximately PTAT, so it will change hundreds of mV for a 10°C change in temperature with 8V nominal out). 

The best way would be to use a better reference such as an LM431 (which contains a band-gap reference and also has sufficient gain to replace the transistor). The minimum output voltage with this configuration is Vref, which is nominally 1.2495V. You do need to ensure 1mA (minimum) gets to the TL431 with minimum input voltage.