2011-02-02 2 views
1

Я хочу назначить предметы классам на основе вероятностей, которые я предоставляю. Я буду делать это в самых разных случаях, с разными значениями. Иногда я хочу, вероятность того или иного класса, чтобы быть 0. Я используюПроблема с cut() в R

, но это не удается, когда два из р переменных одинаковы. Я мог бы сделать их разными по минимальным количествам, например. pdrop = .2 ptitrate = .200001. Но есть ли лучший способ?

Благодаря

Питер

+2

Уход обеспечить полнофункциональную фиктивный пример? –

+0

Если вы хотите сделать это таким образом, значения p должны представлять разрывы в совокупном шкале вероятностей и, следовательно, никогда не должны быть одинаковыми, если нет нулевой вероятности для класса - в этом случае нет смысла включать его. Но выбор образца каракала - лучший метод. – James

ответ

6

Я предлагаю sample():

> p   <- 100 
> groups <- c("D", "T", "C", "N", "O") 
> probVec <- c(0.2, 0.2, 0.3, 0.25, 0.05) 
> classlist <- factor(sample(groups, size=p, replace=TRUE, prob=probVec)) 
> table(classlist) 
classlist 
C D N O T 
26 16 28 5 25 
+0

Это дает мне сообщение об ошибке, что есть положительная вероятность. Я побежал pdrop = .1; ptitrate = .5; pcomplete = 0; pnoise = .2; pother = 1 - (pdrop + pcomplete + pnoise + pother); #PROBS РАЗЛИЧНЫХ КЛАССОВ p <- 100 группы <- c ("D", "T", "C", "N", "O") probVec <- c (pdrop, ptitrate, pcomplete, pnoise, pother) classlist <- factor (sample (groups, size = p, replace = TRUE, prob = probVec)) таблица (список) и получена ошибка. Ошибка в выборке (группы, size = p, replace = TRUE, prob = probVec): Неположительная вероятность –

+0

@Peter: Вы создали 'pother' как функцию самого себя. Я подозреваю, что вы имели в виду 'pother = 1- (pdrop + ptitrate + pcomplete + pnoise)'. Это источник вашей ошибки? –

+0

Извините за формат этого комментария. Есть ли способ форматировать комментарии? –

Смежные вопросы