2013-06-22 5 views
-1

Я ищу пакет в R, который может помочь мне рассчитать заднюю вероятность события. Есть ли?Использование формулы Байеса в R?

Хорошо, я работаю на таком набор данных

возраста класс образований проходят
group1 первичный 50 нет
group2 третичного 20 нет
group1 вторичных 70 да
group2 вторичных 67 да
group1 вторичных 55 да
группа 1 вторичная 49 нет
группа 1 вторичная 76 да

У меня есть вероятность того, что учащийся, сдавший экзамен, равен 0,6. Теперь мне нужно получить заднюю вероятность прохождения студенческого урока с учетом его возраста, уровня образования и степени
Я знаю, что мне нужно получить первый P (age = group1 | pass = yes) * P (education = primary | pass = yes) * P (grade> 50 | pass = yes)
Но это должно быть сделано для каждого случая (строки), и у меня установлена ​​дата с 1000 строк
Итак, я думал, что могу получить функцию, которая помогает мне в этом!

+0

Откалываясь в сторону, это вопрос с невероятной неопределенностью. Есть * много * R пакетов, которые выполняют различные формы байесовской оценки; 'Библиотека ("СОС"); findFn («Байесовский») 'даст вам слишком много результатов. Этот вопрос, вероятно, скоро будет закрыт, но если вы сможете предоставить больше контекста и деталей, кто-то может помочь ... –

+0

Я отредактировал свой вопрос, надеюсь, что это ясно. – meme

+3

это намного лучше. Почему бы вам не попробовать с помощью (yourData, tapply (age, education, grade> 50), pass, mean)/mean (pass)) 'и посмотреть, дает ли это какие-либо идеи? –

ответ

-1

Это ответ для только одной переменной (образование) и переменной (пропуск):

# get the prior probabilities 
prior<- c(prior_no, prior_yes) 

# get contingency table of values for mydata 
edu_table<- with(mydata,table(mydata$pass, mydata$education)) 

# get the sum across (pass) 
tots<- apply(edu_table,1,sum) 

# create matrix of 0's 
ppn<- edu_table*0 
post<- edu_table*0 

# use a loop to get the prior probabilities& posterior probabilities 
for(i in 1:length(tots)){ 
    for(j in 1: 4){ 

    ppn[i,j]=edu_table[i,j]/tots[i] 
    post[i,j]=prior[i]*ppn[i,j]/(prior[1]*ppn[1,j]+prior[2]*ppn[2,j]) 

    } 
} 

ppn # probability of education=j given y=i 
post # posterior probability of y=i given education=j 
0

Есть много пакетов/доступных функций. Вы должны проверить Bayesian inference Task View

Кроме того, если ваше предшествование не является полным распределением и является только точечной оценкой вероятности, вы, вероятно, на самом деле не делаете байесовский вывод, просто используя правило байесов в частотной структуре. Очень разные. Но теперь мы переходим на CrossValidated территорию.

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