У меня есть функция, которая вычисляет логарифмическую вероятность для вектора уровней экспрессии в генах (x); например, -0,465, 0,111, -0,437. Рассчитанное значение сигмы равно 0,4717 и a = 0,8861.
loglike <- function(x,theta,sigma,a) {
sum(log(theta/(2*a)*(x<a)*(x>-a) + (1-
theta)*dnorm(x,mean=0.0,sd=sigma)))
}
Я хочу ввести в функцию вектор возможных значений для тета и построить результат функции с каждым значением для тета. Поэтому я подумал, что l oop будет вращаться по всем значениям тета в функции, чтобы создать список значений из выходов логоподобной функции. Затем создайте график тета на основе логоподобного результата.
theta <- seq(0,1,0.01)
result_ <- c()
for (i in 1:length(theta)) {
result <- loglike(x,i,sigma,a)
result_[i] <- result[i]
}
Но это просто дает мне предупреждающие сообщения:
Warning messages:
1: In log(theta/(2 * a) * (x < a) * (x > -a) + (1 - theta) *
dnorm(x, :
NaNs produced
Я знаю, что функция работает, потому что когда я использую функцию один за один раз он возвращает значения, такие как
loglike(x,0,sigma,a)
> -333.454234
Я не очень уверен в R как языке, поэтому буду очень признателен за любую помощь.