r - 手动对数似然和 logLike 函数之间的区别
问题描述
我正在尝试比较 logLik 函数给出的对数似然函数的值和手动计算 Gamma 分布的值。logLik 函数给出的值为:
require(fitdistrplus)
x = rgamma(50,shape = 2, scale = 10)
Gamma_fitdist = fitdist(x,"gamma")
logLik(Gamma_fitdistr)
-189.4192
对于“手动”的对数似然函数是:
gmll <- function(scale,shape,datta){
a <- scale
b <- shape
n <- length(datta)
sumd <- sum(datta)
sumlogd <- sum(log(datta))
gmll <- n*a*log(b) + n*lgamma(a) + sumd/b - (a-1)*sumlogd
gmll
}
gmll(scale = 10, shape = 2, datta = x)
-246.6081
为什么 logLik 函数给我一个不同的值?谢谢!
解决方案
您已经颠倒了比例和形状,并且您的代码中有几个符号错误。
library(fitdistrplus)
set.seed(666)
x = rgamma(50, shape = 2, scale = 4)
Gamma_fitdist = fitdist(x,"gamma")
logLik(Gamma_fitdist)
# -150.3687
gmll <- function(scale,shape,datta){
a <- shape
b <- scale
n <- length(datta)
sumd <- sum(datta)
sumlogd <- sum(log(datta))
-n*a*log(b) - n*lgamma(a) - sumd/b + (a-1)*sumlogd
}
rate <- Gamma_fitdist$estimate[["rate"]]
shape <- Gamma_fitdist$estimate[["shape"]]
gmll(scale = 1/rate, shape = shape, datta = x)
# -150.3687
推荐阅读
- django - 用 django 显示换行符
- python - 使用 mongodb 和 python eve 嵌入 where 子句的 2 层
- string - 无法更改属性字符串的文本颜色
- c# - MongoDB C# 驱动程序中 DocumentClientException.RetryAfter 的等价物是什么?
- ontology - 如何推断负对象属性断言?
- mysql - MySQL:ORDER BY 使用长字符串产生错误的顺序
- weblogic12c - OBIEE 12c 分析无法登录 LDAP 用户
- ms-access-2016 - 访问运行时错误 3075
- ios - React Native,AppStore 请求 NSLocationAlwaysUsageDescription 值
- sql - 加入“不等于”行的 SUM 值