statsmodels
을 파이썬에서 사용하여 팬더 DataFrame
의 일부 값을 대체하려고합니다.statsmodels : 수식을 사용하여 샘플 밖 예측에 대해 result.predict()에 허용되는 형식은 무엇입니까?
아래의 세 번째 및 네 번째 시도 (df2 및 df3)는 오류를 나타냅니다. *** AttributeError: 'DataFrame' object has no attribute 'design_info'
데이터 프레임에 이러한 특성이 없으므로 이상한 오류가 발생합니다.
어쨌든 나는 df2에서 A의 누락 된 값에 대한 예측을 얻기 위해 predict()로 전달해야하는 것을 이해하지 못합니다. df3의 경우 마지막 요소에 np.nan이 포함 된 예측을 제공하면 좋을 수도 있습니다. 시험판을 사용
import pandas as pd
import numpy as np
import statsmodels.formula.api as sm
df0 = pd.DataFrame({"A": [10,20,30,324,2353,],
"B": [20, 30, 10, 100, 2332],
"C": [0, -30, 120, 11, 2]})
result0 = sm.ols(formula="A ~ B + C ", data=df0).fit()
print result0.summary()
test0 = result0.predict(df0) #works
print test0
df1 = pd.DataFrame({"A": [10,20,30,324,2353,],
"B": [20, 30, 10, 100, 2332],
"C": [0, -30, 120, 11, 2]})
result1 = sm.ols(formula="A ~ B+ I(C**2) ", data=df1).fit()
print result1.summary()
test1 = result1.predict(df1) #works
print test1
df2 = pd.DataFrame({"A": [10,20,30,324,2353,np.nan],
"B": [20, 30, 10, 100, 2332, 2332],
"C": [0, -30, 120, 11, 2, 2 ]})
result2 = sm.ols(formula="A ~ B + C", data=df2).fit()
print result2.summary()
test2 = result2.predict(df2) # Fails
newvals=df2[['B','C']].dropna()
test2 = result2.predict(newvals) # Fails
test2 = result2.predict(dict([[vv,df2[vv].values] for vv in newvals.columns])) # Fails
df3 = pd.DataFrame({"A": [10,20,30,324,2353,2353],
"B": [20, 30, 10, 100, 2332, np.nan],
"C": [0, -30, 120, 11, 2, 2 ]})
result3 = sm.ols(formula="A ~ B + C", data=df3).fit()
print result3.summary()
test3 = result3.predict(df3) # Fails
업데이트, statsmodels 0.8의 DF2 예를 새 릴리스 후보를 사용
statsmodels, 위의 작동합니다. 그러나 제 (DF3) 예 ValueError: Wrong number of items passed 5, placement implies 6
가 예측 가능한되는 행 올바르게 상기 np.nan 포함 작동 마지막 행, 즉 result3.predict(df3[:-1])
이 예측을 적가 result3.predict(df3)
실패.
전체 df3을 전달할 옵션이 있지만 마지막 행에 대한 예측으로 np.nan을 수신하는 것이 좋습니다.
omd. Statsmodels 0.6.1의 버그 일뿐입니다. https://github.com/statsmodels/statsmodels/issues/2171 이전에 폐쇄되었지만 이후로 다른 릴리스가 없었습니다. – CPBL
statsmodels 0.8.0rc1은 pypi – user333700
에서 사용 가능합니다. 'pip install --upgrade --user statsmodels'은 내가 0.6.1 버전으로 업데이트되었다는 것을 알려줍니다. 그래서 나는 pypi 사용법을 모릅니다. – CPBL