【发布时间】:2015-10-01 22:11:51
【问题描述】:
下面是我的代码。它适用于原始函数,例如 sin。但是,当使用名为 gllik 的函数时,它会在 f(y0) 中返回错误:未使用的参数 (y0)。我不知道如何纠正这个问题。
newton_search2 <- function(f, h, guess, conv=0.001) {
y0 <- guess
N = 100
i <- 1; y1 <- y0
p <- numeric(N)
while (i <= N) {
make_derivative <- function(f, h) {
(f(y0 + h) - f(y0 - h)) / (2*h)
}
y1 <- (y0 - (f(y0)/make_derivative(f, h)))
p[i] <- y1
i <- i + 1
if (abs(y1 - y0) < conv) break
y0 <- y1
}
return (p[(i-1)])
}
gllik函数如下:
x <- rgamma(n=30, shape=4.5)
gllik <- function() {
s <- sum(log(x))
n <- length(x)
function(a) {
(a - 1) * s - n * lgamma(a)
}
}
我使用的代码是:
newton_search2(gllik, 0.001, mean(x), conv = 0.001)
我不确定如何修复错误或得到正确答案,应该是 4.5(a 的最大似然估计)。
【问题讨论】:
-
你的代码没有被注释,你的问题不是一个真正的问题。返回错误的代码是什么?
-
哦,对不起。我忘了包括那个。我输入的代码是 newton_search2(gllik, 0.001, mean(x), conv = 0.001) 然后我得到一个错误,说 y0 是一个未使用的参数。我不确定如何完成这项工作。
-
除非我有误解,否则 gllink 不是数学函数。它是一个返回函数的函数。如果你使用它会起作用:newton_search2(gllik, 0.001, mean(x), conv = 0.001)
标签: r function arguments newtons-method