python - 手动计算 AIC 编号给定数据分布和一些分布字符串

标签 python math statistics statsmodels quantitative-finance

假设我有以下数据:

 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 = 0sd = 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/

相关文章:

python - Python MapReduce如何添加条件语句

math - 高度(或深度)h 的二叉树的最大可能数量是多少

algorithm - 证明一般树的树遍历算法的时间复杂度

java - Baum-Welch 实现示例

python - 如何通过结合形状描述符来提高检测精度?

python - 使用短于 8 位的 PacketField 构建 scapy 数据包

python - 如何在函数内初始化并行独立进程?

javascript - 使数字成为百分比

linux - 在 bash 中计算方差

java - 如何获取 PC 主板的温度(以及其他硬件统计数据)?