I recently using the day.csv file which is downloaded from http://archive.ics.uci.edu/ml/machine-learning-databases/00275/ to build a regression model for the last column “cnt” in R. This is the number of bikes rented a day. I first drop the variable "dteday" since it is not useful in building the model, and fit the model predicting cnt with the other 14 variables. Seeing that from the summary of fit1, we notice that there are only 4 significant variables with very small p-value < 0.05, which are season, atemp, casual, and registered.
#model1 fit1=lm(cnt~instant+season+yr+mnth+holiday+weekday+workingday+weathersit+temp+atemp+hum+windspeed+casual+registered) summary(fit1) Call: lm(formula = cnt ~ instant + season + yr + mnth + holiday + weekday + workingday + weathersit + temp + atemp + hum + windspeed + casual + registered) Residuals: Min 1Q Median 3Q Max -2.541e-11 -2.540e-13 -3.000e-15 2.151e-13 2.653e-11 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -6.216e-13 4.601e-13 -1.351e+00 0.17710 instant 1.442e-15 6.651e-15 2.170e-01 0.82848 season -9.284e-13 1.060e-13 -8.761e+00 < 2e-16 *** yr -6.468e-13 2.455e-12 -2.630e-01 0.79229 mnth 2.040e-13 2.051e-13 9.940e-01 0.32043 holiday -1.644e-13 3.642e-13 -4.510e-01 0.65190 weekday 3.328e-14 2.971e-14 1.120e+00 0.26307 workingday -3.965e-13 2.203e-13 -1.799e+00 0.07238 . weathersit 5.849e-14 1.482e-13 3.950e-01 0.69324 temp -2.146e-12 2.535e-12 -8.460e-01 0.39766 atemp 8.693e-12 2.873e-12 3.026e+00 0.00256 ** hum 7.270e-13 5.709e-13 1.273e+00 0.20333 windspeed 7.140e-13 8.390e-13 8.510e-01 0.39505 casual 1.000e+00 1.590e-16 6.288e+15 < 2e-16 *** registered 1.000e+00 9.141e-17 1.094e+16 < 2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 1.569e-12 on 716 degrees of freedom Multiple R-squared: 1, Adjusted R-squared: 1 F-statistic: 7.944e+31 on 14 and 716 DF, p-value: < 2.2e-16 Warning message: In summary.lm(fit1) : essentially perfect fit: summary may be unreliable
Then I fit my second model with:
fit2=lm(cnt~season+atemp+casual+registered) summary(fit2) par(mfrow=c(2,2)) plot(fit2) Call: lm(formula = cnt ~ season + atemp + casual + registered) Residuals: Min 1Q Median 3Q Max -2.923e-12 -2.195e-13 -8.280e-14 5.450e-14 2.630e-11 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 4.593e-12 1.732e-13 2.652e+01 < 2e-16 *** season 3.785e-13 5.035e-14 7.518e+00 1.65e-13 *** atemp -5.717e-12 4.115e-13 -1.389e+01 < 2e-16 *** casual 1.000e+00 8.827e-17 1.133e+16 < 2e-16 *** registered 1.000e+00 4.052e-17 2.468e+16 < 2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 1.36e-12 on 726 degrees of freedom Multiple R-squared: 1, Adjusted R-squared: 1 F-statistic: 3.701e+32 on 4 and 726 DF, p-value: < 2.2e-16 Warning message: In summary.lm(fit2) : essentially perfect fit: summary may be unreliable
Right now I am little confused on my regression diagnostic plots, the QQ plot seems not normal but I do not know how to interpret it. Do I need a log transformation in order to fix the plot? Also, I noticed that both my models have a very small residual standard error, and both R^2 and Adjusted R^2 are 1. Does it mean that my models are overfitted? How can I possibly fix it in this case?
Thank you so much for your help!