Python gamma.fit返回的值似乎无法在excel中正确分发

时间:2014-10-06 08:25:06

标签: python excel statistics

我有一系列实验数据值 X Y 用于生成散点图,这个散点图看起来非常类似于伽马分布,我有阅读论文说这个实验数据可以用伽马分布表示/建模。

所以我编写了以下一些python代码来查找gamma分布常量:

import csv
import random
import scipy as sp
import scipy.stats as ss

from collections import defaultdict
columns = defaultdict(list)
with open('case_1_RTD.csv') as f:
    reader=csv.reader(f)
    reader.next()
    for row in reader:
        for(i,v) in enumerate(row):
            columns[i].append(v)
X=(columns[0])
Y=(columns[1])

data=[float(i) for i in Y]

alpha= []
beta=[]
loc=[]

alpha,loc,beta=ss.gamma.fit(data, floc=0)
print (alpha,loc,beta)

然后我使用此输出在Excel中生成伽马分布,并将此新Gamma分布数据与原始 X,Y 数据进行比较。数据值集完全不同。

在excel中我使用函数

=Gamma.Dist(X,alpha,beta,False)  #I have tried switching alpha and beta around but no luck

我不在python代码中使用 X 数据集的事实有点令人不安,但是从我在Scipy文档中读到的内容我看不到在哪里使用它。这与python中的loc变量有关吗? (从我所读到的不是)

X,Y 数据集包含3718个值,最小 Y 值为1.11E-297这可能导致问题吗?

提前感谢您的任何帮助或指导

1 个答案:

答案 0 :(得分:0)

您似乎希望将$ Y $建模为$ X $,$ Y = f(X)$的非线性函数,而不是试图估算$ Y $的分布。显然从理论上考虑,$ f $是一个非负函数,曲线下面积为1,指数衰减尾(Wikipedia article on residence time distribution),因此你想使用概率密度函数,特别是Gamma distribution PDF。

这不是分布拟合问题,而是非线性回归问题。我不知道如何在Python中执行此操作,但快速搜索这些关键字会产生promising link