回答
如果你有足够的关闭X点(例如,一个每0.1),你可以尝试以下方法:
ln(f(x)) = -alpha ln(x) - lambda x ln(f(x))' = - alpha/x - lambda
所以这取决于你有你的观点: 如果你有很多点附近0,你可以尝试:
h(x) = x ln(f(x))' = -alpha - lambda x
所以当x变为0函数h的极限是-α 如果你有x的值很大,函数x - > LN(F(X))”当x趋于无穷时,趋向于lambda,所以你可以猜测lambda并使用pwdyson's表达。
如果您还没有关闭X分,数值导会很吵,所以我会尝试猜测拉姆达为-ln(f(x)/x
大型X的极限......
如果没有较大的值,但大量的X的,你可以尝试在字母和拉姆达(我想这将是比最初的表达更精确)... 这是一个简单的至少
sum_x_i (ln(y_i) + alpha ln(x_i) + lambda x_i) ^2
最小化平方回归(numpy.linalg.lstsq
将完成这项工作)。 所以你有很多方法,选择的方法真的取决于你的输入。
如果您知道点遵循这一规律完全相同,则反转方程,并把在x和其对应的F(X)值:
import math
alpha = -(lambda*x + math.log(f(x)))/math.log(x)
但如果点不完全符合等式,你需要做一些回归来确定alpha。
编辑:好的,所以他们不完全适合。这超出了Python的问题,但可能会有一些可以处理它的numpy。这里是numpy linear regression recipe,但你的方程不能重新排列成线性形式,所以你必须考虑非线性回归。
没有点不完全符合方程。我有每个f和g 100个值。从图中我发现这是一个指数截断的幂律。我现在想找出阿尔法。该方程不完全适合图形。 – Bruce 2010-02-12 08:45:29
做你想做的事情的一般和一般方法是执行非线性回归(尽管如另一个回答中指出的那样,可以线性化问题)。在许多科学家使用的SciPy软件包的帮助下,Python可以很容易地完成这项工作。
你正在寻找的例程是它的least-square optimization routine(scipy.optimize.leastsq)。一旦你围绕着这个通用优化程序的工作方式(见示例),你可能会发现许多其他的机会来使用它。基本上,您可以计算您的测量结果与其理想值之间的差异列表,并且您要求SciPy找到使这些差异尽可能小的参数,以便您的数据尽可能符合模型。然后这给你你正在寻找的参数。
这听起来像是你可能试图将一个幂定律拟合到一个由于不完整而在低端指数截断的分布 - 但是我可能对你的问题读得太多了。
如果这是您正在处理的问题,则本网站(及随附出版物)解决此问题:http://tuvalu.santafe.edu/~aaronc/powerlaws/。我在该页面上编写了幂函数钳工的python实现;它从那里链接。
- 1. 如何使用Python估计指数截断幂律的参数?
- 2. 估计幂律分布的指数截断
- 3. R - 用x和y数据绘制幂律线
- 4. 如何使用Python估计幂律分布的指数?
- 5. 使用MathNet在C#中给定指数的幂律分布
- 6. 非结构化p2p网络的幂律指数是多少?
- 7. Python:如何生成幂律图
- 8. 在双对数坐标轴图中绘制幂函数线R
- 9. 幂律分布拟合
- 10. 如何绘制R中的幂函数1- \ phi(4.65-x/2)?
- 11. 不能使用python绘制函数
- 12. Python:绘制函数的对数
- 13. Python中的元素幂函数H2OFrame
- 14. 用于拟合网络度数分布的幂律的输入
- 15. MATLAB - 如何使用负指数数组绘制一个函数?
- 16. 如何在python中绘制函数值
- 17. 在python中绘制分段函数
- 18. 绘制R函数限制函数
- 19. 初学Matlab函数只绘制零点
- 20. 产生幂律分布的随机数发生器?
- 21. 如何在Clojure中创建一个负指数的幂函数?
- 22. 时间幂生成函数
- 23. 除以零幂函数
- 24. 混淆F#List.Fold(幂函数)
- 25. 多个幂律图与包PoweRlaw
- 26. Scipy.optimize.curve_fit不适合余弦幂律
- 27. RSA的模数求幂的负指数
- 28. 在Python中解决幂律分布问题
- 29. Python函数指针
- 30. OpenCv不接受函数中的多重绘制指令(使用Python)
什么是g?你只有图表还是你有价值?在哪个范围(任意大的正数,在0和1之间...)?你知道阿尔法? python以什么方式参与? – LeMiz 2010-02-12 08:30:43
f和g是每个包含100个值的列表。我不知道阿尔法。我想用图来计算它。 – Bruce 2010-02-12 08:43:58
如果您没有任何有关alpha或lambda的信息,那么没有理由给它们一个负号。 :o) – 2010-02-12 09:19:11