Я пишу алгоритм и вычисляю эксцесс распределения ежедневных доходов. Я стараюсь, чтобы мои вычисления эксцесса соответствовали моим вычислениям Excel. Расчет в Excel якобы использует формулу в верхней части этой страницы: http://www.macroption.com/kurtosis-excel-kurt/В чем разница между этим кодом и этой формулой?
Вот мой код, используемый для эмуляции, что формула (возврат является NumPy массив, состоящий из серии дневных доходностей):
def kurtosis(returns):
n = len(returns)
avg = np.average(returns)
std = np.std(returns)
coefficient = 1.0 * n * (n+1)/((n-1) * (n-2) * (n-3) * std**4.0)
term = (3 * (n-1)**2.0)/((n-2) * (n-3))
summation = 0
for x in returns:
summation += ((x - avg)) ** 4.0
kurt = coefficient * summation - term
return kurt
Видимо есть разница между формулой, используемой excel и моим кодом ... Excel дает эксцесс 1,94, тогда как мой код дает значение 2,81.
Кто-нибудь знает, почему эти два значения различны?
Вы можете попробовать другое 'ddof' для' std', например. 'Ddof = 1 '. Проверьте документацию этой функции. Обычно эффект выбора популяции v sample dof мал, но с 's ** 4' эффект будет усилен. – hpaulj
Вы также можете играть с 'scipy.stats.kurtosis' и искать другие вопросы' [numpy] kurtosis' SO. – hpaulj
Каков образец данных, который дает разные значения? Если он слишком большой для публикации здесь, вы можете найти небольшой образец данных, который вы могли бы разместить здесь, что дает разные ответы? – Paul