
휘발되기 전에 두서없이 적어보는 개념, 이해한 바 정리
| 종류 | 설명 |
|---|---|
| 단순 선형 회귀 | 독립변수 1개, 종속변수 1개 |
| 다중 선형 회귀 | 독립변수 여러 개, 종속변수 1개 |
| 로지스틱 회귀 | 종속변수가 범주형일 때 사용 (0 또는 1 같은 분류 문제) |
| 릿지, 라쏘 회귀 | 다중공선성 해결을 위한 정규화 회귀 |
개념은 어려울지 몰라도
코드로는 쉽게 할 수 있는 느낌
boolean을 int로 바꿔서 1, 0으로 변경하고
독립변수, 종속변수 할당해서
모델 생성
해석은 마찬가지로
p-value 값이 0.05보다 작으면 유의미한 것으로 간주
의문점
내가 아는 방식 중에서는 카이스퀘어 독립성 검정이 연관성이 있는지 확인하는 검정인데
어떤 경웨 로지스틱 회귀를, 어떤 때에 카이제곱 검정을 쓰는가?
위의 미드프로젝트 사례에서는 어떤 것을 쓰는 게 맞는가?
| 항목 | 로지스틱 회귀 | 카이제곱 검정 (χ²) |
|---|---|---|
| 목적 | 원인 변수(X)가 결과(Y)에 영향을 미치는지 분석 (인과 관계 추정) | 두 범주형 변수 간에 **연관성(상관성)**이 있는지 확인 (관련성 유무 판단) |
| 입력 변수 | 독립변수: 범주형 또는 수치형 / 종속변수: 이진형(True/False) | 두 변수 모두 범주형 (2×2 교차표 또는 더 큰 표) |
| 출력 | 회귀계수(coef), p값, 예측 확률 등 → 예측모델 생성 가능 | p값 하나 → 연관성 있음/없음만 판단 |
| 해석 | 계수가 양수/음수인지로 영향 방향 판단 (예: 가입하면 이탈률이 줄어든다) | 오직 연관이 있는지만 알려줌 (방향·영향력은 알 수 없음) |
| 예측 가능 여부 | O (새로운 데이터 예측 가능) | X (단지 관계만 평가함) |
| 사용 예 | "기기보호서비스가 이탈을 줄이는 데 영향을 주는가?" | "기기보호서비스와 이탈 여부는 관련이 있는가?" |
gpt피셜
예측모델 생성을 통한 예측이 가능한지, p값 하나로 연관성만 평가하는지
가 메인인 느낌이고 아무래도 머신러닝과 통계적 기법이라는 방식의 차이
카이제곱 검정으로 관련성 확인 후, 로지스틱 회귀로 영향성과 방향 파악하는 등 함께 쓰이기도 한다고 함
우리는 분석 정도의 과제이기 때문에 통계로 연관성만 봐도 될 것이라 추측
(출처: ㅇㅅㅈ 멘토님 특강)
정의 : 두 범주형 변수 사이에 연관성(독립성 여부)이 있는지 확인하는 검정
조건 : 범주형 X 범주형 데이터 (교차표 형태)
예시
→ 성별과 과목 선호가 관계가 있는가?
→ 흡연 여부와 질병 발병이 관련 있는가?
해석
범주형 데이터를 숫자 벡터로 변환하는 인코딩 기법
각 범주를 이진 변수인 1, 0으로 나타냄
고유값에 해당하는 컬럼에만 1, 나머지는 0
pd.get_dummies()
주의점 : 다중공선성 문제
다중공선성 : 통계학의 회귀분석에서 독립변수들 간에 강한 상관관가 나타나는 문제
성별이라는 변수에 "남자", "여자"가 있다면
| 성별_남자 | 성별_여자 |
|---|---|
| 1 | 0 |
두 열은 완전히 종속적
따라서 열 하나를 제거해서
| 성별_여자 |
|---|
| 1 |
만 남기면 불필요한 중복 제거
drop_first=True로 열 한 개 제거.corr()from scipy.stats import chi2_contingency
# 상관계수 절댓값 기준 필터링
threshold = 0.3
corr_filtered = corr_matrix[(corr_matrix.abs() > threshold) & (corr_matrix.abs() < 1)]
# 중복 제거
import numpy as np
checked_pairs = set()
for col in corr_filtered.columns:
for row in corr_filtered.index:
if not np.isnan(corr_filtered.loc[row, col]):
pair = tuple(sorted([row, col]))
if row != col and pair not in checked_pairs:
checked_pairs.add(pair)
# 카이제곱 검정
contingency = pd.crosstab(df_encoded[row], df_encoded[col])
chi2, p, dof, expected = chi2_contingency(contingency)
print(f"[{row} vs {col}]")
print(f"카이제곱 통계량: {chi2:.2f}, p-value: {p:.4f}")
if p < 0.05:
print("→ 유의미한 연관성 있음 (독립 아님)\n")
else:
print("→ 통계적으로 독립 (연관성 없음)\n")
한 번에도 할 수 있는데 하나씩 할 생각했네 역시 머리가 나쁘면 고생...
느낀 점
우리 조가 중하는 가고 있다고 생각했는데, 다른 조들은 엄청나게 앞서 가고 있었음...어리석음에 반성
문서화, 구조화하는 능력이 확실히 부족한 듯. 확실히 이 부분은 개선 필요 O
느낀 점 2
아이고 내 시간