2일차 복습
신뢰구간, 여론조사의 오차범위, 가설 검정, 상관과 회귀, 포트폴리오 복습 31문항
퀴즈
- 총 31문항: 개념·결과 해석과
car.xlsx실습 - 코드를 직접 작성하거나 AI에 요청한 뒤 실행 결과를 확인해도 좋음
- 실습은 아래 준비 코드 실행 후 문제 순서대로 진행. 막히면 힌트의 코드 참고
- 수치 답은 문제에 안내한 자리까지 입력하거나 계산 결과를 그대로 입력
- 가설 검정은 유의수준 0.05, 양측 검정 기준
실습 준비
필요한 패키지가 없으면 먼저 설치.
pip install pandas openpyxl pingouin statsmodels
import pandas as pd
import pingouin as pg
from statsmodels.formula.api import ols
df = pd.read_excel("car.xlsx")
df["mileage_10k"] = df["mileage"] / 10000 # 주행거리 단위를 km에서 만 km로 변환
car.xlsx: Avante와 K3 중고차 274대의 자료- 주행거리는 해석하기 쉽게 만 km 단위로 변환. 예:
mileage_10k가 8이면 8만 km - 이 퀴즈에서는 아래 5개 열 사용
| 열 | 의미 | 단위·값 |
|---|---|---|
model |
차종 | Avante, K3 |
price |
가격 | 만원 |
mileage |
원래 주행거리 | km |
mileage_10k |
만 km 단위로 변환한 주행거리 | 만 km |
year |
연식 | 2006~2018 |
【신뢰구간】모집단 평균을 추정할 때 신뢰구간을 구하는 주된 이유는 무엇인가요?
- ○추정의 불확실성을 반영해 하나의 값 대신 범위로 제시하기 위해
- ○표본평균을 모집단의 정확한 평균으로 확정하기 위해
- ○개별 관측값이 얼마나 퍼져 있는지 최솟값과 최댓값으로 요약하기 위해
- ○모집단 평균 대신 표본에서 가장 자주 나온 값을 구하기 위해
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.
【신뢰구간】모집단 평균을 추정할 때 신뢰구간을 구하는 주된 이유는 무엇인가요?
표본이 달라지면 추정한 평균도 달라질 수 있습니다. 하나의 숫자만 제시할 때 무엇이 드러나지 않는지 생각해 보세요.
【신뢰수준】같은 자료로 신뢰수준을 95%에서 99%로 높이면 신뢰구간은 어떻게 변하나요?
모평균을 놓치는 경우를 줄이려면 어느 범위까지 포함해야 할지 생각해 보세요.
【표본 크기】신뢰수준과 표준편차가 같을 때, 표본 크기를 늘리면 평균의 오차범위는 어떻게 변하나요?
평균의 표준오차는 표준편차를 표본 크기의 제곱근으로 나눈 값입니다.
【실습: 신뢰구간】price의 평균에 대한 95% 신뢰구간을 구하세요. 결과표 CI95의 아래쪽 경계(작은쪽)를 만원 단위로 입력하세요.
평균 가격을 추정하는 구간의 작은 쪽 값을 읽으세요. 두 번째 인자 0은 비교 기준이며, 확인할 값은 CI95입니다.
pg.ttest(df["price"], 0, confidence=0.95)
【신뢰구간 해석】평균 가격의 95% 신뢰구간이 약 [814.10, 893.22]만원입니다. 무엇을 추정한 구간인가요?
평균에 대한 추정과 개별 차량에 대한 예측을 구분해 보세요.
【실습: 여론조사】응답자가 2,500명인 여론조사의 오차범위를 수업에서 사용한 코드로 계산하세요. 신뢰수준 95%, 찬성률 50%를 가정합니다. ± 기호와 단위를 빼고 한쪽 폭을 %p 단위의 숫자로 입력하세요.
95% 신뢰수준의 임계값 1.96에 표준편차 50을 곱하고, 응답자 수의 제곱근으로 나눕니다.
from math import sqrt
critical_value = 1.96 # 95% 신뢰수준의 임계값
max_std = 50 # 찬성률 50%를 가정한 표준편차
n = 2500 # 응답자 수
critical_value * max_std / sqrt(n)
【신뢰구간의 폭】표본 크기와 신뢰수준이 같을 때, 자료가 더 넓게 퍼져 있으면 평균의 신뢰구간은 어떻게 달라지나요?
관측값들의 차이가 클수록 평균을 추정할 때 고려해야 하는 범위도 커집니다.
【귀무가설】Avante와 K3의 모집단 평균 가격이 다른지 독립표본 t 검정으로 양측 검정하려고 합니다. 귀무가설은 무엇인가요?
차이가 있다는 증거를 찾기 전에 기준으로 두는 가설을 생각해 보세요.
【가설 검정】귀무가설을 기각할지 판단할 때, p값을 무엇과 비교하나요?
결과를 보기 전에 정해 두는 판단 기준입니다.
【검정 판단】유의수준 0.05에서 p값이 0.02입니다. 판단으로 알맞은 것은 무엇인가요?
p값을 미리 정한 유의수준과 비교하세요.
【독립표본 t 검정】독립표본 t 검정에 알맞은 상황은 무엇인가요?
수치형 변수의 평균을 비교하며, 두 집단에 속한 관측치가 서로 독립적인 상황입니다.
【실습: t 검정】Avante와 K3의 price를 양측 Welch t 검정으로 비교하세요. 화면에 표시된 결과표의 p_val 값을 입력하세요.
두 차종의 가격을 골라 검정합니다. correction=True로 Welch 검정을 지정하세요.
pg.ttest(
df.query('model == "Avante"')["price"],
df.query('model == "K3"')["price"],
correction=True, # Welch 검정
)
【t 검정 해석】위 검정의 p값은 약 0.028입니다. 유의수준 0.05에서 알맞은 해석은 무엇인가요?
p값이 유의수준보다 작은지 비교하세요. 평균 차이에 대한 판단만으로 원인을 확정할 수는 없습니다.
【실습: 상관계수】주행거리 mileage_10k와 가격 price의 피어슨 상관계수를 구하세요. 소수 셋째 자리까지 입력하거나 계산 결과를 그대로 입력하세요.
두 수치형 변수가 함께 변하는 방향과 선형 관계의 강도를 확인합니다.
df["mileage_10k"].corr(df["price"])
【상관 해석】주행거리와 가격의 상관계수가 약 -0.68입니다. 알맞은 해석은 무엇인가요?
상관계수의 부호는 관계의 방향을 나타내며, 회귀계수와는 다른 값입니다.
【상관의 강도】상관계수가 0.2인 경우와 -0.8인 경우 중 선형 관계가 더 강한 것은 무엇인가요?
방향은 부호로, 강도는 절댓값으로 비교하세요.
【상관과 인과】여름에 아이스크림 판매량과 물놀이 사고가 함께 늘었습니다. 가장 알맞은 설명은 무엇인가요?
날씨가 더워지면 아이스크림을 찾는 사람도, 물놀이하는 사람도 늘 수 있습니다.
【포트폴리오 위험】수업에서 포트폴리오 수익률의 표준편차는 무엇을 나타내나요?
수익률이 평균 주변에서 얼마나 흔들리는지 나타내는 지표입니다.
【분산 투자】개별 자산의 기대수익률·표준편차와 투자 비중이 같을 때, 자산 간 상관관계가 더 낮으면 포트폴리오 위험은 어떻게 되나요?
두 자산에 양의 비중으로 투자한다고 가정합니다. 서로 함께 움직이는 정도가 낮을수록 변동이 완화됩니다.
【회귀분석】주행거리로 가격을 예측하는 price ~ mileage_10k에서 종속변수는 무엇인가요?
예측하려는 대상이 수식의 왼쪽에 옵니다.
pricemileage_10k절편주행거리와 가격의 상관계수price【실습: 회귀계수】절편을 포함한 단순회귀 price ~ mileage_10k를 적합하고 summary() 결과표를 확인하세요. mileage_10k 행의 coef 값을 입력하세요.
결과표에서 mileage_10k 행과 coef 열이 만나는 값을 읽으세요.
simple_model = ols("price ~ mileage_10k", data=df).fit()
simple_model.summary()
【회귀계수 해석】위 단순회귀에서 mileage_10k의 회귀계수는 약 -52.2831입니다. 알맞은 해석은 무엇인가요?
mileage_10k의 1단위는 1만 km이며, 가격 단위는 만원입니다. 기울기의 부호도 확인하세요.
【실습: 계수의 유의성】단순회귀의 summary() 결과표에서 mileage_10k 행의 P>|t| 값을 읽으세요. 화면에 표시된 숫자를 그대로 입력하세요.
coef와 같은 행에서 P>|t| 열을 확인하세요. 0.000은 표시 자릿수 때문에 반올림된 값입니다.
simple_model.summary()
【계수의 유의성 판단】위 단순회귀에서 mileage_10k의 계수는 음수이고, P>|t|는 0.000으로 표시됩니다. 유의수준 0.05에서 알맞은 판단은 무엇인가요?
p값이 0.05보다 작으면 계수가 0이라는 귀무가설을 기각합니다. 관계의 방향은 계수의 부호로 확인하세요.
【실습: 예측】위 단순회귀로 주행거리가 8만 km인 차량의 가격을 예측하세요. 단위는 만원이며 숫자만 입력하세요. 소수 둘째 자리까지 입력해도 좋습니다.
새 자료의 mileage_10k에 8을 넣고 predict()를 사용하세요.
simple_model.predict(pd.DataFrame({"mileage_10k": [8]})) # 주행거리 8만 km
【실습: 결정계수】위 단순회귀의 summary() 결과표에서 결정계수 R-squared에 표시된 값을 입력하세요.
결과표 위쪽의 R-squared를 읽으세요. Adj. R-squared와 구분합니다.
simple_model.summary()
【결정계수 해석】위 모형의 결정계수가 약 0.457입니다. 알맞은 해석은 무엇인가요?
결정계수는 개별 예측의 정답률이 아니라 종속변수 변동에 대한 설명 비율입니다.
【다중회귀】가격을 주행거리와 연식으로 함께 설명하려고 합니다. 알맞은 모형 수식은 무엇인가요?
예측 대상은 왼쪽, 함께 사용할 두 독립변수는 오른쪽에 둡니다.
price ~ mileage_10k + yearmileage_10k ~ price + yearyear ~ mileage_10k + priceprice ~ mileage_10kprice ~ mileage_10k + year【실습: 다중회귀】절편을 포함한 price ~ mileage_10k + year를 적합하세요. summary() 결과표의 R-squared에 표시된 값을 입력하세요.
주행거리와 연식을 함께 넣은 결과표에서 R-squared를 읽으세요.
ols("price ~ mileage_10k + year", data=df).fit().summary()
【실습: 수정 결정계수 비교】price ~ mileage_10k와 price ~ mileage_10k + year의 summary() 결과표에서 수정 R제곱(Adj. R-squared)을 비교하세요. 두 값 중 더 큰 값을 입력하세요.
변수를 추가한다고 수정 R제곱이 항상 커지는 것은 아닙니다. 두 결과표에서 R-squared 아래의 Adj. R-squared를 읽고 비교하세요.
simple_model.summary()
ols("price ~ mileage_10k + year", data=df).fit().summary()
【다중회귀계수 해석】price ~ mileage_10k + year에서 year의 회귀계수는 약 84.3822입니다. 알맞은 해석은 무엇인가요?
다중회귀의 계수는 다른 독립변수가 일정한 조건에서 해석합니다. year는 2017, 2018처럼 연도를 나타냅니다.