0
私はpaperから経験的な分布関数を実装しようとしていますが、これは3ページのMATLAB実装です。ここに私のPythonバージョンがあります。私は、アカウントにどのようにstatsmodels
ECDF
ECDFをPythonでどのように実装しますか?
from statsmodels.distributions.empirical_distribution import ECDF
def ecdf_representation(D, n):
"""calculate ECDF from D at n points"""
m = np.mean(D)
X = []
for d in xrange(D.shape[0] + 1):
func = ECDF([D[:, d] + np.random.randn(np.shape(D[:, d])) * 0.01])
ll = func(np.linspace(0, 1, n))
X = [X, ll]
X = [X, m]
plt.plot(X)
plt.show()
return X
をしながら、それはNumPy for MATLAB users documentationに従って変換
私はエラーを取得する:
line 25, in ecdf_representation
func = ECDF([D[:, d] + np.random.randn(np.shape(D[:, d]))])
IndexError: too many indices for array
はD.shape[0]
列の数を返しませんか?だから、D[:, d]
は正しく動作するはずですか?何が起きてる?
を返しますが、今私が手'IndexError:タプルのインデックスが範囲外です'。なぜそれが起こっているのかについての考えはありますか?また、説明をお寄せいただきありがとうございます。 – dirtysocks45
起こっている行は 'for d in xrange(D.shape [1] + 1)です: ' – dirtysocks45
xrangeではなくrangeを試してください。または、膨大な量のデータを使用していますか? – Flynn