2014-11-12 2 views
3

pd.cut을 사용하여 연속 변수에서 범주 형 변수를 만들려고했습니다. 나는 더미 변수를 포함하여 후속 통계 모델로 정의 된 회귀 분석에서 이것을 사용하고 싶다. 이 방법으로 생성 된 범주 형 변수를 만들면 오류가 발생합니다.pandas pd.cut을 사용하여 statsmodels을 사용하여 범주 형 변수 생성

TypeError: data type not understood.  

테스트 사례가 아래에 포함되어 있습니다.

import numpy as np 
import pandas as pd 
import statsmodels as sm 
import statsmodels.formula.api as smf 
df = pd.DataFrame(np.random.randn(6,4)) 
df.columns = ['A', 'B', 'C', 'D'] 
df['ttt']=pd.cut(df['D'], bins=2) 
test = smf.ols('A ~ B + ttt', data=df).fit() 

분명히 잘못한 것 같습니다. 어떤 도움을 주시면 감사하겠습니다.

+0

팬더 버전은 무엇입니까? 만약 당신이 0.15이면, 최근에야 소개 된 새롭고 향상된 카테고리의 dtypes를 가지고 있고 팬더에 의존하는 statsmodels 같은 다른 라이브러리는 아마도 아직까지 따라 잡지 못했을 것입니다. – Marius

+0

나는 같은 문제가 있으며 팬더 0.15.1을 사용하고 있습니다. pandas의 새로운 카테고리 데이터 유형이 patsy/statsmodels에서 아직 지원되지 않는 것 같습니다. [here] (http://pandas.pydata.org/pandas-docs/stable/categorical.html#categorical-is-not-a-numpy-array) – tsawallis

+0

@Marius의 대답이 저에게 효과적입니다. – tsawallis

답변

3

신디 Categorical 팬더에 대한 지원을 포함하여 통계 모델의 위치를 ​​정확하게 알 수 없습니다. 잠시 동안, 범주 형을 다시 개체 유형으로 변환해야 할 수도 있습니다 (결과로 나타나는 올 맞는 결과가 합리적인지 확인하십시오. 내가하는 일에 대한 자세한 내용을 알지 못합니다) :

df['ttt_fixed'] = df.ttt.astype(np.object) 
test = smf.ols('A ~ B + ttt_fixed', data=df).fit() 
test.summary() 
관련 문제