2017-02-14 19 views
0

私はscipyのcurves_fit関数を使って、修正された負の指数関数のパラメータを推定しようとしています。私がcurve_fitと呼ぶときにエラーが出ているのですが、なぜそれが分かりませんか?問題点scipyのcurve_fitを使って負の指数パラメータを推定する

関数は次のように定義される。

def negative_exponential(x, carryover, asymptote, speed): 
    return x[0] * carryover + asymptote * (1 - np.exp(-speed * x[1])) 

妥当なパラメータで呼び出された場合、このパラメータを推定するために使用

データをデータフレームに格納されている期待どおりに動作するように思われます。ここで私が呼び出すために使用したコードですcurve_fit

x = df[["Sales_2015", "Calls_2016"]] 
y = df["Sales_2016"] 
popt, pcov = curve_fit(negative_exponential, x.values, y.values) 
print (popt) 

curve_fit機能は、私もx.valuesとy.valuesを渡すことでcurve_fitを呼び出す試してみました。このエラーに

--------------------------------------------------------------------------- 
KeyError         Traceback (most recent call last) 
C:\Users\steve\Anaconda3\lib\site-packages\pandas\indexes\base.py in get_loc(self, key, method, tolerance) 
    2133    try: 
-> 2134     return self._engine.get_loc(key) 
    2135    except KeyError: 

を与えます。これもまたエラーを出した。

また、このデータを使用してOLSモデルを見積もる際に問題はありません。

私は curve_fit

に任意の提案を渡す前にxyに何かをする必要があり意味

model = sm.OLS(y, x).fit() 
model.summary() 

+0

いくつかのデータを提供できますか? 「それは合理的なパラメータでうまくいくようです」とはどういう意味ですか? – Cleb

+0

はい - ここでいくつかの[テストデータ](http://czmx.co/qqO7/IHTefLEg)。シリーズ名は説明のものと一致します。 –

+0

妥当なパラメータによって、私は直接呼び出されたときに期待される結果が得られることを意味する 'negative_exponential([10,5]、0.6,100,0.2)' '69.21'を返します –

答えて

0

問題は、xとyの次元でした。データフレームシリーズの移調は、コードを固定しました:

x = d4[["Sales_2015", "Calls_2016"]].transpose().as_matrix() 
y = d4["Sales_2016"].transpose().as_matrix() 
関連する問題