hossam.my_ols¶
hossam.my_ols ¶
fit_model ¶
fit_model(data, y, summary=False)
종속변수를 제외한 모든 컬럼을 독립변수로 삼아 OLS 회귀모델을 적합한다(절편 자동 추가).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
독립변수와 종속변수를 모두 포함하는 데이터프레임. |
required | |
y
|
종속변수로 사용할 컬럼명. |
required | |
summary
|
bool
|
적합 모델의 요약 통계량 출력 여부 (기본값: False). |
False
|
Returns:
| Type | Description |
|---|---|
|
적합이 완료된 회귀분석 결과 객체. |
predict ¶
predict(fit, new_data)
적합된 회귀모델을 이용해 새로운 데이터에 대한 예측값을 계산한다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fit
|
|
required | |
new_data
|
예측에 사용할 새로운 데이터프레임. 독립변수 컬럼만 포함해야 한다. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
예측값을 담은 데이터프레임 (컬럼명 'pred'). |
test_linear ¶
test_linear(
fit,
alpha=0.05,
plot=True,
palette=None,
title=None,
xlabel=None,
ylabel=None,
width=1280,
height=640,
save_path=None,
)
Ramsey RESET(power=2)으로 잔차의 선형성(모형 설정 오류)을 검정한다.
고차항이 유의하면(p < alpha) 직선으로 잡지 못한 곡선 관계가 남아 있다는 뜻이다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fit
|
|
required | |
alpha
|
float
|
유의수준 (기본값: 0.05). |
0.05
|
plot
|
bool
|
적합값-잔차 산점도(lowess 추세선 포함)를 시각화할지 여부 (기본값: True). |
True
|
palette
|
str
|
산점도 점 색상에 사용할 팔레트 이름. None이면 기본색 (기본값: None). |
None
|
title
|
str
|
그래프 제목 (기본값: None). |
None
|
xlabel
|
str
|
x축 라벨 (기본값: None → "적합값(예측값)"). |
None
|
ylabel
|
str
|
y축 라벨 (기본값: None → "잔차(residual)"). |
None
|
width
|
int
|
그래프 너비 (기본값: 1280). |
1280
|
height
|
int
|
그래프 높이 (기본값: 640). |
640
|
save_path
|
str
|
그래프 저장 경로 (기본값: None). |
None
|
test_normal ¶
test_normal(
fit,
alpha=0.05,
plot=True,
palette=None,
width=1280,
height=640,
)
잔차의 정규성을 두 가지 방법으로 검정하고 진단 결과를 순서대로 출력한다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fit
|
|
required | |
alpha
|
float
|
유의수준 (기본값: 0.05). |
0.05
|
plot
|
bool
|
Q-Q 플롯과 √MSE 잔차도를 함께 그릴지 여부 (기본값: True). |
True
|
palette
|
str
|
그래프 색상에 사용할 팔레트 이름. None이면 기본색 (기본값: None). |
None
|
width
|
int
|
그래프 너비 (기본값: 1280). |
1280
|
height
|
int
|
그래프 높이 (기본값: 640). |
640
|
test_equalvar ¶
test_equalvar(fit, alpha=0.05)
잔차의 등분산성을 검정하고 결과표를 출력한다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fit
|
|
required | |
alpha
|
float
|
유의수준 (기본값: 0.05). |
0.05
|
test_independent ¶
test_independent(fit)
Durbin-Watson으로 잔차의 독립성을 검정한다.
본래 시계열 전용 검정이므로, 시간 순서가 없는 데이터에서는 위배되어도 무시해도 되는 경우가 많다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fit
|
|
required |
report_fitness ¶
report_fitness(
fit,
log_y=False,
log_x=None,
log1p_y=False,
log1p_x=None,
reflect_y=False,
reflect_x=None,
)
적합된 회귀모델의 모형 적합도를 학술 보고 형식의 문장으로 생성해 반환한다.
변환한 변수는 log(...)/log1p(...)/log1p(max-...)로 표기해 실제 적합한 모형을 그대로 드러낸다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fit
|
|
required | |
log_y
|
bool
|
종속변수에 로그변환(log)을 적용했는지 여부 (기본값: False). |
False
|
log_x
|
list | None
|
log 변환을 적용한 독립변수 이름 리스트 (기본값: None). |
None
|
log1p_y
|
bool
|
종속변수에 log1p 변환을 적용했는지 여부 (기본값: False). |
False
|
log1p_x
|
list
|
log1p 변환을 적용한 독립변수 이름 리스트 (기본값: None). |
None
|
reflect_y
|
bool
|
종속변수에 반사 후 log1p 변환을 적용했는지 여부 (기본값: False). |
False
|
reflect_x
|
list
|
반사 후 log1p 변환을 적용한 독립변수 이름 리스트 (기본값: None). |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
모형 적합도 보고 문장. |
report_variables ¶
report_variables(fit, data, hc3=False)
적합된 회귀모델의 독립변수별 회귀계수 보고표를 데이터프레임으로 생성해 반환한다.
β·공차·VIF 계산에 원본 데이터의 표준편차가 필요하므로 data를 함께 받는다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fit
|
|
required | |
data
|
회귀분석에 사용한 원본 데이터프레임. 독립변수와 종속변수를 모두 포함해야 한다. |
required | |
hc3
|
bool
|
True이면 HC3 로버스트 표준오차를 사용한다 (기본값: False). |
False
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
종속변수·독립변수·B·표준오차·β·t·유의확률·공차·VIF 컬럼의 보고표. hc3가 True이면 일반 OLS와 로버스트(HC3)의 표준오차·t·유의확률이 나란히 배치된다. |
report_variables_text ¶
report_variables_text(
fit,
log_y=False,
log_x=None,
log1p_y=False,
log1p_x=None,
reflect_y=False,
reflect_x=None,
hc3=False,
)
독립변수별 회귀계수 해석 문장을 markdown 불릿 리스트로 생성해 반환한다.
반사 변환(log(1+max-x))은 % 해석의 기준이 반사값 (1+max-변수)이고, 반사한 변수가 홀수 개면 원 변수 기준 방향이 반대가 된다. 효과 크기 계산식은 log1p와 같다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fit
|
|
required | |
log_y
|
bool
|
종속변수에 log 변환을 적용했는지 여부 (기본값: False). |
False
|
log_x
|
list
|
log 변환을 적용한 독립변수 이름 리스트 (기본값: None). |
None
|
log1p_y
|
bool
|
종속변수에 log1p 변환을 적용했는지 여부 (기본값: False). |
False
|
log1p_x
|
list
|
log1p 변환을 적용한 독립변수 이름 리스트 (기본값: None). |
None
|
reflect_y
|
bool
|
종속변수에 반사 후 log1p 변환을 적용했는지 여부 (기본값: False). |
False
|
reflect_x
|
list
|
반사 후 log1p 변환을 적용한 독립변수 이름 리스트 (기본값: None). |
None
|
hc3
|
bool
|
True이면 HC3 로버스트 표준오차를 사용한다 (기본값: False). |
False
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
독립변수별 해석 문장 불릿 리스트. |
auto_ols ¶
auto_ols(
data,
y,
report=True,
log_y=False,
log_x=None,
log1p_y=False,
log1p_x=None,
reflect_y=False,
reflect_x=None,
test=True,
plot=False,
width=1280,
height=640,
backward=False,
alpha=0.05,
)
회귀모델 적합부터 보고서 출력·가정 검정까지 한 번에 수행한다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
독립변수와 종속변수를 모두 포함하는 데이터프레임. |
required | |
y
|
종속변수로 사용할 컬럼명. |
required | |
report
|
bool
|
모형 적합도 보고서(회귀계수표·해설) 출력 여부 (기본값: True). |
True
|
log_y
|
bool
|
종속변수에 log 변환을 적용했는지 여부 (기본값: False). |
False
|
log_x
|
list
|
log 변환을 적용한 독립변수 이름 리스트 (기본값: None). |
None
|
log1p_y
|
bool
|
종속변수에 log1p 변환을 적용했는지 여부 (기본값: False). |
False
|
log1p_x
|
list
|
log1p 변환을 적용한 독립변수 이름 리스트 (기본값: None). |
None
|
reflect_y
|
bool
|
종속변수에 반사 후 log1p 변환을 적용했는지 여부 (기본값: False). |
False
|
reflect_x
|
list
|
반사 후 log1p 변환을 적용한 독립변수 이름 리스트 (기본값: None). |
None
|
test
|
bool
|
회귀모형 가정 검정 수행 여부 (기본값: True). |
True
|
plot
|
bool
|
가정 검정 시 그래프를 함께 그릴지 여부 (기본값: False). |
False
|
width
|
int
|
그래프 너비 (기본값: 1280). |
1280
|
height
|
int
|
그래프 높이 (기본값: 640). |
640
|
backward
|
bool
|
후진소거법으로 유의하지 않은 독립변수를 제거할지 여부 (기본값: False). |
False
|
alpha
|
float
|
후진소거법의 변수 제거 기준 유의수준 (기본값: 0.05). |
0.05
|
Returns:
| Type | Description |
|---|---|
|
적합이 완료된 회귀분석 결과 객체. 등분산 위배 여부가 |
plot_beta ¶
plot_beta(
fit,
data,
palette=None,
title=None,
xlabel=None,
ylabel=None,
width=1280,
height=None,
save_path=None,
)
표준화 회귀계수(β)를 가로 막대그래프로 시각화해 독립변수의 영향력 순위를 보여준다.
|β| 내림차순으로 배치하며, β의 순위는 영향력의 순위일 뿐 절대적 크기는 아니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fit
|
|
required | |
data
|
독립변수와 종속변수를 모두 포함하는 데이터프레임. |
required | |
palette
|
dict
|
부호별 막대 색상. None이면 {'+': 파랑, '-': 빨강} (기본값: None). |
None
|
title
|
str
|
그래프 제목 (기본값: None). |
None
|
xlabel
|
str
|
x축 레이블 (기본값: None → "표준화 계수(β)"). |
None
|
ylabel
|
str
|
y축 레이블 (기본값: None → "독립변수"). |
None
|
width
|
int
|
캔버스 가로 픽셀 (기본값: 1280). |
1280
|
height
|
int
|
캔버스 세로 픽셀. None이면 독립변수 수 × 80으로 자동 계산 (기본값: None). |
None
|
save_path
|
str
|
이미지 저장 경로 (기본값: None). |
None
|
fit_pipeline ¶
fit_pipeline(
data,
y,
nominal_cols=None,
*,
labeling=True,
encode=True,
log=False,
outlier=False,
vif=False,
vif_threshold=10.0,
scale=False,
scale_method="standard",
backward=True,
alpha=0.05,
name=None,
save_path=None,
verbose=True
)
플래그로 지정한 전처리를 수행한 뒤 회귀모델을 적합한다. 결측치는 없다고 전제한다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
DataFrame
|
독립변수와 종속변수를 모두 포함하는 데이터프레임. |
required |
y
|
str
|
종속변수로 사용할 컬럼명. |
required |
nominal_cols
|
list
|
명목형 컬럼명 리스트. None이면 타입 자동 선택 (기본값: None). |
None
|
labeling
|
bool
|
명목형 라벨링(문자열 -> 정수) 수행 여부 (기본값: True). |
True
|
encode
|
bool
|
더미변수 인코딩 수행 여부 (기본값: True). |
True
|
log
|
bool
|
로그 변환 수행 여부. 대상은 왜도·첨도로 자동 선정한다 (기본값: False). |
False
|
outlier
|
bool
|
이상치를 IQR 경계값으로 대체할지 여부 (기본값: False). |
False
|
vif
|
bool
|
다중공선성 제거 수행 여부 (기본값: False). |
False
|
vif_threshold
|
float
|
VIF 임계값 (기본값: 10.0). |
10.0
|
scale
|
bool
|
정규화 수행 여부 (기본값: False). |
False
|
scale_method
|
str
|
사용할 스케일러 이름 (기본값: 'standard'). |
'standard'
|
backward
|
bool
|
후진소거법 수행 여부 (기본값: True). |
True
|
alpha
|
float
|
후진소거법의 변수 제거 기준 유의수준 (기본값: 0.05). |
0.05
|
name
|
str
|
모델을 구분할 이름. 결과 객체의 |
None
|
save_path
|
str
|
전처리 완료 데이터의 저장 경로 (.xlsx/.xls/.csv) (기본값: None). |
None
|
verbose
|
bool
|
단계별 전처리 내역 출력 여부 (기본값: True). |
True
|
Returns:
| Type | Description |
|---|---|
|
적합이 완료된 회귀분석 결과 객체. 보고에 필요한 정보가 아래 속성으로 함께 붙는다.
- |
compare_models ¶
compare_models(
fits,
metric="RMSE",
sub_metric="변수수",
tolerance=0.05,
digits=4,
report=True,
)
여러 회귀모델의 성능지표를 한 표로 정리해 성능이 좋은 순으로 정렬하고, 최고 모델을 반환한다. 주 지표 1위와의 격차가 tolerance 이내면 '근소 격차 그룹'으로 묶어 보조 지표로 순서를 정한다. 종속변수를 log1p·반사 변환한 모델은 예측값을 원본 척도로 되돌려 RMSE·MAE·R²를 계산한다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fits
|
dict
|
{모델이름: 적합된 회귀분석 결과 객체} 형태의 딕셔너리. |
required |
metric
|
str
|
정렬 기준이 되는 주 성능평가지표 (기본값: 'RMSE'). |
'RMSE'
|
sub_metric
|
str
|
근소 격차 그룹 안에서 적용할 보조 지표. None이면 미사용 (기본값: '변수수'). |
'변수수'
|
tolerance
|
float
|
근소 격차로 판단할 주 지표의 상대격차. 0이면 순수 크기 비교 (기본값: 0.05). |
0.05
|
digits
|
int
|
표에 표시할 소수점 자릿수 (기본값: 4). |
4
|
report
|
bool
|
성능 비교표를 화면에 출력할지 여부 (기본값: True). |
True
|
Returns:
| Type | Description |
|---|---|
|
성능이 가장 좋은 모델의 회귀분석 결과 객체(표의 첫 행). 아래 속성이 함께 붙는다.
- |
Raises:
| Type | Description |
|---|---|
TypeError
|
|
ValueError
|
|
report_model ¶
report_model(fit, title=True, plot=True)
적합된 회귀모델의 성능 보고와 가정 검정을 한 번에 출력한다.
fit_pipeline·auto_ols 가 결과 객체에 붙여 둔 정보(log1p_y_·log1p_x_·
use_hc3_·data_)를 사용하므로, 이 값들을 따로 준비해 넘길 필요가 없다.
출력 구성 (마크다운 제목 포함): ### ▶︎ 성능 보고 #### 1) 모형 적합도 2) 회귀계수 보고표 3) 영향력 순위 시각화 4) 회귀계수 해석 문장 --- ### ▶︎ 회귀모형 가정 검정 #### 1) 선형성 2) 정규성 3) 등분산성 4) 독립성
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fit
|
|
required | |
title
|
bool
|
모델 이름( |
True
|
Raises:
| Type | Description |
|---|---|
AttributeError
|
보고에 필요한 속성이 결과 객체에 없는 경우. |