MLE的Newton-Raphson代码-需要TRUE/FALSE时缺少值 newtonraphson

MLE的Newton-Raphson代码-需要TRUE/FALSE时缺少值 newtonraphson,r,newtons-method,mle,R,Newtons Method,Mle,您正在从泊松分布中寻找lambda的最大似然估计。 但是,您正在求解未给出最大可能性的ftn(lambda)=0(假设参数p实际上是lambda的值) 从lambda的最大似然误差来看,是sum(X)/length(X) 您应该将ftn的导数设置为零,并求解lambda。你不需要你的newtonraphson 求解(1/lambda)*sum(X[i])-10=0,这将给出维基百科中的表达式。(10是长度(X))。不要让λ从0开始。执行类似于lambda的操作感谢您的输入。X不是真正的。你为什么

您正在从泊松分布中寻找
lambda
的最大似然估计。 但是,您正在求解未给出最大可能性的
ftn(lambda)=0
(假设参数p实际上是
lambda
的值)

lambda
的最大似然误差来看,是
sum(X)/length(X)

您应该将
ftn
的导数设置为零,并求解
lambda
。你不需要你的
newtonraphson


求解
(1/lambda)*sum(X[i])-10=0
,这将给出维基百科中的表达式。(10是
长度(X)
)。

不要让
λ从0开始。执行类似于
lambda的操作感谢您的输入。X不是真正的。你为什么要做
lambda
newtonraphson <- function(ftn, x0, tol = 1e-9, max.iter = 100) {
 x <- x0
 fx <- ftn(x)     
 iter <- 0
 while ((abs(fx[1]) > tol) & (iter < max.iter)) {
  x <- x - fx[1]/fx[2]
  fx <- ftn(x)
  iter <- iter + 1
  cat("At iteration", iter, "value of x is:", x, "\n")
 }
 if (abs(fx[1]) > tol) {
  cat("Algorithm failed to converge\n")
  return(NULL)}
  else {
  cat("Algorithm converged\n")
  return(x)}
}

X <- c(3,1,2,0,6,8,4,5,7,0)    
n <- 10
lambda <- seq(0,10,0.01)
ftn <- function(p) {
 for (i in 1:10){
 fp <- sum(X[i])*log(lambda) - 10*lambda
 dfp <- (1/lambda)*sum(X[i]) - 10
 }
 return(c(fp,dfp))
}

newtonraphson(ftn, 0.1, 1e-06)
Error in while ((abs(fx[1]) >= tol) & (iter <= max.iter)) { : 
missing value where TRUE/FALSE needed