2013-04-15 30 views
0

我正在使用R進行一些多變量分析。對於這項工作,我需要整合trivariate PDF。雖然這樣做,我得到了錯誤:集成(f)中的錯誤:函數的評估給出錯誤長度的結果

Error in integrate(Vectorize(function(x) { : 
    evaluation of function gave a result of wrong length 

正如你可以看到,矢量化是解決不了這樣一些錯誤是怎麼回事。

如果有人能告訴我發生了什麼,我會非常感激。

這裏是我的代碼:

library(mvtnorm) 
f1<-function(x, y, z) {dmvnorm(x=as.matrix(cbind(x,y,z)), mean=mu.t, sigma)} #PDF with all three 
#integrate out x 
integrate(Vectorize(function(x) {f1(x=c1, y=c2, z=c3)}), 0.1,0.5, rel.tol=1.5e-20)$value 
+1

什麼是'c1','c2'和'c3' ?請使這[** reproducible **](http://stackoverflow.com/q/5963269/1478381) –

回答

0

不能肯定地告訴W於你的投入和產出/出更多的信息,但有什麼的f1輸出的length?如果它是不一樣的長度爲你的投入,我相信會引起你得到的錯誤,因爲integrate的幫助頁面:

f an R function taking a numeric first argument and returning a numeric vector of the same length. Returning a non-finite element will generate an error. 
+0

我想我認爲是什麼錯了。 f1輸出是x(n)的nrow的長度,我想要一個長度相同的向量。我做到了這一點:for(i in 1:n)f1 = function(x,y,z){dmvnorm(x = as.matrix(cbind(x,y,z)),mean = mu.t,sigma (x){f1(x = c1 [i],y = c2 [i],z = c3 [i])}),lower = -Inf, upper = -xb1 [i],rel.tol = 1.e-06)$ value} \t} – user2282564