【问题标题】:How can I make a plot of first derivative of loglikelihood of Cauchy Distribution for different thetas in R如何为 R 中的不同 thetas 绘制柯西分布的对数似然的一阶导数图
【发布时间】:2021-11-30 10:13:03
【问题描述】:

我有一组来自 Cauchy (theta,1) 的观察结果,并且我有一个针对不同 x 值的对数似然图

obs=c(1.77, -0.23, 2.76, 3.80, 3.47, 56.75, -1.34, 4.24, -2.44, 3.29, 3.71, -2.40, 4.53, -0.07, -1.05, -13.87, -2.53, -1.75, 0.27, 43.21)
ll_c=function(theta, obs){ #define Loglikelihood function for Cauchy(θ,1) distribution
  logl= sum(dcauchy(obs, location = theta, scale = 1, log = T)) 
  return(logl)
}
x  = seq(from=-10,to=10,by=0.1) #create test values 
ll = NULL
for (i in x){
  ll = c(ll, ll_c(i, obs)) #perform ll_c for all test values and store
}
plot(x, ll)

我还需要针对相同的 x 值绘制对数似然函数的一阶导数图,但我不知道该怎么做。

fdll_c=function(theta,obs){
  Dlogl=D(sum(dcauchy(obs,location=theta,scale=1,log=T)),'theta')
  return(Dlogl)
}
fdll = NULL
for (j in x){
  fdll = c(fdll, fdll_c(j,obs))
}
plot(x,fdll)

我在这段代码上尝试了不同的变体,但每次返回时都会出现错误或所有点的导数都为 0。

【问题讨论】:

  • sum(dcauchy(.)) 是一个常数,其导数为零。既然你知道类似柯西对数的形式,为什么不用手推导或写下来D(.)
  • 因为柯西密度函数有多个变量,我无法弄清楚如何在没有非数字参数错误的情况下运行它的导数

标签: r plot


【解决方案1】:

也许以下回答了这个问题。
它使用显式的对数似然偏导函数,然后将其应用于 0 附近的向量。

obs <- c(1.77, -0.23, 2.76, 3.80, 3.47, 56.75, -1.34, 4.24, -2.44, 3.29, 3.71, -2.40, 4.53, -0.07, -1.05, -13.87, -2.53, -1.75, 0.27, 43.21)

dll_theta <- function(x, theta, scale){
  cc <- (x - theta)/scale
  -2*sum(1/cc)/scale
}

x <- seq(from = -10, to = 10, by = 0.001)
y <- sapply(x, function(.x) dll_theta(obs, theta = .x, scale = 1))

i <- which(abs(y) > 1e15)
plot(x[-i], y[-i], pch = ".")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    相关资源
    最近更新 更多