# Why would the result change so much for a linear regression with or without a constant?

I was running a Linear Regression with Wooldridge dataset named GPA2, which is found on Python library named wooldridge.

I tried two linear regressions. The first:

results = smf.ols('colgpa ~ hsperc + sat', data=gpa).fit()


And the second

results = smf.ols('colgpa ~ hsperc + sat - 1', data=gpa).fit()


As you can see, there are no major differences between them, I've only removed the intercept from the seconde equation. However, a couple of things changes: (I) the warning of high multicollinearity disapeared when I removed the intercept; (II) The r-squared and adjusted r-squared went both from 0.273 to 0.954; (III) the f-statistic went from 1.77e-287 to 4.284e+04.

Why would this happen only by removing the intercept? Shouldn't them really be pretty similar?

Also, when running a variance inflation factor, I got a pretty high number for the constant. How's that possible?

Thanks

1. High Multicollinearity Warning Disappeared: When you remove the intercept term from the regression equation (by specifying - 1 in the formula), it effectively removes the constant term from the model. Without the constant term, the independent variables (hsperc and sat) are centered around the origin (0,0) in the data. This centering reduces the multicollinearity between the independent variables, as they are no longer forced to pass through a fixed point (the intercept). Hence, the high multicollinearity warning disappears.