在R中求和

在R中求和,r,sum,integration,R,Sum,Integration,我试图计算一个估值器的MISE,为此我需要做以下积分: (fp(x) - f(x))^2 where f(x) is exp(-x) and fp(x) is : sum_{i}^n { (1/n)*((K((x - X[i])/h))/h) } 这里的问题是X是一个矩阵,我不知道如何积分这个和。 我试过这个: Kgauss <- function(u) dnorm(u) #Gaussian kernel func = function(x, n, h, X){ ((1/n

我试图计算一个估值器的MISE,为此我需要做以下积分:

(fp(x) - f(x))^2 where f(x) is exp(-x) and fp(x) is : sum_{i}^n { (1/n)*((K((x - X[i])/h))/h) }
这里的问题是X是一个矩阵,我不知道如何积分这个和。 我试过这个:

  Kgauss <- function(u) dnorm(u)  #Gaussian kernel  
  func = function(x, n, h, X){ ((1/n) * sum(Kgauss((x-X[0:n])/h)/h) - exp(-x))^2 } # h, n are constants
  vfunc = Vectorize(func)
  integrate(vfunc, n = 3, K = Kgauss, h = 0.25, X = rexp(3), lower = 0,  Inf)

Kgauss您可以在
func
之外定义n、h和K,然后将
x
作为唯一参数:

n = 3;  h = 0.25; X = rexp(3)
func = function(x){ ((1/n) * sum(dnorm((x-X[0:n])/h)/h) - exp(-x))^2 } 
vfunc = function(x) { sapply(x, func)}
integrate(vfunc,  lower = 0, Inf)
# 0.2070893 with absolute error < 1.7e-05
n=3;h=0.25;X=rexp(3)
func=函数(x){((1/n)*和(dnorm((x-x[0:n])/h)/h)-exp(-x))^2}
vfunc=函数(x){sapply(x,func)}
集成(vfunc,下限=0,Inf)
#0.2070893,绝对误差<1.7e-05

(我不确定您是否需要对
func
进行矢量化。它已经使用矢量化函数构建了。)

您的问题陈述没有将
X
定义为对象。在这种情况下,我认为直接的问题是
Vectorize
(又称
mapply
)正在尝试索引Kguass函数。不清楚为什么不将该函数构建到
func
中。我只是在参数中添加了X(在这里也进行了编辑),但它仍然给出了完全相同的错误。将该函数构建到func中是什么意思?如果你说的是Kgauss,这是因为我在代码中的多个地方使用了Kgauss,所以我只是把它作为一个参数,但我想我可以在函数中使用它。