当前位置:   article > 正文

matlab ecdf与cdf,python中的经验cdf类似于matlab的on

matlab 求一个数相对于一组数的ecdf

我在matlab中有一些代码,我想重写成python。这是一个简单的程序,可以计算一些分布,并以双对数标度绘制。在

我遇到的问题是计算cdf。以下是matlab代码:for D = 1:10

delta = D / 10;

for k = 1:n

N_delta = poissrnd(delta^-alpha,1);

Y_k_delta = ( (1 - randn(N_delta)) / (delta.^alpha) ).^(-1/alpha);

Y_k_delta = Y_k_delta(Y_k_delta > delta);

X(k) = sum(Y_k_delta);

%disp(X(k))

end

[f,x] = ecdf(X);

plot(log(x), log(1-f))

hold on

end

在matlab one中,我可以简单地使用:

^{pr2}$

在x点得到cdf(f).Here是它的文档。

在python中,它更复杂:import numpy as np

from scipy.stats import norm

import matplotlib.pyplot as plt

from statsmodels.distributions.empirical_distribution import ECDF

alpha = 1.5

n = 1000

X = []

for delta in range(1,5):

delta = delta/10.0

for k in range(1,n + 1):

N_delta = np.random.poisson(delta**(-alpha), 1)

Y_k_delta = ( (1 - np.random.random(N_delta)) / (delta**alpha) )**(-1/alpha)

Y_k_delta = [i for i in Y_k_delta if i > delta]

X.append(np.sum(Y_k_delta))

ecdf = ECDF(X)

x = np.linspace(min(X), max(X))

f = ecdf(x)

plt.plot(np.log(f), np.log(1-f))

plt.show()

这让我的情节看起来很奇怪,绝对不像matlab的那样流畅。

我认为问题是我不理解ECDF函数,或者它的工作方式与在matlab中不同。

我为我的python代码实现了this解决方案(最重要的一个),但它看起来似乎不能正常工作。在

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/67145
推荐阅读
相关标签
  

闽ICP备14008679号