Предположим, кто-то нарисовал мне гистограмму, и я хочу ее сгладить и получить сглаженную функцию. Это способ сделать это в R? (Гистограмма не исходит из данных, поэтому оценки плотности ядра не кажутся адаптированными. Пожалуйста, сообщите мне, если вы думаете, что я ошибаюсь.)
До сих пор я предпочитал подгонять параметрическое распределение к своей гистограмме. Для этого я минимизирую интегральную квадратичную ошибку между моей гистограммой и бета-распределением. Вот мой код, где h — кусочно-постоянная функция с опорой [0;1].
h<-function(x) (x>0 & x<1)*1
fit.beta<-function(h){
dist<-function(alpha,beta){
diff2<-function(x)(h(x)-dbeta(x,alpha,beta))^2
return(integrate(diff2,0,1))
}
res<-constrOptim(theta = c(1,1), f = dist,grad=NULL, ui = matrix(c(1,1),1,2), ci = c(0,0))
return<-res
}
И Р говорит:
Error in dbeta(x, alpha, beta) :
argument "beta" is missing, with no default
Я не понимаю, почему R не понимает dbeta(x, alpha, beta). Я также пробовал с dbeta(x, shape1=alpha, shape2=beta), это не работает. Не могли бы вы помочь мне?
ui
(ваш аргументui
должен быть матрицей 2x2, см.?constrOptim
). Я не могу вам помочь без воспроизводимого примера... В противном случае, я бы посоветовал вам использовать пакетfitdistr
, а не пытаться делать подгонку с нуля, см. stat.ethz.ch/R-manual/R-patched/library/MASS/html/fitdistr.html :) - person Jealie   schedule 22.04.201410000*h[i]
) для каждого интервалаi
, а затем вызывать функции из пакетаfitdistr
. - person Jealie   schedule 23.04.2014