2014-04-22 4 views
0

누군가가 나에게 히스토그램을 그리고 그것을 부드럽게하고 부드럽게 기능을 원한다고 가정하십시오. R에서 그렇게하는 방법입니까? (히스토그램은 데이터에서 나오지 않으므로 커널 밀도 견적 기는 적용되지 않는 것 같습니다. 내가 잘못 생각한다고 말해주십시오.)파라메타 밀도를 피팅 단위의 피팅에 맞 춥니 다. 함수에서 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 
    } 

그리고 R는 말한다 : R은 dbeta (X, 알파, 베타)를 이해하지 않는 이유

Error in dbeta(x, alpha, beta) : 
    argument "beta" is missing, with no default 

내가 이해가 안 돼요. 또한 dbeta (x, shape1 = alpha, shape2 = beta)로 시도했지만 작동하지 않습니다. 당신이 나를 도울 수?

+0

귀하의 제약 조건 매트릭스'ui' (귀하의 인수'ui'는 2x2 매트릭스 여야합니다. '? constrOptim 참조)로 인해 코드가 작동하지 않을 것입니다. 나는 재현 할 수있는 예제없이 더 이상 당신을 도울 수 없다. 그렇지 않으면, 처음부터 피팅을 시도하기보다는,'fitdistr' 패키지를 사용하도록 조언한다. http://stat.ethz.ch/R-manual/ R 패치/라이브러리/MASS/html/fitdistr.html :) – Jealie

+0

고맙습니다. – Mothas

+0

fitdistr 함수가 적합하지 않은 것 같습니다. MLE 추정을 계산하는 데 데이터가 필요합니다. – Mothas

답변

0

구문 문제에 대한 해결책을 찾았습니다. constrOptim 함수는 첫 번째 인수 만 최적화하므로 최적화 된 함수가 하나의 인수로 작동합니다.

fit.norm<-function(h){ 
    dist<-function(ab){ 
    diff2<-function(x)(h(x)-dnorm(x,ab[1], ab[2]))^2 
    return(integrate(diff2,0,1)$value) 
    } 
    res<-constrOptim(theta = c(0.5,1), f = dist,grad=NULL, ui = rbind(c(1,0),c(-1,0),c(0,1)), ci = c(0,-1,0)) 
    return<-list(res) 
}