2026. 4. 21. 17:56ㆍTIL
📢 오늘의 목표
🚩코드카타를 하면서 기본적인 코딩 역량을 키운다.
🚩통계분석에 대해 배우면서 기존에 배웠던 내용과 어떻게 접목 시킬지 고민한다.
🚩라이브 세션을 통해 통계 분석 역량을 키운다.
🚩머신러닝을 복습하면서 품질 분석 역량을 키운다.
📅 TIL
❇️통계분석 Morning 과제
❇️통계학 기초 5주차
📊재현 가능성
🗯️재현 가능성
*️⃣ 동일한 연구나 실험을 반복했을 떄 일관된 결과가 나오는지 여부 → 연구의 신뢰성을 높임
*️⃣ 최근 p 값에 대한 논쟁이 두드러지고 있음
*️⃣ 가설검정 원리상의 문제나 가설검정의 잘못된 사용이 낮은 재현성으로 이어진다는 문제 발생
*️⃣ 최근 논문을 재현해서 실험 하는데 똑같은 결과가 안나오는 사례가 너무 많음.... → 실제로 실험 해봤는데 찐빠 나는 경우가 너무 많음
🗯️재현성 위기의 원인은?
*️⃣실험 조건을 동일하게 조성하기 어려움 → 완전 동일 조건에서 똑같은 실험 하기는 쉽지 않음, 가설 검정 자체도 100% 검정력을 가지는 건 아님
🗯️가설 검정 사용방법에 있어서 잘못 됨
*️⃣ p값이 0.05가 나오게 유도하는 것이 가능
*️⃣ 1종 오류를 저지를 수 있음
*️⃣ 0.05라는 것은 100번 중 5번은 가능하다는 건데 생각보다 높은 확률이다
*️⃣ 유의 수준(α)를 통제해야한다.
*️⃣ 좋은 가설을 세우는 것이 가장 중요하다!!
📊p-해킹
🗯️p-해킹
*️⃣ 데이터 분석을 반복해서 p값을 낮추는 행위
*️⃣ 유의미한 결과를 얻기 위해 다양한 변수를 시도하거나, 데이터를 계속해서 분석하는 등의 방법을 포함
*️⃣ p-값은 가설의 타당성을 결정하는 중요한 변수인데 의도적으로 p-값을 낮추면 신뢰성이 떨어진다.
🗯️주의 사항
*️⃣ 여러 가설 검정을 진행할 때 유의미한 p-값을 얻기 위해 반복 분석 하지 말자
*️⃣ 데이터를 늘리다가 특정 데이터를 기록할 때 일시적으로 p값이 0.05 이하로 떨어질 수 있는데 이때 대립가설을 채택하는 오류를 저지르면 안된다.
*️⃣ 결과를 보며 데이터를 늘려선 안됨
*️⃣ 즉 내 가설이 옳다고 주장하기 위해 사실을 곡해하면 안된다.
*️⃣ 가설을 증명하기 위해 가설검증형 방식으로 분석을 해야하며 만약 탐색적으로 분석한 경우 가능한 변수를 보고하고 본페로니 보정과 같은 방법을 사용해야 함
📊선택적 보고
🗯️선택적 보고

*️⃣ 이 그림을 보면 전체적으로는 정규 분포의 형태를 띄지만 샘플을 잘못 잡아 긴꼬리 분포라고 판단할 수 있다.
*️⃣ 선택적 보고는 이처럼 유의미하지 않은 결과는 보고하지 않는 행위를 의미한다.
*️⃣ 이는 데이터 분석의 결과를 왜곡하고, 신뢰성을 저하시킴
*️⃣ 선택적 보고는 다수의 데이터 중 유의미한 결과만을 채택하거나, 결과를 보고 가설을 수정했는데 그걸 처음 설정한 가설처럼 거짓말을 할 때 발생!
📊자료수집 중단 시점 결정
🗯️자료수집 중단 시점 결정
*️⃣신뢰성 있는 결과를 얻기 위해서는 언제 자료 수집을 중단할지 명확하게 결정하지 않으면, 원하는 결과가 나올 때까지 데이터를 계속 수집할 수도 있다. 이건 결과의 신뢰성을 떨어뜨린다.

