[R] Plot odds ratios on log scale

Marc Schwartz marc_schwartz at me.com
Mon Dec 21 23:33:07 CET 2009


On Dec 21, 2009, at 4:13 PM, Ted Harding wrote:

> On 21-Dec-09 21:19:27, Marc Schwartz wrote:
>> On Dec 21, 2009, at 2:54 PM, Rice, Terri wrote:
>>> Hi,
>>> I have the following table of odds ratios (or), lower limits(ll) and
>>> upper limits(ul), which I would like to plot as horizontal lines
>>> beginning at the lower limit, ending at the upper limits and with a
>>> dot at the odds ratio on an x-axis on a log10 scale. The y axis
>>> would be the study sites.
>>>
>>>> From what I can figure out, it looks like the plotCI function will
>>>> do everything except give me an x-axis that is on a log10 scale and
>>>> I can't get the logaxis function in the log10 package to work.
>>>
>>> Study   or      ll      ul      order
>>> UCSF    0.7     0.55    0.89    1
>>> MDA     0.76    0.71    0.93    2
>>> UK      0.68    0.51    0.89    3
>>> Mayo    0.5     0.28    0.87    4
>>>
>>> Thanks for any suggestions!
>>>
>>> Terri
>>
>> Terri,
>> You can build your own easily, using plot() and then either arrows()
>> or segments() to create the CI boundary lines. Just use 'log = "x"'  
>> in
>> the call to plot to create the log scaled x axis.
>>
>> Presuming that your data above are contained in a data frame called
>> 'DF':
>>
>>> DF
>>   Study   or   ll   ul order
>> 1  UCSF 0.70 0.55 0.89     1
>> 2   MDA 0.76 0.71 0.93     2
>> 3    UK 0.68 0.51 0.89     3
>> 4  Mayo 0.50 0.28 0.87     4
>>
>>
>> # Get the range of values for the x axis
>> xlim <- with(DF, range(or - ll, or + ul))
>>
>>> xlim
>> [1] 0.05 1.69
>>
>> # Plot the points. set the range of the x axis and set to log10 scale
>> plot(order ~ or, data = DF, xlim = xlim, pch = 19, log = "x")
>>
>> # Add the CI's
>> with(DF, arrows(or - ll, order, or + ul, order, code = 3, angle =  
>> 90))
>>
>> See ?arrows for help on the options for formatting the lines.
>>
>> Alternatively, since it appears you are doing a meta-analysis of
>> sorts, you might want to look at the metaplot() and forestplot()
>> functions in Thomas Lumley's 'rmeta' package on CRAN.
>>
>> HTH,
>> Marc Schwartz
>
> While Marc was posting the above, I was working out an example
> on just those lines! It is simply an illustration of how one
> can proceed. Often, it is worth while constructing one's plot
> "by hand", since then you can cook things exactly as you want
> them (Haute Cuisine), rather than get served with what's been
> prepared (Pizza Bar, even if it is a high-quality one).

<snip>

I nominate Ted's comments above for inclusion in the fortunes package.

Now...to the kitchen...that made me hungry... :-)

Regards,

Marc




More information about the R-help mailing list