Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I print the variance of an lm in R without computing from the Standard Error by hand?

Simple question really! I am running lots of linear regressions of y~x and want to obtain the variance for each regression without computing it from hand from the Standard Error output given in the summary.lm command. Just to save a bit of time :-). Any ideas of the command to do this? Or will I have to write a function to do it myself?

m<-lm(Alopecurus.geniculatus~Year)
> summary(m)

Call:
lm(formula = Alopecurus.geniculatus ~ Year)

Residuals:
    Min      1Q  Median      3Q     Max 
-19.374  -8.667  -2.094   9.601  21.832 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept) 700.3921   302.2936   2.317   0.0275 *
Year         -0.2757     0.1530  -1.802   0.0817 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 11.45 on 30 degrees of freedom
  (15 observations deleted due to missingness)
Multiple R-squared: 0.09762,    Adjusted R-squared: 0.06754 
F-statistic: 3.246 on 1 and 30 DF,  p-value: 0.08168 

So I get a Standard Error output and I was hoping to get a Variance output without calculating it by hand...

like image 525
Sarah Avatar asked Feb 19 '13 13:02

Sarah


People also ask

How do you find the variance of a model in R?

To calculate the variance in R, use the var() function. The var() is a built-in function that computes the sample variance of a vector. It is the measure of how much value is away from the mean value.

How do you convert standard error to variance?

Count the number of observations that were used to generate the standard error of the mean. This number is the sample size. Multiply the square of the standard error (calculated previously) by the sample size (calculated previously). The result is the variance of the sample.

Is residual standard error same as variance?

Residual Standard Error Standard deviation is the square root of variance. Standard Error is very similar. The only difference is that instead of dividing by n-1, you subtract n minus 1 + # of variables involved.


3 Answers

I'm not sure what you want the variance of.

If you want the residual variance, it's: (summary(m)$sigma)**2.

If you want the variance of your slope, it's: (summary(m)$coefficients[2,2])**2, or vcov(m)[2,2].

like image 160
gung - Reinstate Monica Avatar answered Oct 19 '22 23:10

gung - Reinstate Monica


vcov(m)

gives the covariance matrix of the coefficients – variances on the diagonal.

like image 42
user20650 Avatar answered Oct 20 '22 01:10

user20650


if you're referring to the standard errors for the coefficient estimates, the answer is

summary(m)$coef[,2] 

and if you're referring to the estimated residual variance, it's

summary(m)$sigma

Type names( summary(m) ) and names(m) for other information you can access.

like image 32
Macro Avatar answered Oct 19 '22 23:10

Macro