[R] using weights in lrm

Stephan Lindner lindners at umich.edu
Tue Jul 4 15:51:37 CEST 2006


Dear all,

here's my own answer to the first warning message -- the warning
message comes from handling missing values, which is specified as
na.delte as default in lrm.

Cheers,

Stephan




# Consider a toy data frame:


> d.temp
   y.js h.hhsize h.work.frac h.age  h.sex h.popgroup weightsd cluster
1    No        3   0.3333333    20 female   Coloured 47.80062    1001
2    No        5   0.6000000    18 female   Coloured 47.80062    1001
3   Yes        4   0.7500000    18 female      White 47.80062    1001
4   Yes        6   0.5000000    21 female   Coloured 49.71264    1002
5    No        6   0.5000000    15 female   Coloured 49.71264    1002
6    No        3   0.6666667    20 female      White 49.71264    1002
7    No        3   0.3333333    21 female      White 49.71264    1002
8   Yes        6   0.6666667    19 female      White 49.71264    1002
9    No        6   0.6666667    16   male      White 49.71264    1002
10   No        3   0.3333333    16   male   Coloured 49.71264    1002
11   No        5   0.4000000    15   male   Coloured 42.85572    1003
12   No        6   0.6666667    18   male      White 42.85572    1003
13   No        4   0.2500000    17   male      White 45.88860    1004
14   No        3   0.3333333    15 female   Coloured 45.88860    1004
15   No        4   0.5000000    19 female      White 45.88860    1004
16  Yes        4   0.5000000    16 female      White 45.88860    1004
17  Yes        6   0.3333333    21 female   Coloured 45.88860    1004
18   No        3   0.6666667    15 female      White 46.03022    1005
19  Yes        5   0.4000000    20 female      White 46.03022    1005
20   No        5   1.0000000    19 female      White 46.03022    1005


# The dependent variable has no missing values. Then, lrm works fine. 

results <- robcov(ols.results <- lrm(y.js ~
                                     + h.hhsize             
                                     + h.work.frac           
                                     + factor(h.age)        
                                     + h.sex
                                     + h.popgroup           
                                     
                                    ,data=d.temp,x=T,y=T
                                    ,weights=weightsd, normwt=TRUE),
                                    d.temp$cluster)


# Now change the first observation to a missing value:

d.temp$y.js[1] <- NA

# and do the same again produces the warning:


results <- robcov(ols.results <- lrm(y.js ~
                                     + h.hhsize             
                                     + h.work.frac           
                                     + factor(h.age)        
                                     + h.sex
                                     + h.popgroup           
                                     
                                    ,data=d.temp,x=T,y=T
                                    ,weights=weightsd, normwt=TRUE),
                                    d.temp$cluster)



# But specifying na.action="exclude" resolves it.

results <- robcov(ols.results <- lrm(y.js ~
                                     + h.hhsize             
                                     + h.work.frac           
                                     + factor(h.age)        
                                     + h.sex
                                     + h.popgroup           
                                     
                                    ,data=d.temp,x=T,y=T, na.action="na.exclude"
                                    ,weights=weightsd, normwt=TRUE),
                                    d.temp$cluster)


# ------------------------------------------- #


On Tue, Jul 04, 2006 at 07:59:31AM -0500, Frank E Harrell Jr wrote:
> Stephan Lindner wrote:
> >Dear all,
> >
> >
> >just a quick question regarding weights in logistic regression. I do 
> >
> >
> >
> >results <- lrm(y.js ~
> >                h.hhsize             
> >               + h.death1              
> >               + h.ill1                  
> >               + h.ljob1              
> >               + h.fin1 
> >               + h.div1 
> >               + h.fail1 
> >               + h.sex
> >               + h.ch.1      
> >               + h.ch.5      
> >               + h.ch.12     
> >               + h.ch.13     
> >               + h.popgroup
> >               + y.school.now
> >               ,x=T,y=T, data=d.caps1y, weights=weightsd, normwt=TRUE
> >                )
> >
> >
> >The regression works (in the sense that the results are not way off
> >the one w/o wighting the sample), but I get the following warning messages:
> >
> >Warning messages:
> >1: number of items to replace is not a multiple of replacement length 
> >2: currently weights are ignored in model validation and bootstrapping lrm 
> >fits in: lrm(y.js ~ h.hhsize + h.death1 + h.ill1 + h.ljob1 + h.fin1 +  
> >
> >Perhaps someone can help me clearifying the warning messages -- thanks
> >a lot in advance !
> 
> I think the second warning is clear.  Regarding the first, make sure 
> that the weights vector has length equal to the number of rows in 
> d.capsly.  Sometimes you have to subset weights.  If that's not the 
> problem, try to create a minimal failing example and we'll work on it.
> 
> Frank Harrell
> 
> >
> >
> >Cheers,
> >
> >Stephan
> >
> >	
> >
> >
> 
> 
> -- 
> Frank E Harrell Jr   Professor and Chair           School of Medicine
>                      Department of Biostatistics   Vanderbilt University
> 
> 

-- 
-----------------------
Stephan Lindner, Dipl.Vw.
Doctoral Student in Economics
1512 Gilbert Ct., V-17
Ann Arbor, Michigan 48105
U.S.A.
Tel.: 001-734-272-2437
E-Mail: lindners at umich.edu

"If I have seen further it is by standing on the shoulders of giants."
-- Isaac Newton



More information about the R-help mailing list