1

我有一个包含 6 个预测变量(所有这些都是分类变量)、一个响应变量和一个权重列以及约 3500 个观察值的数据集。预测变量的水平从 2 到 7 不等。

我已经为每个预测变量的水平定义了指标变量,例如

retail <- Trade == "RETAIL"

“主要”变量之一在哪里Trade,而零售是它可以采用的值。

尝试使用以下方法计算条件变量重要性时遇到问题:

rf <- cforest(Actual ~ comp + tpft + abi1 + abi2 + 
              abi3 + abi4 + abi5 + abi6 + abio + builders + 
              clerical + manufacturing + othertrade + retail + 
              tradeunk + wholesale + firstrenewal + newbusiness + 
              renewedtwice + MTyes + MTno + ly9 + ly10 + ly11 + ly12 + ly13, 
              data=table, weights=Expected, controls=data.controls)

imp <- varimp(rf, conditional=TRUE)

其中 , 等中的每一个comp都是tpft主要变量可以采用的类别。

这将返回错误:

Error in names(blocks) <- cond : 
'names' attribute [24] must be the same length as the vector [12]

我不知道如何解决它!traceback给出:

> traceback()
2: conditional_perm(ccl, xnames, input, tree, oob)
1: varimp(rf, conditional = TRUE)

当我只想测试 6 个主要变量时,此方法有效,因此我相当确定这是指标变量的数量与其他变量的数量不匹配的问题,并且指标变量的 conditional=FALSE 也有效。任何帮助将不胜感激。

4

1 回答 1

0

我遇到了同样的错误,在对我的数据进行了一些实验后,我发现只有在包含逻辑预测变量时才会发生这种错误。将逻辑变量转换为数字为我解决了这个问题。您不会说您的预测变量是逻辑变量,但也许这是一个方向。

于 2014-04-30T00:36:33.743 回答