R中的ROCR预测函数返回错误消息

时间:2017-07-27 02:22:22

标签: r roc

我正在查看具有一个连续自变量(Quant)和一个二元因变量(二进制)的数据集。我使用多项模型来预测连续自变量的二进制值。我希望制作一个ROC曲线。这是下面的代码:

public void OnLongPress (MotionEvent e)
{
        mTotalOffset = 0;

        int position = PointToPosition (mDownX, mDownY);

        if (position < 0 || !LongClickable)
            return;

        //added codes
        var item=Adapter.GetItem(position);
        //if the user long pressed a Vegetables, then it can't be drag and drop
        if (item != null && item.ToString() == "Vegetables")
        {
            return;
        }

        int itemNum = position - FirstVisiblePosition;

        ...
}

现在,如果我运行此代码,我会收到以下错误消息:“预测格式无效。”我不确定为什么我的pred对象不能满足预测函数的要求?唯一可行的方法是,如果我输入以下代码行: mymodel <- multinom(Quant~., data = dataset) pred <- predict(mymodel,dataset) roc_pred <- prediction(pred,dataset$Binary) roc <- performance(roc_pred,"tpr","fpr")

然而,这让我在pred矩阵中得到了一些奇怪的值。由于我的因变量是二进制的,我期望在我的pred变量中得到0或1的值(这是我用原始代码行得到的),但是当我添加type =“prob”时,它给出对于自变量(Quant)等于0的所有观测值,我得到0.3值。什么是类型=“概率”变化,为什么我不能只使用原始代码行来获得我的ROC曲线? 谢谢。

1 个答案:

答案 0 :(得分:0)

prob给你概率。您需要使用阈值将概率转换为二进制结果。这可以通过

来实现
pred <- predict(mymodel,dataset,type="prob")

# intialize as zero
pred_binary <-  integer(length(pred))

# if the probability exceed 0.5, treat that as 1
pred_binary[pred > 0.5] <- 1

然后pred_binary是您想要的二元结果。这里,阈值是0.5。您可以根据您的具体情况进行更改。大多数人通常从0.5开始,然后在必要时更改阈值,通常是在数据集不平衡的情况下。