次のエラーが発生しました:
エラー2値の制限。値
'gbmLikelihood'
はジェネリック型であると推測されていval gbmLikelihood : (float -> '_a -> float [] -> float) when '_a :> seq<float>
ます。引数を'gbmLikelihood'
明示的にするか、ジェネリックにするつもりがない場合は、型注釈を追加してください。
そしてこのタイプはまさに私が欲しいものです。それを機能させるために私は何をしなければなりませんか、そしてなぜそれは介入なしで単に機能しないのですか?
編集:
エラーはこのファイルから来ています(短いので、たくさん貼り付けます):
module Likelihood
open System
let likelihood getDrift getVol dt data parameters =
let m = getDrift data parameters
let s = getVol data parameters
let N = float (Seq.length data)
let sqrt_dt = Math.Sqrt dt
let constant = -0.5*Math.Log(2.0*Math.PI*dt)*N
let normalizedResidue observation = (observation - (m - 0.5*s*s)*dt)/(s*sqrt_dt)
let residueSquared observation =
let r = normalizedResidue observation in r*r
let logStdDev = Math.Log s
constant - logStdDev*N - 0.5* (data |> Seq.sumBy residueSquared)
let gbmLikelihood = likelihood (fun data p -> Array.get p 0) (fun datac p -> Array.get p 1)