Your _logpdf is not the same as Distributions._logpdf, so when you define 
it on ::myDist, you're not extending Distributions.jl's function.  You can 
either import it with import Distributions._logpdf and define it as you do 
above, or define it as

function *Distributions*._logpdf{T<:Real}(d::myDist, X::AbstractVector{T})
  # code
end

Sam

On Tuesday, March 10, 2015 at 12:58:38 PM UTC-7, Benjamin Deonovic wrote:
>
> I'm trying to create a custom distribution. I define:
>
> immutable myDist <: DiscreteMultivariateDistribution
>   #code
> end
>
>
>
>
> function _logpdf{T<:Real}(d::myDist, X::AbstractVector{T})
>   # code
> end
>
>
> _pdf(d::myDist, X::AbstractVector) = exp(_logpdf(d, X))
>
>
>
> I can succesfully create a distribution (i.e. d = myDist(...)) and I can 
> directly call _logpdf(d,x) on some data x. However, if I try to call 
> logpdf(d,x) (which is defined by the Distributions package) I get 
>
> ERROR: `_logpdf` has no method matching _logpdf(::myDist, ::Array{Int64,1})
>  in logpdf at 
> /Users/bdeonovic/.julia/v0.3/Distributions/src/multivariates.jl:66
>
> why is this??
>

Reply via email to