[R] formula used by R to compute the t-values in a linear regression

peter dalgaard pdalgd at gmail.com
Mon Aug 1 15:45:05 CEST 2011


On Aug 1, 2011, at 15:27 , Samuel Le wrote:

> Hello,
> 
> 
> 
> I was wondering if someone knows the formula used by the function lm to compute the t-values.
> 
> 
> 
> I am trying to implement a linear regression myself. Assuming that I have K variables, and N observations, the formula I am using is:
> 
> For the k-th variable, t-value= b_k/sigma_k
> 
> 
> 
> With b_k is the coefficient for the k-th variable, and sigma_k =(t(x) x )^(-1) _kk is its standard deviation.
> 
> 
> 
> I find sigma_k = sigma * n/(n*Sum x_{k,i}^2 -(sum x_{k,i}^2))
> 
> 
> 
> With sigma: the estimated standard deviation of the residuals,
> 
> Sigma = sqrt(1/(N-K-1)*Sum epsilon_i^2)
> 
> 
> 
> With:
> 
> N: number of observations
> 
> K: number of variables
> 
> 
> 
> This formula comes from my old course of econometrics.
> 
> For some reason it doesn't match the t-value produced by R (I am off by about 1%). I can match the other results produced by R (coefficients of the regression, r squared, etc.).
> 
> 
> 
> I would be grateful if someone could provide some clarifications.


AFAICT, your formula only holds for K=1. Otherwise, the formula for sigma_k involves matrix inversion. Also, even for K=1, beware that textbook formulas like SSDx = SSx - (Sx)^2/n involve subtraction of nearly equal quantities and easily loses multiple digits of precision, so software tends to use rather more careful algorithms.

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
"Døden skal tape!" --- Nordahl Grieg



More information about the R-help mailing list