2015-09-02 3 views
1

Я создал серию чисел, используя функцию rbeta.Поиск пика на графике плотности

set.seed(123) 
n = 100000 
p1.12.2 = rbeta(n, 0.3225928, 1.2903712) 
p4.7.2 = (rbeta(n, 0.3488823, 3.1399407)^2) 
E2 = p4.7.2*p1.12.2 

Это прекрасно работает, но я хотел бы найти способ E2, так что я сделал это, получая пик плотности участка.

Я продолжаю получать отрицательное значение для режима. Но бета-распределение ограничивается 0-1. Любые идеи, откуда возникают отрицательные значения, или есть другой способ получить режим бина?

+0

Посмотрите [здесь] (http://stackoverflow.com/questions/2547402/standard-library-function-in-r-for-finding-the-mode), возможно, –

+0

Спасибо, это действительно сработало. Но все равно не нужно вручную вводить значение. –

+0

Я не понимаю вопроса. Все, что вам нужно сделать, это 'Mode (E2)' –

ответ

2

Я думаю, что это «проблема» из-за того, как работают оценки плотности ядра. Как насчет приближения вашего пикового значения с помощью гистограммы и определения большого количества перерывов?

h = hist(E2, breaks=500) 
i = which.max(h$counts) 
M2 = h$mids[i] 
M2 

Попробуйте ввести другие значения breaks.

+0

Это сработало отлично. Благодарю. –

+0

Это приближение. Внимательно проверьте, не возникнут ли какие-либо проблемы перед продолжением. Рад, что я помог. – AntoniosK

+0

Традиционный способ получения режима - подсчитать, сколько раз каждый элемент появляется в вашем векторе. Но в вашем случае E2 имеет много десятичных точек, и способ, которым он был создан, делает каждое значение уникальным. Оценки ядра пытаются «подсчитать» видимость в очень маленьких областях вокруг каждого значения. Поэтому, если значение настолько близко к нулю, оно может создавать небольшие отрицательные значения, чтобы покрыть небольшую область вокруг вашего минимального значения, близкую к нулю. С гистограммой вы не опуститесь ниже своего минимального значения. Я не уверен, есть ли способ сделать это, используя функцию плотности. – AntoniosK

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