小编ast*_*ent的帖子

Python幂律适合使用ODR的数据上限和非对称错误

我正在尝试使用python将一些数据拟合到幂律中.问题是我的一些点是上限,我不知道如何包含在拟合例程中.

在数据中,我把上限作为y中的误差等于1,其余的则小得多.您可以将此错误设置为0并更改uplims列表生成器,但随后拟合非常糟糕.

代码如下:

import numpy as np
import matplotlib.pyplot as plt
from scipy.odr import *

# Initiate some data
x = [1.73e-04, 5.21e-04, 1.57e-03, 4.71e-03, 1.41e-02, 4.25e-02, 1.28e-01, 3.84e-01, 1.15e+00]
x_err = [1e-04, 1e-04, 1e-03, 1e-03, 1e-02, 1e-02, 1e-01, 1e-01, 1e-01]
y = [1.26e-05, 8.48e-07, 2.09e-08, 4.11e-09, 8.22e-10, 2.61e-10, 4.46e-11, 1.02e-11, 3.98e-12]
y_err = [1, 1, 2.06e-08, 2.5e-09, 5.21e-10, 1.38e-10, 3.21e-11, 1, 1]

# Define upper limits
uplims = np.ones(len(y_err),dtype='bool')
for i in range(len(y_err)):
    if y_err[i]<1:
        uplims[i]=0
    else:
        uplims[i]=1

# …
Run Code Online (Sandbox Code Playgroud)

python curve-fitting power-law model-fitting data-fitting

6
推荐指数
1
解决办法
1179
查看次数