전체 글 44

통계적 유의성 검정이 절대적이지 않은 이유 : 통계적 유의성과 실무적 유의성

1. 통계적 유의성  연구나 비즈니스 등의 데이터 분석 현장에서 가설이 옳은지 검증하는 작업은 매우 중요하다. 예를 들어, "신약에 효과가 있다"라는 가설을 검증하고 싶다고 가정해보자. 신약이 아닌 가짜약을 투여한 모집단 A와 신약을 투여한 모집단 B가 있다. 이때, "신약에 효과가 있다"라는 가설을 통계적인 가설로 바꿔보면 다음과 같다. 가짜약을 투여한 모집단 A의 평균과신약을 투여한 모집단 B의 평균은 다를 것이다.(Two-sided, 양측가설) 여기서 두 가지 가설이 도출된다.귀무가설(null hypothesis, 영가설) : 신약에 효과가 없다. (모집단 A의 평균과 모집단 B의 평균이 동일하다.)대립가설(alternative hypothesis, 대안가설) : 신약에 효과가 있다. (모집단 A의..

Product Analytics 2024.12.05

[AB 테스트] 실험의 순수 효과 측정 방법 - 이중차분법

1. AB Test란 무엇인가 자사 서비스를 운영하는 IT 기업은 높은 확률로 서비스의 UX/UI 개선을 중요하게 생각한다. 매출 증대와 같이 회사의 존속을 위해 중요한 키 메트릭을 끌어올리기 위해선 서비스의 UI 개선보단 거시적인 비즈니스 전략이 더 중요할 수도 있지만, 서비스의 편의성이 낮아 고객 경험이 낮은 경우엔 밑 빠진 독에 물 붓기와도 같다.  여러 상품을 판매하는 이커머스 서비스를 예로 들어보자. 유저는 서비스에 진입 후 이런저런 행동들을 통해 상품을 탐색하고, 그러다가 원하는 상품을 클릭해 상품 페이지에 진입하고 결국 구매를 하게 될 것이다. 이처럼 앱에 진입 후 구매까지의 일련의 행동들이 발생하는 과정을 고객 여정이라고 한다. 유저는 구매에 이르기까지의 고객 여정 중 여러 경험들을 하게 ..

Product Analytics 2024.12.05

[AB 테스트] 통계적 유의성 검정 방법

자체적인 앱 서비스를 운영하는 대부분의 테크 기업들은 프로덕트에 대한 AB 테스트를 끊임없이 진행하며 서비스를 고도화한다. AB 테스트는 간단히 말해, 기존의 상태에서 뭔가에 변화를 주려고 하는데 이 변화된 것이 기존의 상태보다 더 나은지를 테스트 하는 과정이다. 여기서 기존의 것을 A, 변화된 것을 B라고 하는데 실험 설계 단계에서 핵심 지표와 가드레일 지표 등을 설정하고 실험 종료 후 이 지표들을 측정한다. 측정 결과에 따라 B군으로 롤아웃을 하거나 A군으로 롤백하게 된다. * 가드레일 지표(Guardrail metric) : 실험으로 인해 떨어져서는 안되는 지표* 롤아웃 : 기대했던 대로 실험 결과가 잘 나와서 B군으로 배포하는 경우. 반대로 A군으로 다시 원상복구 해야할 경우, 롤백. 단, 여기서..

Product Analytics 2024.12.05

UX 디자인에 대한 정의

UX 디자인이란 무엇인가.  간단히 말하면 제품과 서비스를 이용하는 사용자의 경험(User Experience, UX)을 디자인하는 것을 의미한다.User Experience란 용어는 90년대 Designing Everday Things의 저자인 Don Norman이 처음 사용하기 시작했다고 하는데, 그는 이에 대해 다음과 같이 설명했다. 제품이란 단순히 제품 그 자체를 말하는 것이 아닌, 여러 요소들이 한 곳에 응집되어 통합된 경험의 집합체이다.제품 또는 서비스의 모든 단계를 고려해야 한다. 초기에 의도한 내용이 최종적으로 어떻게 반영되는지, 첫 사용 단계에서 도움말, 서비스 유지 관리라는 단계에 이르기까지 모든 것을 고려해야 한다. 그리고 UX 디자이너의 일은 이 모든 요소가 원활하게 함께 작용할 수..

Dart 기초 (3) Dynamic Type

void main() { // 변수를 선언하고 거기에 어떤 값을 할당하지 않으면 dynamic // dynamic = 어떤 type의 변수인지 알 수 없는 상태 var animal; animal = 'cat'; animal = 45; animal = true; print(animal); // dynamic으로 직접 명시해줄 수 있음 dynamic animalAge; animalAge = 19; if(animalAge is String){ var ageLength = animalAge.length; print(ageLength); } if(animalAge is int){ int age = animalAge; print(age); } // 다만, dynamic은 정말 필요할 때만 사용 } dynamic 타..