2017-02-14 3 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])) 

이 합리적인 매개 변수

dataframe에 저장되어있는 매개 변수를 추정하는 데 사용되는 데이터를 호출 할 때 예상대로 작동하는 것 같다 :

기능

는 다음과 같이 정의된다. 여기에 내가 전화를 사용했던 코드의 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의 크기입니다. 데이터 프레임 시리즈를 Transposing하면 코드가 수정되었습니다.

x = d4[["Sales_2015", "Calls_2016"]].transpose().as_matrix() 
y = d4["Sales_2016"].transpose().as_matrix()