Я пытаюсь написать функцию правдоподобия для распределения, которое определяется интеграцией. Я использую функцию integrate(), но когда я пытаюсь использовать это в остальной части функции, я получаю ошибку:Проблемы с использованием интеграции при записи функции правдоподобия
«Ошибка в B (alpha + i, beta + 6 - i)/B (alpha, beta): нечисловой аргумент двоичному оператору «
Значение интеграции, например,« 9.501501 с абсолютной ошибкой < 0.00078 ». Я пытался использовать trunc(), но это тоже не помогает. Я относительно новичок в R, так есть ли известное решение? Любая помощь будет оценена!
B <- function(a,b){
integrand <- function(t){(t^(a-1))*((1-t)^(b-1))}
integrate(integrand,lower=0,upper=1)
}
betalik <- function(alpha,beta){
likelihood <- 0 Z <- c(37,22,25,29,34,49)
for(i in 1:6)
likelihood <- likelihood +
Z[i]*log((B(alpha+i,beta+6-i))/B(alpha,beta))
return(likelihood)
}
Дориан,
Вы не предоставили нам достаточно информации. По крайней мере, с таким вопросом вы должны опубликовать код для того, что дало вам ошибку. – Dason
Нет проблем, вот код: B <- function (a, b) { Погрешность <- функция (t) {(t^(a-1)) * ((1-t)^(b- 1))} интегрируют (подынтегральные, низшие = 0, верхний = 1) } betalik <- функция (альфа, бета) { вероятность <- 0 Z <- с (37,22,25,29, 34,49) для (i в 1: 6) вероятность <- вероятность + Z [i] * log ((B (альфа + i, бета + 6-i))/B (альфа, бета)) return (правдоподобие) } – BallzofFury
Хммм, типизация не совсем взаимодействует ... – BallzofFury