Я пытаюсь оценить производительность простой модели прогнозирования с использованием R, дискретизируя результаты прогнозирования, объединяя их в определенные интервалы, а затем сравнивая их с соответствующими фактическими значениями (в бинах).
У меня есть два вектора фактический и прогнозируемый, как показано на рисунке:
> actual <- c(0,2,0,0,41,1,3,5,2,0,0,0,0,0,6,1,0,0,15,1)
> predicted <- c(3.38,98.01,3.08,4.89,31.46,3.88,4.75,4.64,3.11,3.15,3.42,10.42,3.18,5.73,4.20,3.34,3.95,5.94,3.99)
Мне нужно выполнить binning здесь. Во-первых, значения «фактического» факторизуются/дискретизируются по разным уровням, например: 0-5: Уровень 1 ** 6-10: Уровень 2 ** ... ** 41-45: Уровень 9
Теперь я должен также поместить значения «прогнозируемого» в вышеупомянутые корзины. Я попытался добиться этого с помощью функции cut() в R:
binCount <- 5
binActual <- cut(actual,labels=1:binCount,breaks=binCount)
binPred <- cut(predicted,labels=1:binCount,breaks=binCount)
Однако, если вы видите, что второй элемент в прогнозируемом (98.01) помечен как 5, но на самом деле он не попадает в желаемый интервал. Я чувствую, что использование другого binCount для прогнозируемого не поможет. Кто-нибудь может предложить решение для этого?
cut(x=predicted, breaks=binCount)
делит диапазон «x» на интервалы binCount одинакового размера (наберитеsummary(predicted)
, чтобы увидеть этот диапазон). Посколькуpredicted
включает 98.01, по определению он будет в интервале (а поскольку это максимальное значение, он будет в интервале 5). Я думаю, вы хотели, чтобы разрывыbinPred
были такими же, какbinActual
, т.е. 5 бинов от 0,00 до 41,00. Затем, в какой бин нужно «вырезать (прогнозировать, ...)» поместить значения › 41? Должен ли он дать NA? открытый интервал справа для ›= 41? Отдельная дополнительная корзина[41,∞)
? Вам нужно решить, какой результат вы хотите. - person smci   schedule 17.09.2018