我想知道是否有一种简单的方法可以在另一个连续变量的分位数内绘制二元结果的风险比。例如,
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)。有人知道如何以简单的方式实现它吗?
答案 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)