被这个问题困扰很久,希望大牛们能帮忙看一下。
就下面一段代码来说:
subt、eta是已知数值向量,b、phi、xi如下定义都是多维的函数的向量
b <- function(x) c(cos(4*pi*x),sin(8*pi*x)) #the true density
phi <- function(x) c(x-1/2,x^2-x+1/6)
xi <- function(x){ #reproducing kernel
k3 <- function(x){
k3 <- (x^3-3/2*x^2+1/2*x)/6
}
k6 <- function(x){
k6 <- (x^6-3*x^5+5/2*x^4-1/2*x^2+1/42)/720
}
xi <- k3(subt)*k3(x)+k6(abs(subt-x)) #subt: subset of all the sample
}
vec <- function(x) c(b(x),phi(x),xi(x)) #vector containing b, phi and xi
g <- function(x){ #g(x): inner product of previous vector and eta
g <- drop(crossprod(eta,vec(x))) 注:eta和vec维数相同
}
mu <- function(ll,g,u){ #mu in the formula; ll: lower limit of integration
eg <- function(x) exp(g(x))
ueg <- function(x) u(x)*exp(g(x))
nume <- integrate(ueg,ll,1)$value #numerator
deno <- integrate(eg,ll,1)$value #denominator
mu <- nume/deno
}
然后出现下面的错误:
命令:mu(0,g,b)
错误于crossprod(x, y) : 非整合变元
此外: Warning messages:
1: 长对象之长度不是短对象之长度的整倍 in: k3(subt) * k3(x)
2: 长对象之长度不是短对象之长度的整倍 in: subt - x
简单的如下也会出错:
命令:mu(0,phi,b)
错误于integrate(ueg, ll, 1) : evaluation of function gave a result of wrong length
我觉得第二个问题可能出在积分不能对函数的向量进行,第一个就不太清楚。
希望大家能指点一下,另外不知道有没有关于函数的向量的包?谢谢!


雷达卡




京公网安备 11010802022788号







