R中

2017-12-18 167 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

非常感謝它:) –