【问题标题】:calculate odds ratio across factors跨因素计算优势比
【发布时间】:2014-04-19 01:54:39
【问题描述】:

乍一看这很容易,但是当我开始研究它时,我不知道如何计算它。问题是计算每个学校的男女通过比较的优势比,数据是这样构造的:

set.seed(1000)
female = sample(c(0,1),size=20,replace=TRUE)
school = factor(sample(c(0:2),size=20,replace=TRUE),
            labels=c("A school","B school","C school"))
school = sort(school)
pass = sample(c(0,1),size=20,replace=TRUE)
data = data.frame(female,school,pass)

非常感谢!

【问题讨论】:

    标签: r r-factor


    【解决方案1】:

    您可以使用 split-apply-combine 计算此值,使用 split 函数按学校分解数据,使用 lapply 运行计算优势比的函数,并使用 unlist 组合结果:

    unlist(lapply(split(data, data$school), function(x) {
      (sum(x$female == 1 & x$pass == 1) / sum(x$female == 1)) /
      (sum(x$female == 0 & x$pass == 1) / sum(x$female == 0))
    }))
    #  A school  B school  C school 
    # 1.5000000 2.0000000 0.6666667 
    

    我在这里计算的实际上是一个风险比,因为对于您的数据集,优势比都是无限的或 0。

    【讨论】:

      【解决方案2】:

      tableprop.table 为每所学校提供您想要的。 by 将调用数据框中每个学校的函数。作为 functional 包的粉丝,我将使用它来创建函数:

      > require(functional)
      > by(data[c('female', 'pass')], data$school,
             Compose(table, Curry(prop.table, margin=1))
          )
      data$school: A school
            pass
      female         0         1
           0 0.3333333 0.6666667
           1 0.0000000 1.0000000
      ------------------------------------------------------------------------------------------------ 
      data$school: B school
            pass
      female   0   1
           0 0.5 0.5
           1 0.0 1.0
      ------------------------------------------------------------------------------------------------ 
      data$school: C school
            pass
      female         0         1
           0 0.0000000 1.0000000
           1 0.3333333 0.6666667
      

      注意Compose(table, Curry(prop.table, margin=1)) 等价于function(x) prop.table(table(x), margin=1)

      【讨论】:

        猜你喜欢
        • 2020-07-16
        • 2018-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多