Мне нужно рассчитать эту интеграцию численно, а затем оценить ее значение для каждого наблюдения. Я пытался сделать это, используя функцию интегрирования, но каждый раз, когда я получал сообщение об ошибке. вот мой код:
`rm(list = ls(all = TRUE)) # Remove all objects in R console
set.seed(123456) # Set the seed for reproducible results.default for the program to fix initial values to start with in each time.
install.packages("MASS")
library (MASS) ## Simulate from a Multivariate Normal Distribution
n=10 # sample size
mu=c(0.3,0.7029) # true values of the mean vector of bivariate normal variables
var.cov<-matrix(c(10,0,0,10),nrow=2,ncol=2,byrow=T) #variance covariance matrix of the bivariate normal random variables
y= mvrnorm(n, mu, var.cov)#generating the bivariate normal random variables
theta.rad=rep(NA,times=n)
for (ii in 1:n){
if (y[ii,1] > 0 & y[ii,2]>=0) {theta.rad[ii]=atan(y[ii,2]/y[ii,1])}
else if (y[ii,1] < 0) {theta.rad[ii]=(atan(y[ii,2]/y[ii,1]))+pi}
else if (y[ii,1] > 0 & y[ii,2]<0) {theta.rad[ii]=atan(y[ii,2]/y[ii,1])+2*pi}
else if (y[ii,1] == 0 & y[ii,2]>0) {theta.rad[ii]=pi/2}
else if (y[ii,1] ==0 & y[ii,2]<0) {theta.rad[ii]=3*pi/2}
}# calculating the angles
u=cbind(cos(theta.rad),sin(theta.rad)) #constructing the main matrix (cos(theta,sin(theat)))
integral=function(uu){
f=function(r){
t=1/sqrt(var.cov[1,1])
tt=t*uu%*%mu
phi=log(1+((tt*pnorm(tt))/dnorm(tt)))
aa=r*(exp((log(r/var.1))-(r^2/(2*var.1))+(r*(uu%*%mu)/var.1)-phi))
return(aa)
}
integrate(f,0,Inf)
}
integral(u)
Я получил эти сообщения об ошибках:
Ошибка в f (x, ...):
тусклые [продукт 10] не соответствуют длине объекта [15]
Дополнительно: предупреждающее сообщение:
В r * (uu% *% mu):
длинная длина объекта не кратна короткой длине объекта
Ошибка в f (x, ...):
тусклые [продукт 10] не соответствуют длине объекта [15]
Дополнительно: предупреждающее сообщение:
В r * (uu% *% mu):
длинная длина объекта не кратна короткой длине объекта