*️⃣가장 이상적인 방법은 사전에 설정한 가설대로 하는것!
# 데이터 수집 예시
np.random.seed(42)
data = np.random.normal(0, 1, 1000)
sample_sizes = [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
p_values = []
for size in sample_sizes:
sample = np.random.choice(data, size)
_, p_value = stats.ttest_1samp(sample, 0)
p_values.append(p_value)
# p-값 시각화
plt.plot(sample_sizes, p_values, marker='o')
plt.axhline(y=0.05, color='red', linestyle='dashed', linewidth=1)
plt.title('자료수집 중단 시점에 따른 p-값 변화')
plt.xlabel('샘플 크기')
plt.ylabel('p-값')
plt.show()

샘플 사이즈가 100이하면 p-값이 급격하게 하락
📊데이터 탐색과 검증 분리
🗯️데이터 탐색과 검증 분리
데이터 탐색을 통해 가설을 설정하고, 이를 검증하기 위해 독립된 데이터 셋을 사용하는 것
데이터 과적합 방지를 통해 결과의 신뢰성을 높임

검증 데이터를 통해 신뢰성을 높임!
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
#데이터 생성
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 데이터 분할 (탐색용 80%, 검증용 20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 모델 학습
model = LinearRegression()
model.fit(X_train, y_train)
# 탐색용 데이터로 예측
y_train_pred = model.predict(X_train)
# 검증용 데이터로 예측
y_test_pred = model.predict(X_test)
# 탐색용 데이터 평가
train_mse = mean_squared_error(y_train, y_train_pred)
train_r2 = r2_score(y_train, y_train_pred)
print(f"탐색용 데이터 - MSE: {train_mse}, R2: {train_r2}")
# 검증용 데이터 평가
test_mse = mean_squared_error(y_test, y_test_pred)
test_r2 = r2_score(y_test, y_test_pred)
print(f"검증용 데이터 - MSE: {test_mse}, R2: {test_r2}")
#탐색용 데이터 - MSE: 0.8476788564209705, R2: 0.7582381034538057
#검증용 데이터 - MSE: 0.6536995137170021, R2: 0.8072059636181392
MSE의 값이 차이 나는 것을 보아 이 모델은 수정이 필요하다.
❇️아티클 스터디
https://yozm.wishket.com/magazine/detail/1644/
A/B 테스트 제대로 이해하기: 2A/B 테스트를 위한 기초 통계 이해하기 | 요즘IT
앞선 글에서 A/B 테스트를 설계하거나 수행할 때 ‘목표를 달성하기 위한 방안으로 A와 B 중 어느 게 더 나은가?’ 뒤에 숨은 진짜 질문에 관해 살펴보았다. 이번 글에서는 이러한 우리의 진짜 질
yozm.wishket.com
🌈요약
*️⃣이 아티클은 저번 A/B 테스트를 왜 사용하는 지에 이어지는 글로 A/B 테스트를 효율적으로 해석하는데 필요한 통계적 개념에 대해 설명하고 있다.
*️⃣ 그리고 이러한 기초 통계 지식을 바탕으로 A/B 테스트를 진행하면 더 신뢰도 있고 명확한 해답을 얻을 수 있다.
⚡주요 포인트
⭐모집단과 표본 지식 in에 질문하는 과정을 가정하여 지식인 전체가 답변하는 것이 아닌 일부 지식인이 답변을 해주는 것이기 때문에 우리는 전체 지식인에 대한 정보를 영원히 얻지 못한다
⭐일부를 통해 전체를 추론 가능 하지만 그 일부의 성질이 전체의 성질과 밀접할 수록 표본은 전체를 대표할 수 있다.
⭐ 귀무가설, 대립 가설 평소에는 무언가를 하지 않으면 집단 간의 차이가 존재하지 않는다 이 상태를 귀무 가설이라고 한다. 하지만 집단을 분리한 뒤 인위적인 조작을 가하게 되면 집단의 성질에 차이가 생기게 된다. 이것을 대립 가설이라고 한다. 그리고 가설을 검증할 때 두 그룹 간의 차이가 있을 것이라고 가정하고 그 결과의 타당성을 실험 하는 것은 단측 검정이고, 어느쪽이 더 나을지 미리 가정할 수 없어 두 그룹을 비교해야하는 것은 양측 검정이다.
⭐실험 결과도 결국 추측 A/B 테스트는 어디까지 실험에 노출된 일부를 바탕으로 해당 고객 전체를 추측한 것에 불과 하지만 이 추측을 실제 데이터로 연결하는 것이 좋은 A/B 테스트이다. 그리고 이 추측 중 100번 중 5번 의 오류가 발생하면 이것을 우연이라고 가정하지 않는다. 이걸 신뢰 수준이라고 한다. 그리고 p-value를 통해 p-value가 유의 수준인 5% 이하이면 대립 가설을 채택한다.
🔆핵심 개념
✨ A/B 테스트: 두 가지 버전(A와 B)을 비교해 어떤 안이 더 좋은 성과를 내는지 검증하는 실험 방법.
✨ 모집단: 분석하거나 알고자 하는 전체 대상 집합입니다.
✨ 표본: 모집단에서 일부를 추출해 조사한 데이터 집합
✨ 단측 검정: 특정 방향(크다 또는 작다)으로 차이가 있는지만 검정하는 방법
✨ 양측 검정: 두 집단 간 차이가 있는지 방향과 관계없이 검정하는 방법
✨ 유의 수준: 실제로 차이가 없는데도 차이가 있다고 잘못 판단할 허용 확률
✨ p-value: 귀무가설이 참일 때 현재와 같은 결과가 나올 확률
🔆용어 정리
✨ 점 추정: 표본 데이터를 이용해 모집단의 값을 하나의 숫자로 추정하는 방법
✨ 구간 추정: 모집단의 값이 포함될 것으로 예상되는 범위를 제시하는 추정 방법
✨ 표준 오차: 표본 통계량이 표본마다 얼마나 변동하는지를 나타내는 값
'TIL' 카테고리의 다른 글
| 20260423 TIL (0) | 2026.04.23 |
|---|---|
| 20260422 TIL (0) | 2026.04.23 |
| 20260420 TIL (0) | 2026.04.20 |
| 20260417 TIL (1) | 2026.04.17 |
| 20260416 TIL (1) | 2026.04.16 |