[R] question re: "summarry.lm" and NA values

Prof Brian Ripley ripley at stats.ox.ac.uk
Tue Aug 15 17:40:03 CEST 2006


On Tue, 15 Aug 2006, Petr Pikal wrote:

> Hi
> 
> On 15 Aug 2006 at 7:01, r user wrote:
> 
> Date sent:      	Tue, 15 Aug 2006 07:01:13 -0700 (PDT)
> From:           	r user <ruser2006 at yahoo.com>
> To:             	rhelp <r-help at stat.math.ethz.ch>
> Subject:        	[R] question re: "summarry.lm" and NA values
> 
> > Is there a way to get the following code to include
> > NA values where the coefficients are  NA ?
> > 
> > ((summary(reg))$coefficients)
> 
> better
> coef(reg)

coef(summary(reg)), perhaps.

> > explanation:
> > 
> > Using a loop, I am running regressions on several
> >  subsets  of  data1 .
> > 
> >  reg <- ( lm(lm(data1[,1] ~., data1[,2:l])) ) 
> > 
> > My regression has 10 independent variables, and I
> > therefore expect 11 coefficients.
> > After each regression, I wish to save the coefficients
> > and standard errors of the coefficients in a table
> > with 22 columns.
> > 
> > I successfully extract the coefficients using the
> > following code:
> >  reg$coefficients 
> > 
> > I attempt to extract the standard errors using :
> > 
> > aperm((summary(reg))$coefficients)[2,]
> > 
> > ((summary(reg))$coefficients)
> > 
> > My problem:
> > For some of my subsets, I am missing data for one or
> > more of the independent variables.  This of course
> > causes the coefficients and standard erros for this
> > variable to be  NA .
> 
> ??%^&*^??
> 
> What version? My lm behaves in accordance with na.action and it 
> throws an error in case na.fail, computes a value in case of na.omit 
> or na.exclude and again throws an error if the variable consist 
> exclusively from NA values. 
> 
> The only way how to get NA in coeficient is when a variable is either 
> constant or linear combination of other variable(s). Then
> coef(reg) 
> will give you correctly NA in the variable which appears constant and 
> in this case you could use it for setting standard error also as NA 
> let say by using ifelse statement and matching of names.

That happens in the print method, stats:::print.summary.lm contains

        coefs <- x$coefficients
        if (!is.null(aliased <- x$aliased) && any(aliased)) {
            cn <- names(aliased)
            coefs <- matrix(NA, length(aliased), 4, dimnames = list(cn,
                colnames(coefs)))
            coefs[!aliased, ] <- x$coefficients
        }

so the code is already available

> > 
> > Is there a way to include the NA standard errors, so
> > that I have the same number of standard erros and
> > coefficients for each regression, and can then store
> > the coefficients and standard erros in my table of 22
> > columns?
> > 
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> > http://www.R-project.org/posting-guide.html and provide commented,
> > minimal, self-contained, reproducible code.
> 
> Petr Pikal
> petr.pikal at precheza.cz
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list