如何在分位数内绘制风险比?

时间:2014-06-25 15:37:38

标签: r plot

我想知道是否有一种简单的方法可以在另一个连续变量的分位数内绘制二元结果的风险比。例如,

df<-data.frame(y=rbinom(1000,1,0.3),x=rnorm(1000))

我会绘制p_i(y = 1)/(1-p_i)agaist i,它是x的分位数((1:4)/ 5)。有人知道如何以简单的方式实现它吗?

1 个答案:

答案 0 :(得分:1)

您可以使用cut功能根据分位数来分割x(我刚刚使用了0%,25%,50%,75%和100%分位数,但你可以轻松指定您想要quantile函数的分位数。然后,您可以使用tapply计算每个类别的风险比率。

set.seed(144)
df<-data.frame(y=rbinom(1000,1,0.3),x=rnorm(1000))
dat <- tapply(df$y, cut(df$x, quantile(df$x), include.lowest=TRUE),
               function(y) sum(y == 1) / sum(y == 0))
dat
#    [-3.3,-0.742] (-0.742,-0.0597]  (-0.0597,0.764]     (0.764,3.49] 
#        0.4534884        0.4285714        0.3966480        0.4044944 

你可以用qplot

之类的东西来绘制
library(ggplot2)
qplot(factor(names(dat), levels=names(dat)), dat)

enter image description here