在 R 中整合总和
Integrate a sum in R
我正在尝试计算估算器的 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)
可惜没有成功。这里最大的问题是fp(x)
,它是由多个函数相加而成。
我希望你能帮我解决这个问题,我现在已经苦苦挣扎了一段时间。
基本上我想做:积分((K(X1) + ... + K(Xn) - exp(-x))²)
您可以在 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
(我不确定您是否需要矢量化 func
。它已经使用矢量化函数构建。)
我正在尝试计算估算器的 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)
可惜没有成功。这里最大的问题是fp(x)
,它是由多个函数相加而成。
我希望你能帮我解决这个问题,我现在已经苦苦挣扎了一段时间。
基本上我想做:积分((K(X1) + ... + K(Xn) - exp(-x))²)
您可以在 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
(我不确定您是否需要矢量化 func
。它已经使用矢量化函数构建。)