假设我有以下数据:
array([[0.88574245, 0.3749999 , 0.39727183, 0.50534724],
[0.22034441, 0.81442653, 0.19313024, 0.47479565],
[0.46585887, 0.68170517, 0.85030437, 0.34167736],
[0.18960739, 0.25711086, 0.71884116, 0.38754042]])
并且知道这些数据服从正态分布。我如何计算 AIC 编号? 公式为
2K - 2log(L)
K 是总参数,对于正态分布,参数是 3(均值、方差和残差)。我被困在 L 上,L 假设是最大似然函数,我不确定要为服从正态分布的数据传递什么,对于 Cauchy 或指数分布又如何。谢谢。
Update: this question appeared in one of my coding interview.
最佳答案
对于给定的正态分布,y
给定的概率
import scipy.stats
def prob( y = 0, mean = 0, sd = 1 ):
return scipy.stats.norm( mean, sd ).pdf( y )
例如,给定 mean = 0
和 sd = 1
,值为 0 的概率为 prob( 0, 0, 1 )
如果我们有一组值 0 - 9,对数似然是这些概率的对数之和,在这种情况下,最佳参数是 x
的平均值和 x
,如:
import numpy as np
x = range( 9 )
logLik = sum( np.log( prob( x, np.mean( x ), np.std( x ) ) ) )
那么 AIC 就是:
K = 2
2*K - 2*( logLik )
对于您提供的数据,我不太确定三列三行反射(reflect)的是什么。那么您是否必须计算三个均值和三个 StDev-s?不是很清楚。
希望上面的内容能让你入门
关于python - 手动计算 AIC 编号给定数据分布和一些分布字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59960237/