任何函数的通用数据的参数估计

时间:2016-12-15 17:50:20

标签: python python-2.7 pandas numpy scipy

我有一个功能。例如:

def g(w,d,e):
    s = w-1.
    s1 = s**d+2.    
    s2 = 42. + s1*e**(1/2)
    return s2

data = np.array([1,2,3,4,5])s2。但我不知道de

我如何估计他们?错误?

它被称为方法" fit"在scipy.stats中进行分发。引擎盖下的这种方法是什么? MLE?采样?函数g是我的分发函数......

1 个答案:

答案 0 :(得分:1)

根据您的问题,您的功能可以写成

def g(w,d,e):
    return 42. + ((w-1)**d+2)*e**(1/2)

所以你似乎需要的是一个非线性方程求解器,而不是一个最小化预测值和观测值之间的平方误差的拟合程序。 Scipy提供root功能,可以帮助您做您想做的事情。例如,您可以迭代data并计算每个data项的相应参数值

import numpy as np
import scipy.optimize.root as root
sol = []
data = np.array([1,2,3,4,5])
for d in data:
    f = lambda x: g(x[0],x[1],x[2])-d
    sol.append(root(f,x0).x)

函数参数拟合需要您提供一组独立变量值(x)和观察到的相关值(y)。在拟合期间,您通常会尝试找到最小化预测和观察之间差异的参数。