# P value of multiple linear regression

I have extremely large number of observations (8524152) of soil moisture, precipitation, evapotranspiration, delta precipitation, and delta evapotranspiration. I ran a multiple linear regression model and my result looks like

Call:
lm(formula = SMDI ~ ET + delta_ET + PRCP + delta_PRCP, data = regData)

Residuals:
Min  vvvv     1Q   Median       3Q      Max
-10414.0     67.1    133.9    192.2   8737.3

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -87.508196   0.797889 -109.67   <2e-16 ***
ET            0.083853   0.001225   68.46   <2e-16 ***
delta_ET      0.267973   0.001270  211.04   <2e-16 ***
PRCP          0.237649   0.003255   73.02   <2e-16 ***
delta_PRCP    0.257458   0.003250   79.23   <2e-16 ***

Residual standard error: 1705 on 8524147 degrees of freedom
Multiple R-squared:  0.4424,    Adjusted R-squared:  0.4424
F-statistic: 1.691e+06 on 4 and 8524147 DF,  p-value: < 2.2e-16


The t-stat for evapotranspiration (ET), Precipitation (PRCP), delta_PRCP, and delta_ET are same, and the combined p-value is also extremely small. allmost < 2.2e-16. is this possible?

Juvin

• The t-statistics are not the same, and they are similar. Yes, this is possible. You have a very large sample, so we'd expect the p-values to be tiny. Commented Mar 4, 2015 at 23:34
• I didn't say it was guaranteed, I said it was expected. In any real dataset with a sample of over 8 million, it's almost guaranteed that the p-values will be tiny. I'd be interested in a counterexample where the sample is that large and they p-values are not tiny. Commented Mar 4, 2015 at 23:50
• @StatsStudent in practice point nulls are almost never perfectly true, so in large enough samples you would expect even trivial effects to be giving extremely small p-values. Commented Mar 5, 2015 at 0:16
• Juvin -- The reason the p-values are tiny is due to the very large sample size, as @Jeremy pointed out - even tiny effects will be many standard errors from 0. The reason the p-values are all shown as the same value is discussed in this answer. In essence, it's effectively the smallest value it's numerically meaningful to give as a calculated p-value, so if the p-value goes below that, you really should just show the inequality. The comments there about whether such tiny values are statistically meaningful would be apply here as well. Commented Mar 5, 2015 at 0:26
• Here's another. Your model has a positive coefficient on evapotranspiration (ET) and another on change in ET. But the effect of evapotranspiration is a decrease in soil moisture. These positive coefficients may be an artefact of time and space resolution of your data, or of ET working as a kind of proxy for nonlinear relationship(s) with precipitation, but on the face of it this is physically absurd. Check for correlations between your variables. (If soil moisture is a deficit, you still have the same problem, but with the signs of the precipitation coefficients.) Commented Mar 5, 2015 at 12:06

## 2 Answers

What you are getting here is actually not a coincidence in your data - it is just the numerical limits of statistical computing. If you check the characteristics of the machine you will see that R represents numerical values in binary form, and there is an imposed limit on the number of binary digits it uses to store a number. The value you are seeing here the smallest positive number that can be represented with fifty-two binary digits, which is presumably the present limit setting of your machine. You can check this in R by running the following code:

.Machine$double.ulp.digits [1] -52 .Machine$double.eps
[1] 2.220446e-16

2^(-52)
[1] 2.220446e-16

identical(2^(-52), .Machine\$double.eps)
[1] TRUE


So, all that you are seeing in your regression output is that all your p-values are below the smallest positive floating-point number in the present setting in R. This does not imply any amazing co-incidence of your p-values; it just means they are being expressed below the same upper bound. If you would like to get more accuracy in your p-values, you will need to look at how to change the calculation limits in your machine (see e.g., here).

The t-statistics are similar, but different. The p-values are very small and appear similar, but in fact, are likely very small, but outside the range of numerical accuracy (so small they can't be reliably computed, so you see the values you are seeing). They are extremely small, so the p-values are simply indicating strong significance, assuming a properly constructed model that meets model assumptions.