R语言自编函数计算极大似然估计
时间: 2023-10-23 13:09:34 浏览: 314
在R语言中,可以通过自编函数实现极大似然估计。以下是一个简单的例子,假设我们有一组正态分布的数据,需要通过极大似然估计求出其均值和方差。
首先,我们定义一个自编函数,用于计算正态分布概率密度函数:
```
normal_pdf <- function(x, mu, sigma){
exp(-((x-mu)^2)/(2*sigma^2)) / sqrt(2*pi*sigma^2)
}
```
接下来,我们定义另一个自编函数,用于计算数据的对数似然函数:
```
log_likelihood <- function(data, mu, sigma){
sum(log(normal_pdf(data, mu, sigma)))
}
```
最后,我们使用内置函数`optim`来求解对数似然函数的最大值:
```
data <- c(1.2, 2.3, 3.4, 4.5, 5.6) # 假设这是我们的数据
# 初始值
mu_init <- mean(data)
sigma_init <- sd(data)
# 求解
result <- optim(c(mu_init, sigma_init), log_likelihood, data=data, lower=c(-Inf, 0))
```
这里,我们使用`optim`函数来求解对数似然函数的最大值。其中,`c(mu_init, sigma_init)`为初始值,`log_likelihood`为目标函数,`data=data`为数据,`lower=c(-Inf, 0)`表示参数的取值范围,其中`mu`为无穷小到无穷大,`sigma`为0到无穷大。最终,`result`中的`par`即为求解出来的均值和方差。
阅读全文