我想用伽马函数替换指数函数来计算 R 中基于 95% 似然的置信区间

问题描述

我想替换指数对数似然


explik <- function(x) {

  sum( dexp(data,1/x,log=TRUE))
}

伽马负对数似然

gammalike <- function(x) {
  
  -sum(dgamma(data,shape=x,scale=2,log=TRUE))
}

在下面的函数和脚本中

likeqn <- function(mu) {
  
  muhat <- mean(data)
  maxlik <- explik(muhat)
  explik(mu) - maxlik + 0.5 * 3.841
}
source("explik.R")
source("likeqn.R")


# Input data
data <- c(63,130,88,120,330,188,270,222,189,116)

# Find the MLE of an exponential distribution
muhat <- mean(data)

# Solve likelihood equation numerically to find likelihood based CI
vlikeqn <- Vectorize(likeqn)
CIlower <- uniroot(vlikeqn,c(10,muhat) )$root
CIupper <- uniroot(vlikeqn,c(muhat,500) )$root
cbind(CIlower,muhat,CIupper)

# Plot log-likelihood function
x <- seq(80,350)
vexplik <- Vectorize(explik)
plot(x,vexplik(x),type="l",xlab=expression(mu),ylab="log-likelihood")


我尝试替换 log-lik 函数,但结果似乎不合理。

解决方法

具有比率 lambda 的分布 Expo(lambda) 是 Gamma(1,1/lambda)(形状尺度)。

gammalike <- function(x) {
  sum(dgamma(data,shape=1,scale=x,log=TRUE))
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...