基于R实现卡方分布自由度k最大似然估计的对数似然函数编写
卡方分布自由度最大似然估计R实现
核心说明
R 内置的lgamma()函数可直接计算伽马函数的自然对数值,完美适配你公式中$\log(\Gamma(k/2))$的计算需求,无需手动实现伽马函数逻辑。
对数似然函数代码
# 适配maxLik的卡方分布自由度对数似然函数 # param:待估参数向量,第一个元素为自由度k # x:观测样本向量 chi2_loglik <- function(param, x) { k <- param[1] n <- length(x) sum_logx <- sum(log(x)) sum_x <- sum(x) # 完全匹配你推导的对数似然公式 ll <- (k/2 - 1) * sum_logx - 0.5 * sum_x - n * lgamma(k/2) - (n * k / 2) * log(2) return(ll) }
调用示例
library(maxLik) # 生成测试样本:自由度为5的卡方分布随机数 set.seed(123) test_sample <- rchisq(n = 1000, df = 5) # 执行最大似然估计,初始值设为2,设置下界避免k出现非正值 mle_result <- maxLik( logLik = chi2_loglik, start = c(k = 2), x = test_sample, method = "L-BFGS-B", lower = c(k = 1e-5) ) # 查看估计结果 summary(mle_result)
内容的提问来源于stack exchange,提问作者SebastianBerko
相关产品推荐
相关产品推荐

