|
This, of course, will depend on how you code your variables, but if you try to fit a null, intercept-only and predictor-only model, you get this as residual variance: > data <- data.frame(state = c(0, 1), pref = c(0.45, 0.55)) > sum(residuals(lm(pref ~ 0, data = data))^2) # null model [1] 0.505 > sum(residuals(lm(pref ~ 1, data = data))^2) # intercept-only model [1] 0.005 > sum(residuals(lm(pref ~ state + 0, data = data))^2) # predictor-only model [1] 0.2025 So, it seems clear that you only get a "perfect" prediction with the full (intercept + predictor) model mostly because of the intercept (which explains (0.505-0.005)/0.505 = 0.99 = 99% of the variance). Thus, it makes sense that the predictor is only explaining the rest (i.e. 1%) of the variance... hence, the R^2 = 0.01 |