Question: I am investigating the effects of weather on restaurant demand. Currently, I am testing the model assumptions for my multiple linear regression model.

My model specification (simplified) is as follows: `lm(Visitor ~ Temperature + Temperature_Squared + Pressure + Clouds + Sun + Rain + Day_Fri + Day_Sat + Day_Sun + Day_Mon + Day_Tue + Day_Wed + Hour_00 + Hour_01 + Hour_02 + Hour_13 + Hour_14 + Hour_15 + Hour_16 + Hour_17 + Hour_18 + Hour_19 + Hour_20 + Hour_21 + Hour_22 + Hour_23 + Holiday, data=dat)`

After running the model, I obtained the following two graphs:

[![enter image description here](https://i.stack.imgur.com/lua7n.png)](https://i.stack.imgur.com/lua7n.png)

[![enter image description here](https://i.stack.imgur.com/lvLxU.png)](https://i.stack.imgur.com/lvLxU.png)

1. The residuals vs. fitted plot appears to be relatively flat and homoskedastic. However, it has this odd cutoff in the bottom left, that makes me question the homoskedasticity. What does this plot signal and, more importantly, what does it mean for my interpretation? Is multiple linear regression the correct model?
2. How do I interpret the "bump" in the top-right part of the QQ plot?

NB: The data is complete and does not have unreasonable outliers. Initial results indicate only 1 (out of 6) IVs to be significant, while all control variables are significant. Also, no issues with multicollinearity were detected.

Answer: 
Here are a dozen normal probability plots in R, each for a sample of size 100 from a known standard normal population. Each plot is *roughly* linear,
but most have a 'wobble' or two, especially toward the extremes.

```
set.seed(116)
par(mfrow=c(3,4))
 for(i in 1:12) {
  z = rnorm(100); qqnorm(z, pch=20) }
par(mfrow=c(1,1))

```

[![enter image description here](https://i.stack.imgur.com/sXfJb.png)](https://i.stack.imgur.com/sXfJb.png)

Repeat the code (without the `set.seed` statement) for more examples.
Examples of normal probability plots in textbooks seem, on average,
to be better behaved than the plots one typically sees in 
practice -- even when normality assumptions are very nearly true.

**Addendum:** Six additional plots with reference lines as
suggested in Comment by @Henry.

```
set.seed(117)
par(mfrow=c(2,3))
 for(i in 1:6) {
  z = rnorm(100)
  qqnorm(z); qqline(z, col=2) }
par(mfrow=c(1,1))

```

[![enter image description here](https://i.stack.imgur.com/w35kU.png)](https://i.stack.imgur.com/w35kU.png)
Let's assume "visitors" is the total number of visitors and thus whole positive numbers.
Let us assume, the model predicts zero visitors and there are zero visitors,then the residual is zero. If there are more then zero visitors, the the residuals must be positive.
If the modell predicts a negative number of visitors, then the residual must be at least of absolute value as the prediction.

In general: as the visitors are bound to a positive or zero value, there is a lower limit to the residuals.

The bump in the QQ plot is minimal and probably not worth worrying about with regards to regression assumptions.