콘텐츠로 이동

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

fit_model 함수로 적합된 회귀분석 결과 객체.

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

fit_model 함수로 적합된 회귀분석 결과 객체.

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

fit_model 함수로 적합된 회귀분석 결과 객체.

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

fit_model 함수로 적합된 회귀분석 결과 객체.

required
alpha float

유의수준 (기본값: 0.05).

0.05

test_independent

test_independent(fit)

Durbin-Watson으로 잔차의 독립성을 검정한다.

본래 시계열 전용 검정이므로, 시간 순서가 없는 데이터에서는 위배되어도 무시해도 되는 경우가 많다.

Parameters:

Name Type Description Default
fit

fit_model 함수로 적합된 회귀분석 결과 객체.

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

fit_model 함수로 적합된 회귀분석 결과 객체.

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

fit_model 함수로 적합된 회귀분석 결과 객체.

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

fit_model 함수로 적합된 회귀분석 결과 객체.

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

적합이 완료된 회귀분석 결과 객체. 등분산 위배 여부가 use_hc3_(bool) 속성으로 붙는다.

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

fit_model 함수로 적합된 회귀분석 결과 객체.

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

모델을 구분할 이름. 결과 객체의 name_ 속성이 된다 (기본값: None).

None
save_path str

전처리 완료 데이터의 저장 경로 (.xlsx/.xls/.csv) (기본값: None).

None
verbose bool

단계별 전처리 내역 출력 여부 (기본값: True).

True

Returns:

Type Description

적합이 완료된 회귀분석 결과 객체. 보고에 필요한 정보가 아래 속성으로 함께 붙는다. - log_y_ (bool) / log_x_ (list): 순수 log 변환 정보 - log1p_y_ (bool) / log1p_x_ (list): log1p 변환 정보 - reflect_y_ (bool) / reflect_x_ (list): 반사 후 로그 변환 정보 - reflect_y_max_ (float): 종속변수를 반사할 때 쓴 최댓값 (역변환용) - data_ (DataFrame): 전처리가 끝난 데이터 (β·VIF 계산용) - use_hc3_ (bool): 등분산 위배 여부 (auto_ols가 붙인다)

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

성능이 가장 좋은 모델의 회귀분석 결과 객체(표의 첫 행). 아래 속성이 함께 붙는다. - name_ (str): 모델 이름. fits 의 키에서 채워진다 - score_table_ (DataFrame): 모델명을 인덱스로 하는 성능 비교표. 성능이 좋은 모델이 위에 오며, 맨 끝에 1위 대비 상대격차인 Gap(%) 컬럼이 붙는다

Raises:

Type Description
TypeError

fits 가 딕셔너리가 아니거나 값이 회귀분석 결과 객체가 아닌 경우.

ValueError

fits 가 비었거나 지표 이름·tolerance 가 유효하지 않은 경우.

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

fit_pipeline 또는 auto_ols 로 적합된 회귀분석 결과 객체. log1p_y_·log1p_x_·use_hc3_·data_ 속성이 붙어 있어야 한다.

required
title bool

모델 이름(name_)이 있으면 맨 위에 2수준 제목으로 출력할지 여부 (기본값: True).

True

Raises:

Type Description
AttributeError

보고에 필요한 속성이 결과 객체에 없는 경우.