1
나는 변화의 서로 다른 시간 동안 판매의 차이에서 찾고, statsmodels에서 일부 패널 데이터에 대한 회귀 구조를 사용하여 GEE를 실행하려고 해요 :자기 회귀 매개 변수 파이썬 Statsmodels의 GEE에 대한
ga = sm.families.Gaussian()
ar = sm.cov_struct.Autoregressive()
times = (BakeSale['Hour'].values)
ar.dep_params = 0.06
model2 = sm.GEE.from_formula("CookieSales ~ C(Hour) + Arrivals + TotalSalesPeople", groups=BakeSale["SalesPerson"],
data=BakeSale, family=ga, time=times, cov_struct=ar)
result2 = model2.fit(start_params=result1.params)
print(result2.summary())
이 제기 a ValueError : 브라케팅 간격이 아닙니다.
현재 시프트 정수 (즉, 1-8)로 코딩 된 '근무 시간'이 있지만 타임 스탬프도 있습니다.
이 문제를 해결하는 방법에 대한 의견이 있으십니까?
전체 출력 :
//anaconda/lib/python3.5/site-packages/statsmodels/genmod/cov_struct.py:724: RuntimeWarning: divide by zero encountered in true_divide
wts = 1./var
//anaconda/lib/python3.5/site-packages/statsmodels/genmod/cov_struct.py:725: RuntimeWarning: invalid value encountered in true_divide
wts /= wts.sum()
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-81-d81d0b97546e> in <module>()
7 #CookieSales ~ C(Hour) + Arrivals + TotalSalesPeople"
8 # Maybe try without C, or find if any with nan value or such
----> 8 result2 = model2.fit(start_params=result1.params)
9 print(result2.summary())
10 print(ar.summary())
//anaconda/lib/python3.5/site-packages/statsmodels/genmod/generalized_estimating_equations.py in fit(self, maxiter, ctol, start_params, params_niter, first_dep_update, cov_type, ddof_scale, scaling_factor)
1111 if (self.update_dep and (itr % params_niter) == 0
1112 and (itr >= first_dep_update)):
-> 1113 self._update_assoc(mean_params)
1114 num_assoc_updates += 1
1115
//anaconda/lib/python3.5/site-packages/statsmodels/genmod/generalized_estimating_equations.py in _update_assoc(self, params)
1259 """
1260
-> 1261 self.cov_struct.update(params)
1262
1263 def _derivative_exog(self, params, exog=None, transform='dydx',
//anaconda/lib/python3.5/site-packages/statsmodels/genmod/cov_struct.py in update(self, params)
766
767 from scipy.optimize import brent
--> 768 self.dep_params = brent(fitfunc, brack=[b_lft, b_ctr, b_rgt])
769
770
//anaconda/lib/python3.5/site-packages/scipy/optimize/optimize.py in brent(func, args, brack, tol, full_output, maxiter)
2001 options = {'xtol': tol,
2002 'maxiter': maxiter}
-> 2003 res = _minimize_scalar_brent(func, brack, args, **options)
2004 if full_output:
2005 return res['x'], res['fun'], res['nit'], res['nfev']
//anaconda/lib/python3.5/site-packages/scipy/optimize/optimize.py in _minimize_scalar_brent(func, brack, args, xtol, maxiter, **unknown_options)
2033 full_output=True, maxiter=maxiter)
2034 brent.set_bracket(brack)
-> 2035 brent.optimize()
2036 x, fval, nit, nfev = brent.get_result(full_output=True)
2037 return OptimizeResult(fun=fval, x=x, nit=nit, nfev=nfev,
//anaconda/lib/python3.5/site-packages/scipy/optimize/optimize.py in optimize(self)
1839 # set up for optimization
1840 func = self.func
-> 1841 xa, xb, xc, fa, fb, fc, funcalls = self.get_bracket_info()
1842 _mintol = self._mintol
1843 _cg = self._cg
//anaconda/lib/python3.5/site-packages/scipy/optimize/optimize.py in get_bracket_info(self)
1827 fc = func(*((xc,) + args))
1828 if not ((fb < fa) and (fb < fc)):
-> 1829 raise ValueError("Not a bracketing interval.")
1830 funcalls = 3
1831 else:
ValueError: Not a bracketing interval.
이전 질문에서'groups = BakeSaleData [ "Salesperson"]'을 시도 했습니까? 우리는 그것이 실패한 곳을 볼 수 있도록 전체 추적을 보여줄 필요가 있습니다. 나는 autocorrelation 매개 변수가 극한의 경우에 강건하지 않다는 것을 알 것입니다. – user333700
상관 계수를 추정하는 함수를 읽었을 때 ValueError는 상관 관계가 음수 인 경우에만 발생해야하며 이는 구현에서 허용되지 않는 것으로 보입니다. 그러나 음의 상관 관계는 이러한 유형의 애플리케이션에 이상한 경우입니다. – user333700
지금 전체 출력이 있어야합니다. 감사! – codercat