해결된 질문
작성
·
456
0
# 2.
# 로지스틱 회귀모형
from statsmodels.formula.api import logit
# model = logit('Survived ~ C(Gender) + C(SibSp) + C(Parch) + C(Fare)', data=df).fit() --> error
# print(df.head())
model = logit('Survived ~ C(Gender) + SibSp + Parch + Fare', data=df).fit()
print(model.summary())
# print(model.params['Parch'])
# 답 : -0.201
Warning: Maximum number of iterations has been exceeded.
Current function value: inf
Iterations: 35
Makefile:6: recipe for target 'py3_run' failed
make: *** [py3_run] Error 1
/usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py:1819: RuntimeWarning: overflow encountered in exp
return 1/(1+np.exp(-X))
/usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py:1872: RuntimeWarning: divide by zero encountered in log
return np.sum(np.log(self.cdf(q*np.dot(X,params))))
Traceback (most recent call last):
File "/goorm/Main.out", line 26, in <module>
model = logit('Survived ~ C(Gender) + C(SibSp) + C(Parch) + C(Fare)', data=df).fit()
File "/usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py", line 1983, in fit
bnryfit = super().fit(start_params=start_params,
File "/usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py", line 230, in fit
mlefit = super().fit(start_params=start_params,
File "/usr/local/lib/python3.9/dist-packages/statsmodels/base/model.py", line 579, in fit
Hinv = np.linalg.inv(-retvals['Hessian']) / nobs
File "<__array_function__ internals>", line 5, in inv
File "/usr/local/lib/python3.9/dist-packages/numpy/linalg/linalg.py", line 545, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
File "/usr/local/lib/python3.9/dist-packages/numpy/linalg/linalg.py", line 88, in _raise_linalgerror_singular
raise LinAlgError("Singular matrix")
numpy.linalg.LinAlgError: Singular matrix
답변 2
1
1
혹시 분산 분석과 헷갈린 것이 아닐까요?
제가 설마 로지스틱회귀에서 "만약 범주형 데이터인지 헷갈린다면 모두 C()로 묶어서 하라고" 이런 말을 했나요? 이건 심각한 문제가 있어요!
회귀 분석과 로지스틱 회귀에는 범주형과 수치형이 있어요!! 절대로 다 묶으면 안됩니다.
C()로 묶는 것은 문제에서 명시되어 있거나 누구나 이해할 수 있는 상식선에서 범주형이 아닌 애매한 것이면 묶으면 안됩니다.
앗 C로 묶는것은 분산분석에서 말씀해주신게 맞아요 그런데 앞에서부터 복습하면서 헷갈려 여쭤보게됐습니다!
그런데 아직 헷갈리는 부분은,
로지스틱 회귀에선 그럼 독립변수가 type이 object인 경우에만 C로 묶으면 될까요?
회귀분석에서는 범주형도 C로 묶지 않으시고 하셨는데 그럼 C로 묶지 않고 하면 되는것 맞을까요?
일원분산에서는 범주형도 C로 안묶으셨는데, 일원,이원분산분석 모두 헷갈리지 않게 독립변수들은 C로 묶으면 될까요?
앗 네네 그건 알고있었는데 앞에서부터 복습하면서 헷갈려서 여쭤봤어요 ㅎㅎ 감사합니다!! 🙂