Я новичок в кодировании на python и хочу получить параметры из набора данных, который, как я знаю из теории, скорее всего, t-распределен.Первым методом, который я попробовал, было использование t.fit ().Для двойной проверки результатов я также использовал st.stats.describe () и заметил, что получаю разные результаты.Я также использовал t.stats (), чтобы получить моменты "mvsk".Я не уверен, что делают различные функции, и какие результаты можно доверять.Позднее параметры будут использоваться в симуляции Монте-Карло.Может кто-нибудь объяснить различные методы, и что я делаю неправильно?
import numpy as np
from scipy.stats import norm,t
import scipy.stats as st
import pandas as pd
import math
SP = pd.read_excel('S&P+sectors.xlsx',
parse_dates=['date'],
index_col='date')['.SPX']
rets = np.log(SP).diff()
rets = rets.dropna()
t.fit(rets)
print("Parameters from t.fit: ", t.fit(rets), "\n")
d = st.stats.describe(rets)
print(d, "\n")
print("Standard Deviation from st.stats.describe : ",np.sqrt(d[3]), "\n")
mean, var, skew, kurt = t.stats(t.fit(rets)[0], moments='mvsk',
loc = t.fit(rets)[1], scale = t.fit(rets)[2])
print("mean, std.dev, skew, kurt: ",mean,np.sqrt(var),skew,kurt)
Вывод:
Parameters from t.fit: (2.563005821560674, 0.0005384408493821172, 0.006945103287629065)
DescribeResult(nobs=4767, minmax=(-0.09469514468085727, 0.10957195934756658), mean=0.00011244654312862343, variance=0.00014599380983290917, skewness=-0.21364378793604263, kurtosis=8.494830112279583)
Standard Deviation from st.stats.describe : 0.012082789819942626
mean, std.dev, skew, kurt: 0.0005384408493821172 0.014818254946408262 nan nan
Вы можете видеть, что я получаю разные средства от т.fit () и st.stats.describe ().Стандартное отклонение отличается для всех трех, и асимметрия, и эксцесс также различны.Почему это?