[R] Fitting a polynomial using lrm from the Design library

David Winsemius dwinsemius at comcast.net
Fri Jun 18 23:36:07 CEST 2010


On Jun 18, 2010, at 5:16 PM, David Winsemius wrote:

>
> On Jun 18, 2010, at 5:13 PM, David Winsemius wrote:
>
>>
>> On Jun 18, 2010, at 12:02 PM, Josh B wrote:
>>
>>> Hi all,
>>>
>>> I am looking to fit a logistic regression using the lrm function  
>>> from the Design library. I am interested in this function because  
>>> I would like to obtain "pseudo-R2" values (see http://tolstoy.newcastle.edu.au/R/help/02b/1011.html) 
>>> .
>>>
>>> Can anyone help me with the syntax?
>>>
>>> If I fit the model using the stats library, the code looks like  
>>> this:
>>> model <- glm(x$trait ~ x$PC1 + I((x$PC1)^2) + I((x$PC1)^3), family  
>>> = binomial)
>>>
>>> What would be the equivalent syntax for the lrm function?
>>
>> Not sure if the code you gave above produces an orthogonal set, but  
>> perhaps this will be meaningful to some of r-help's readers (but  
>> not necessarily to me):
>>
>> require(Design)
>> mod.poly3 <- lrm( trait ~ poly(PC1, 3), data=x)
>>
>> This does report results, but I'm not sure how you would interpret.  
>> (See below for one attempt)
>>
>> I think Harrell would probably recommend using restricted cubic  
>> splines, however.
>>
>> mod.rcs3 <- lrm( trait ~ rcs(PC1, 3), data=x)
>>
>> For plotting with Design/Hmisc functions, you will get better  
>> results with the datadist facilities.
>> > ddx <- datadist(x)
>> > options(datadist="ddx")
>> > plot(mod3, PC1=NA)
>
> Forgot to fix this:
> plot(mod.rcs3, PC1=NA)
>
>> # Perfectly sensible plot which includes the OR=0 line that would  
>> be the theoretically ideal result.

That would be log(odds) = 0 or OR=1.  I wonder how many other errors I  
committed?
-- 
DW
>>
>> # Whereas plot.Design does not know how to plot the earlier result
>>
>> > plot(mod.poly3, PC1=NA)
>> Error in plot.Design(mod.poly3, PC1 = NA) :
>> matrix or interaction factor may not be displayed
>>
>> May still get meaningful results with predict:
>>
>> plot(seq(-3, 2, by=.1), predict(mod.poly3, data.frame(PC1=seq(-3,  
>> 2, by=.1)) ) )
>>
>> Bit it appears to be less satisfactory that the rcs fit, since it  
>> blows up at the extremes.
>>
>> -- 
>> David.
>>>
>>> Thanks very much in advance,
>>> -----------------------------------
>>> Josh Banta, Ph.D
>>> Center for Genomics and Systems Biology
>>> New York University
>>> 100 Washington Square East
>>> New York, NY 10003
>>> Tel: (212) 998-8465
>>> http://plantevolutionaryecology.org
>>>
>>>
>>>
>>>
>>> 	[[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help at r-project.org 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.
>>
>> David Winsemius, MD
>> West Hartford, CT
>>
>> ______________________________________________
>> R-help at r-project.org 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.
>
> David Winsemius, MD
> West Hartford, CT
>

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list