【发布时间】: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(.)? -
因为柯西密度函数有多个变量,我无法弄清楚如何在没有非数字参数错误的情况下运行它的导数