如何在R语言中使用极大似然法计算正态分布参数?
时间: 2024-11-30 14:21:34 浏览: 3
机器学习中的EM算法详解及R语言实例
在R语言中,我们可以使用`mvtnorm`包中的`mle`函数来通过极大似然法估计正态分布的参数,即均值(mean)和标准差(sd)。这里假设我们有一个数据集`data`,它被认为是从正态分布生成的。
首先,你需要安装并加载`mvtnorm`库,如果尚未安装,可以使用`install.packages("mvtnorm")`,然后加载:
```R
library(mvtnorm)
```
接下来,你可以创建一个函数,该函数接受样本数据作为输入,并尝试找到最能拟合数据的正态分布参数:
```R
estimate_normals_params <- function(data) {
# 将数据视为向量,因为`mle`需要一维数组
data_vectorized <- as.numeric(data)
# 使用`mle`函数,设置初始猜测(比如0和1)
initial_guess <- c(mean = mean(data_vectorized), sd = sd(data_vectorized))
estimated_params <- mle(start = initial_guess, logl = dnorm, data = data_vectorized)
return(estimated_params$estimate)
}
```
现在,你可以将你的数据传递给这个函数:
```R
data_example <- rnorm(100) # 创建一个随机正态分布数据集
estimated_mean_and_sd <- estimate_normals_params(data_example)
# 输出估计结果
cat("Estimated mean:", estimated_mean_and_sd[1], "\n")
cat("Estimated standard deviation:", estimated_mean_and_sd[2], "\n")
阅读全文