R中

2017-12-18 178 views
0

我试图计算一个估计的MISE整合之和,我需要做的积分:R中

(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) 

但可悲的是它没有奏效。这里最大的问题是fp(x),它由多个函数的总和组成。 我希望你能帮助我,我一直在努力一段时间。

基本上我想打:积分((K(X1)+ ... + K(XN) - EXP(-x))²)

+0

您的问题声明中没有定义' X'作为一个对象。在这种情况下,我认为当前的问题是'Vectorize'(又名'mapply')正在尝试索引Kguass函数。目前还不清楚为什么你不只是将这个函数构建到'func'中。 –

+0

我只是将X添加到参数中(并在此处编辑),但它仍然给我完全相同的错误。通过将该函数构建到func中,你的意思是什么?如果你在谈论Kgauss,这是因为我在代码中的多个地方使用了Kgauss,所以我只是把它作为参数,但我想我可以在函数内部使用它。 –

回答

1

您可以定义N,H和K外在func,然后有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 

(。我不知道,你甚至需要向量化func它的建成与矢量化功能的话)

+0

非常感谢它:) –