解决用于二项分布的MLE

时间:2017-12-15 21:33:33

标签: r mle binomial-coefficients

这个问题是关于如何编写用于计算二项分布的MLE的对数似然函数。确切的对数似然函数如下:

enter image description here

通过编写计算负对数似然的函数,然后使用nlm()来最小化它来查找MLE估计值。以这种方式从第1.b部分的数据中找出MLE估计值。使用$ p = 0.5 $的初始猜测。

我的思维过程是,当使用MLE时,只涉及p(参数)的术语很重要,所以我们可以忽略第一个(n选择x)项。

neg.loglik <- function(p, data){

 n <- 1000

  return(-sum(data*log(p) + (n-data)*log(1-p)))

 # return a single numeric value

 }

# nlm(f, p, ...)
nlm(neg.loglik, p = 0.5, data = data)
nlm(neg.loglik, p = 0.5, data = data)$estimate

我不确定我的neg.loglik函数是否正确,因为估计值似乎很低...... 真正的p是1/3,但我的MLE得到0.013。

DATA:

你有一个有30个球的骨灰盒 - 10个是红色的,10个是蓝色的,10个是绿色的。写一行代码来模拟随机从瓮中挑选400个球并进行更换。创建一个变量num_green,记录400抽奖中选择的绿球数量。

set.seed(1)

urn <- c(rep("red", 10), rep("blue", 10), rep("green", 10))

sample <- sample(urn, size = 400, replace = TRUE)

num_green <- length(sample[sample == "green"])
num_green

现在重复上述实验1000次。创建一个向量data,使得data中的每个元素都是来自1.a中描述的独立试验的结果(计算绿球的数量)。

set.seed(2)

data <- rep(NA,n)

for (i in 1:n){

 sample <- sample(urn, size = 400, replace = TRUE)

 data[i] <- length(sample[sample == "green"])

  }

0 个答案:

没有答案