我试图拟合一个转移概率矩阵(生态学中的莱斯利模型)的参数。我对莱斯利模型的作用是:
def leslie(x, f3, p0, p1, p2):
Alist = [[0, 0, 0, f3], [p0, 0, 0, 0], [0, p1, 0, 0], [0, 0, p2, 0]]
A = np.array(Alist)
X = np.array(x).T
return list(np.dot(A, X))
我试图用scipy
的curve_fit
来处理x和y值的数据,其中每个值是4个度量值的列表(x是第1年,y是第2年的数据)。前几行数据如下所示:
ABUNDY1 ABUNDY2
0 [516.819166236, 10.0, 15.0, 40.0] [3756.96048518, 2.0, 1.0, 1.0]
1 [16454.2226677, 25.0, 60.0, 50.0] [23511.7855689, 50.0, 35.0, 12.0]
2 [14415.487266, 20.0, 8.0, 2.0] [248.215580071, 30.0, 2.0, 3.0]
3 [2477.19325817, 5.0, 5.0, 2.0] [321.324366027, 10.0, 7.0, 4.0]
4 [43.2506601374, 15.0, 20.0, 10.0] [1651.83654693, 15.0, 10.0, 4.0]
我打电话给:
res = scipy.optimize.curve_fit(leslie, data.ABUNDY1, data.ABUNDY2)
我得到ValueError: objects not aligned
。我编写的leslie
函数在曲线拟合之外尝试时似乎可以正常工作。我假设我的问题是数组维度没有正确匹配,但是我很难看到错误。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