Given the definition of the fit line in a normal probability plot, I expected that this line would follow the y=x equation, i.e. that the x coordinate of any point on the line would equal its y coordinate. However, that doesn't seem to be the case. The following Matlab code does a QQ plot for a vector of 1000 numbers pulled from a standard (mu=0, sigma=1) normal distribution:

x = max * randn(1,1000);

and gives the plot below enter image description here which looks like this when you zoom around the (0,0) point: enter image description here

That the generated values are not exactly on (but in this case a bit below) the line is clearly due to the random sampling of the generated numbers. But why is it that the line itself does not pass through the (0,0) point when that should reflect the "perfect" (theoretical) normal distribution?

As for the data points themselves, isn't it the case that any (x,y) point shows that the kth-ranked value in both distribution is x quartiles away from the median of the theoretical distribution and y quartiles away from the median of the observed distribution?

  • 2
    $\begingroup$ You are plotting from a distribution with mean 1 against a theoretical distribution with mean 0. That is explicit in either case. There's a shift therefore. $\endgroup$
    – Nick Cox
    Commented Nov 30, 2016 at 15:48
  • $\begingroup$ mean 1? No, randn(1,1000) in Matlab just gives 1000 numbers from a stadard normal distribution (mu=0, sigma=1). I've editd my question to clarify this. $\endgroup$
    – z8080
    Commented Nov 30, 2016 at 16:18
  • $\begingroup$ My mistake. Thanks for the correction. Presumably 1 x 1000 matrix and further arguments would specify non-default mean and SD. (I've used MATLAB about twice, although no excuse for an incorrect comment.) $\endgroup$
    – Nick Cox
    Commented Nov 30, 2016 at 17:28
  • $\begingroup$ I think on reflection the bigger deal is that successive quantiles are necessarily highly correlated. Thus even with samples from exactly the same distribution, points will drift around the line and hang together. $\endgroup$
    – Nick Cox
    Commented Nov 30, 2016 at 17:29
  • $\begingroup$ Try this more than once. Each set of points will wiggle slightly but the wiggle below and above the line of equality won't be identical. Not even a large sample can be an exact replica of its parent. $\endgroup$
    – Nick Cox
    Commented Nov 30, 2016 at 18:12

1 Answer 1


The y-axis is labelled "Quantiles of Input Samples", so having a fixed line at $y=x$ would be useless except for the case where the samples are actually generated from $N(0,1)$. In fact, the line is a function of the data, likely with intercept = $\bar{x}$ and slope = $s$.

Here is an illustration in R (note that the left frame has intercept $\approx 1$ and the right frame has slope $\approx 2$):

> x11 <- rnorm(100,1) # 100 draws from N(1,1)
> x02 <- rnorm(100,0,2) # 100 draws from N(0,2)
> par(mfrow=c(1,2))
> qqnorm(x11, main="N(1,1)")
> qqline(x11)
> abline(v=c(0,1), h=c(1,2), lty=2)
> qqnorm(x02, main="N(0,2)")
> qqline(x02)
> abline(v=c(0,1), h=c(0,2), lty=2)


  • $\begingroup$ This. Same goes for the slope: if you compare the quantiles of a scaled Normal distribution (e.g. one with variance 4 instead of 1) to those of a standard Normal distribution the slope between them will not be 1. I think the line in qqplot is the line you'd get from a Normal distribution that has the same mean and variance as your sample. $\endgroup$ Commented Nov 30, 2016 at 15:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.