2
私は以下の二重積分を計算したいと思います。下限= -Infと上限= Infを両方の積分で計算したいと思います。関数の値をM = 0に対してゼロに定義したり、M = 0に対して数値積分を省略するにはどうすればよいですか? これは密度関数であり、確率を計算するときにM = 0以上の領域をゼロとして定義したいと考えています。Rの積分のポイントで関数値を定義する方法は?
機能はここで見ることができます:
1が原因私の問題への「ジャンプ」を参照してくださいすることができ、ここで、Rコードは、ここにある:
一つのアプローチは次のようになりmum<-5.16
mub<-1.5
mur<-2.764
sm<-3.37
sb<-0.2
sr<-0.056
dk<-function(k){
integrate(function(r) {
sapply(r, function(r) {
1/(2*pi*sr^2)^0.5*exp(-(r-mur)^2/(2*sr^2))*integrate(function(m) {1/(abs(m)*2*pi*sm*sb)*exp(-(m-mum)^2/(2*sm^2)-((k-r)/m-mub)^2/(2*sb^2))},lower=Inf, upper=Inf)$value
})
}, lower=Inf, upper=Inf)$value
}
curve(sapply(x,dk), from=-2, to=18, lwd=2,col="red")
であるとして、あなたのコードが実行されません。予期しない '}'があります。また、必要な動作をテストするためのデータは提供されていません。これらの問題に対処するために質問を編集できますか? (m-m3)^ 2 - ((kr)/ m-1)を計算すると、あなたの積分関数をfunction(m) m2)^ 2) }あなたの問題に対処しますが、確かめるためにはデータが必要です。 – dww
詳細については、http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-exampleを参照してください。 MWEを作成します。 – dww
あなたのご意見ありがとうございます、私は括弧を修正しました。しかし、私はフィットするデータがない、それは私が設定する必要があるパラメータです。私が実際に使用する関数とコードははるかに長いです。私はそれを簡略化した問題を提示するためにそれを簡略化しました。それは連続的な分布関数であり、私はRで実装する必要がある0を越える領域を定義することができます。 – Seb