给定一个分类特征列表,如何计算这些特征的所有可能组合的优势比?

时间:2017-12-13 20:11:24

标签: r

我有一个分类功能的数据集。我想计算这些分类特征的所有可能组合的比值比(如果比值比不显着则为0)。

这是我计算比值比或者返回0的函数:

oddsratio = function(feature1,feature2) {
    OR = odds.ratio(feature1,feature2)
    if (OR[,4] < 0.05) {
        return(OR[,1])
    }
    else {
        return(0)
    }
}

这是我创建所有功能组合的代码:

features = c('elderly','female','race','stroke','copd','asthma','htn','pad','dyslipidemia','icd',
        'af','thyroid','dm','fracture','smoker_ever','ckd','cad','obesity')

all = combn(features,2)

这是我的循环:

loop = function(data,features) {
    for (i in 1:ncol(all)) {
        one = all[1,i]
        two = all[2,i]
        dataone = data[[one]]
        datatwo = data[[two]]
        oddsratio(dataone,datatwo)
    }
}

我收到错误:

  

“x必须是数字”

我尝试过重写代码,但无法让它工作。有没有人有任何想法?

编辑:

我添加了一些数据:

elderly female  white   stroke
1   1   1   0
0   0   1   0
0   0   1   0
0   0   0   0
0   1   1   0
0   0   1   0
0   1   0   0
1   0   1   0
0   0   1   0
0   1   1   0

再次编辑:找到解决方案

fillmatrix = function(data,features) {
    OR.matrix = matrix(nrow=length(features),ncol=length(features))
    for (i in 3:length(features)) {
        for (d in 3:length(features)) {
            or = oddsratio(data[,i],data[,d])
            OR.matrix[i,d] = or
        }
    }
}    

0 个答案:

没有答案