使用fitdistrplus拟合Gamma分布:对数似然差异与参数变化问询
Gamma分布拟合:归一化后的对数似然与参数差异解释
问题描述
我有一组数据集,将其归一化至最大值(数值范围为[0,1])后尝试拟合Gamma分布。使用fitdistrplus包估计分布参数时,发现两个现象:
- 原始数据的对数似然为负值,而归一化后的数据为正值;
- 归一化前后shape参数取值相近,但rate参数差异较大。
请问这两个现象的原因是什么?
原始数据拟合代码及结果
data <- c(130, 200, 830, 380, 680, 260, 280, 219, 330, 77, 360, 170, 240, 110, 170) fit_gammaB <- fitdist(data, "gamma") summary(fit_gammaB)
输出:
Fitting of the distribution ' gamma ' by maximum likelihood Parameters : estimate Std. Error shape 1.784525060 0.571213823 rate 0.006316464 0.002271273 Loglikelihood: -98.38866 AIC: 200.7773 BIC: 202.1934 Correlation matrix: shape rate shape 1.0000000 0.8519429 rate 0.8519429 1.0000000
归一化后数据拟合代码及结果
data_norm <- data / max(data) # 归一化至[0,1]区间 fit_gammaB <- fitdist(data_norm, "gamma") summary(fit_gammaB)
输出:
Fitting of the distribution ' gamma ' by maximum likelihood Parameters : estimate Std. Error shape 1.784173 0.600506 rate 5.241396 2.034361 Loglikelihood: 2.432731 AIC: -0.8654627 BIC: 0.5506377 Correlation matrix: shape rate shape 1.0000000 0.8671602 rate 0.8671602 1.0000000
一、对数似然值正负差异的原因
对数似然是所有数据点的概率密度函数(PDF)取对数后的总和。Gamma分布的PDF公式为:
$$f(x; shape=k, rate=\lambda) = \frac{\lambda^k x^{k-1} e^{-\lambda x}}{\Gamma(k)}$$
- 原始数据的数值很大(最大值830),代入PDF计算时,$e^{-\lambda x}$项会指数衰减,导致单个数据点的概率密度值极小,对极小值取对数自然是负数,累加后整体对数似然就呈现负值。
- 归一化后数据被缩放到[0,1]区间,$x$的数值大幅减小,$e^{-\lambda x}$项更接近1,计算出的概率密度值大很多,取对数后可能为正,累加后整体对数似然就变成正值。
注意:对数似然的正负只是反映概率密度的对数大小,和拟合质量无关。只要归一化是线性缩放,拟合的相对质量是一致的,AIC/BIC的相对比较依然有效。
二、shape参数相近、rate参数差异大的原因
Gamma分布的两个参数分工明确:
shape($k$):描述分布的形状特征(比如偏斜程度、峰值位置的相对位置),不受线性尺度缩放的影响;rate($\lambda$):和分布的尺度大小直接相关,会随数据的线性缩放成反比变化。
你的归一化操作是线性缩放:$x_{norm} = x / 830$(830是原始数据最大值)。根据Gamma分布的性质:若$X \sim Gamma(k, \lambda)$,则$cX \sim Gamma(k, \lambda/c)$($c$为缩放系数)。
对应到你的数据:
- 原始rate参数$\lambda_{raw} = 0.006316$,乘以缩放系数830,得到$0.006316 \times 830 \approx 5.242$,和归一化后的rate参数$\lambda_{norm}=5.2414$几乎完全一致,完全符合这个尺度变换规律。
- 而
shape参数描述形状,所以归一化前后的取值几乎相同(1.7845 vs 1.7842),这是完全合理的。
内容的提问来源于stack exchange,提问作者MariaK
相关产品推荐
相关产品推荐

