Why is my data not normally distributed while I have an almost perfect QQ plot and histogram? I am doing a thesis and I am stuck with my statistics on time series data. And when I run a Shapiro test, or any test, it says:
Statistics=0.998, p=0.000
Sample does not look Gaussian (reject H0)

And that it is not normally distributed. But when I look to my QQ plot and histogram the data looks normally distributed. And even when it would not pass the test, it is strange that it results in p = 0.000.
I also have two other groups where the QQ plot and histogram looks way worse than this one, but the tests say those are normally distributed.
I am looking in my script, but I can’t find any mistakes so far. Is it likely that there is something wrong or is it very normal for this data to be nonparametric (even with this graphs)?
I am using Python btw, not R.
QQ plot:

Histogram:

PS. I also have a box plot:



Why is my data not normally distributed while I have an almost perfect QQ plot and histogram?

Because it is not perfect
Your qq plot is not perfect. You have some clear deviations from a normal distribution that are statistically significant.

Normal distributions exist in mathematics but not in nature
These type of deviations occur a lot. The Normal distribution occurs as a limit distribution for a sum of many different sources of variation. See for instance the central limit theorem. But this limit occurs at infinity and that is almost never exactly obtained in practice (although with physical experiments, which can have extremely large numbers of sources of variation, it can get extremely close).
Potential causes for your difference
In your case there is a deviation from normality in the limits of the distribution. Your sample has a limit between -8.75 and -6.5. On the other hand a normal distribution has limits $\pm \infty$.

*

*Such bounds can occur because you do not have a large sum of variables with variations. For instance the sum of 100 rolls with a six sided dice can be well approximated by a normal distribution. But, the dice rolls are limited in the range from 0 to 600.


*Another possibility: it is very likely that there might be some theoretical limit.
Take for instance the performance of a 100 meter sprinter. This might be very well approximated with a normal distribution since there are many sources of error involved in the performance (reaction time at the start, wind speed, physical state, positioning the feet correct every step, etc.). But, you will never get a human running faster than 0 seconds, whereas a normal distribution includes this as an option. Before these 0 seconds there will be some other limit. The sources of error mostly add linearly but once the runner obtains a certain speed then wind resistance starts to increase, coordination becomes more difficult and many other factors start to play a role. The addition of the error is not linear and independent (which means that the normal distribution approximation works less well)
It seems to me that it is physically impossible for your variable to be normal distributed, and you do not need a statistical test for this (I imagine that sessility, although I am not sure how you measure this and get negative values, is bounded).
Practical solution
Very often you do not need exact normality.
(edit: as Christian Hennig mentions in the comments, this is too liberal, it should be more strict instead and the statement should be "You never need exact normality". This relates to 'all models are wrong'. The assumption of normality is a part of a model that is likely (or certainly) to be false, but the point of modeling with the assumption of a normal distribution is that it is close enough.)
More important than significance is the effect size.
Although a problem here is that there is not really a good rule of thumb in the case of normality tests. Depending on your goals/case there might be recommendations. For instance, the qq-plot shows that you variable has smaller tails. This means that your estimate is gonna have a smaller excessive variability. Then you do not have to worry about underestimating p-values and increased type I errors (if the variability of your estimate is less, then you are less likely to exceed a certain range of statistical significance).
