我希望绘制一系列独立伯努利分布随机变量y的对数似然函数,该随机变量的参数p是某个特征x的函数(逻辑函数)。这个逻辑函数还有一个参数b。这就是我想要估计的参数。所以我想将对数似然作为b的函数来绘制。我想使用ggplot2在R中进行操作,因为我想更好地掌握它们。
我的对数似然函数的创建和完善可以做得更好,但这不是我的重点。问题在于绘制的对数似然在区间(-5,5)上是常数。这似乎是错误的。尤其是当我用该区间内的任意b值调用函数时,返回的值总是不同的。这是为什么呢?谢谢。
我的对数似然函数的创建和完善可以做得更好,但这不是我的重点。问题在于绘制的对数似然在区间(-5,5)上是常数。这似乎是错误的。尤其是当我用该区间内的任意b值调用函数时,返回的值总是不同的。这是为什么呢?谢谢。
library(ggplot2)
set.seed(123)
# parameters
n=100
mu=0
s=2
b<-0.2
# functions
logit <- function(x,b){1/(1+exp(-b*x))}
# simulation of data
x<-rnorm(n,mu,s)
y_prob<-logit(x,b)
y<-rbinom(n,1,y_prob)
df<-data.frame(x,y)
# loglikelihood function
loglikelihood<-function(b,df){
prd<-1
for (i in 1:NROW(df)){
events<-logit(df$x[i],b)
nonevents<-1-events
prd<-prd*events^df$y[i]*nonevents^(1-df$y[i])
}
return(sum(log(prd)))
}
loglikelihood(0.3,df)
p2<-ggplot(data=data.frame(b=c(-5,5)), aes(b)) + stat_function(fun=loglikelihood, args=list(df=df))
p2<-p2+xlab("b") + ylab("loglikelihood")
p2