设X和Y是两个独立的随机变量,密度函数为f_x(x)= x * exp(0.5 * x ^ 2)其中x> 0且f_y(y)= 0.5,其中y为[-1,1]
我试图近似概率P(Z> 1),其中Z = X + Y; 这是我的R代码:
u <-runif(10000, min=0, max=1000000);
v<-runif(10000, min=-1, max=1);
f<-function(x){x*exp(-0.5*x^2)} ;
g<-function(x){1/2} ;
for ( i in 1:10000) {
I[i] = integrate ( f ,lower = 0 , upper = u[i]) ;
J[i] = integrate ( g, lower =-1 , upper = v[i]) ;
}
mean( (I+J)>1 ) ;
我收到了这个错误:
Error in integrate(g, lower = -1, upper = v[i]) :
evaluation of function gave a result of wrong length
In addition: Warning message:
In I[i] = integrate(f, lower = 0, upper = u[i]) :
number of items to replace is not a multiple of replacement length
答案 0 :(得分:0)
将g <- function(x){1/2}
替换为g <- Vectorize(function(x){1/2} )
,将integrate(...)
替换为integrate(...)$value
:
u <-runif(10000, min=0, max=1000000)
v<-runif(10000, min=-1, max=1)
f<-function(x){x*exp(-0.5*x^2)}
g<-Vectorize(function(x){1/2 + 1e-12*x})
I <- rep(NA,10000)
J <- rep(NA,10000)
for ( i in 1:10000) {
I[i] = integrate ( f ,lower = 0 , upper = u[i])$value
J[i] = integrate ( g , lower =-1 , upper = v[i])$value
}
mean( (I+J)>1 )
> mean( (I+J)>1 )
[1] 0.0048
>