8.1.1 온라인 지출의 초기 선형 모델
데이터 생성
ols()를 사용해 지출을 다른 모든 변수의 함수로 모델링한다.
데이터 시각화를 통해 해당 모델링의 문제점을 발견할 수 있다.
=> 극도로 치우친 변수와 상관성이 매우 높은 변수 쌍을 보여준다.
이러한 문제를 개선하기 위해 박스-콕스 변환을 사용해 데이터를 변환한다. 동시에 sklearn.preprocessing 라이브러리의 scale()을 사용해 데이터를 표준화한다.
데이터프레임에서 전체 사례를 선택하고 예측 변수가 아니기 때문에 고객ID열을 다시 삭제하고, 온라인 지출이 양수인 행만 가져온다. 이메일(숫자가 아님)을 제외한 모든 열을 인덱스화하는 벡터를 만든 다음 각 숫자 열에 autoTransform() 함수를 apply()를 사용해 적용한다.
변환된 데이터를 사용해 모델을 재적합화한다.
=> 그러나 데이터가 표준화되었음에도 불구하고 온라인 지추링 거래와 관련성이 높지만 온라인 방문과는 무관하다는 말도 안되는 추정치는 여전히 변경되지 않았다.
=> 이는 공선성의 문제로, 방문과 거래는 매우 관련성이 높고 선형 모델은 효과가 가산적이라고 가정하기 때문에 한 변수에 기인한 효과가 높은 상관관계를 가진 다른 변수에 공동으로 기여할 수 없기 때문에 예측 변수의 표준 오차가 증가해 계수 추정치가 매우 불확실한 것이다.
8.1.2 공선성 수정
데이터의 공선성 정도는 분산 팽창 계수(VIF)로 평가할 수 있다.
VIF는 어떤 변수가 상관관계가 없거나 단순 단일 예측자 회귀가 수행된 상황과 비교해 다른 변수와의 공유 분산으로 인해 선형 모델 계수의 표준 오차를 얼마나 증가시키는지 추정한다.
variance_inflation_factor()를 사용해 VIF를 계산할 수 있다.
=> 일반적인 경험 법칙은 VIF>5.0은 공선성을 완화해야 한다는 의미이다.
공선성을 완화하기 위한 3가지 일반적인 전략
이 모델의 경우 online_trans와 store_trans를 제외함으로써 모델에 대한 상관관계가 높은 변수를 생략한다.
=> 이제 VIF는 허용 가능하며, 온라인 방문 수가 여전히 온라인 지출의 가장 좋은 예측 변수라는 것을 알 수 있다.
또 다른 접근 방식은 상관 데이터의 주성분 요소를 사용하는 것이다.
주성분 분석(PCA)은 다차원 데이터셋을 상관관계가 없는 성분으로 분해한다. 여기서는 PCA를 사용해 온라인 변수에 대한 첫 번째 구성 요소를 추출한 다음 상점 변수에 대해 이 작업을 다시 수행하고, 이 2개의 초기 구성 요소를 데이터프레임에 추가한다.
=> 이 역시 VIF가 허용 가능하며, 온라인 지출은 여전히 온라인 활동과 주로 연관되어 있다.
단, 주성분을 설명 변수로 사용한 결과를 해석할 때 주의할 점은 성분이 임의의 숫자 방향을 갖는다는 것이다. online이 여기서 음의 계수를 갖는 것이 반드시 온라인 활동이 매출 감소로 이어진다는 것을 의미하지는 않음!
8.2.1 로지스틱 회귀 모델의 기초
로지스틱 함수의 방정식
=> y가 제품을 구매하거나 테스트하기로 결정한 경우, 일반적으로 가격과 같은 제품 특징(x)의 함수로 Vx를 추정한다. p(y)는 Vx가 음수일 떄 50% 미만이고, Vx = 0일 때 50%이며, Vx가 양수이면 50% 이상이다.
Scipy의 expit() 함수를 사용해 이를 확인할 수 있다.
이러한 모델을 로짓 모델이라고 하며, y의 발생 상대 확률의 로그에서 Vx값을 결정한다.
Scipy의 logit() 함수를 사용해 이를 구할 수 있다.
8.2.2 시즌 패스의 로지스틱 회귀 데이터
8.2.4 로지스틱 회귀 모델 적합화
일반화 선형 모델(GLM)은 정규 분포가 아닌 종속 변수를 처리할 수 있다. 따라서 GLM을 사용해 데이터 개수나 시간 간격 또는 이진 변수를 모델링할 수 있다.
모든 GLM 모델의 공통적인 특징은 연결 함수를 사용해 정규 분포 예측 변수를 비정규 결과에 연결한다는 것이다.
이 예제의 경우 이항 결과를 모델링하기 때문에 적절한 분포는 이항분포이다.
이진 결과의 경우 family=stats.models.api.families.Binominal()을 설정한다.
이항 모델의 기본 연결 함수는 로짓 함수이므로 이를 지정할 필요가 없다.
여기서는 Promo에 Pass의 로지스틱 회귀로 초기에 이를 모델링한다.
=> 번들 조건에 양의 계수가 있으며 효과는 통계적으로 유의하다.
=> 0.388의 계수는 성공률과 비성공의 비율을 조사해 판촉 번들 요소와 관련된 패스 판매의 연관성을 계산하는데 사용할 수 있다.
=> 번들의 효과가 1.475의 예상 승산비라는 것을 보여준다. 즉, 번들로 제공될 때 고객이 패스를 구매할 확률이 그렇지 않은 경우보다 1.475배 더 높다는 것을 의미한다.
각 조건에서 모델 출력을 지수화해 각 조건에서 실제 승산비를 구할 수 있으며,번들이 아닌 경우에는 -0.1922이고 번들인 경우에는 0.3888-0.1922이다.
=> 따라서 번들을 받은 개인 중 패스를 구입한 사람 1.217명 당 그렇지 않은 사람이 1명이었다. 그리고 번들을 받지 못한 사람들 중 패스를 구매한 사람 0.825명당 그렇지 않은 사람이 1명이었다.
승산비를 취하고 이를 승산비+1로 나눠서 확률을 얻을 수 있다.
각 조건에서 패스를 구매할 p(y)는 다음과 같이 구할 수 있다.
모델 객체의 params 속성에서 계수를 추출하고 exp()를 사용해 모델에서 승산비를 구할 수 있다.
exp(model.confint())를 사용해 승산비에 대한 신뢰 구간을 얻을 수 있다.
=> 판촉 번들의 승산비는 1.28에서 1.70 사이로 추정되며, 이는 상당히 긍정적인 효과이다.
=> 그러나 이러한 결과는 모델이 우리가 해석하고자 하는 것이라는 가정하에 효과가 추정되기 떄문에 반드시 판촉이 효과적일 것이라는 사실을 나타내지는 못한다.
8.2.5 모델 재고
채널별 시즌 패스 구매 내역을 고려해보자.
=> 공원에서 패스가 가장 효과적으로 판매되는 것을 알 수 있다.
다중 패널의 막대 차트 그림을 사용해 패스 판매에 대한 번들의 효과를 비교할 수 있다.
=> 시즌 패스 판매는 공원에서 매우 성공적인 반면 이메일로는 큰 실패임을 알 수 있다. 즉, 이는 모델 Pass~Promo가 부적절할 수 있으며 Channel의 효과를 고려해야 함을 의미한다.
모델 공식에 +Channel을 추가해 채널의 주요 효과를 모델링한다.
=> 결과 모델은 이제 판촉 번들의 강력한 부정적 기여를 추정한다.
승산비와 신뢰 구간 확인
=> 이 모델에서 판촉은 시즌 패스 구매 확률을 32%(1-0.478)~53%(1-0.682) 낮춘다.
=> 반면에 공원에서 직접 제안하는 것은 이 모델에서 시즌 티켓 판매가 30~56배 더 높은 것과 관련이 있다.
판촉이 채널에 따라 다른 영향을 미칠 수 있는 상호 작용 효과도 고려해야 한다. : 연산자를 사용해 상호 작용 항을 추가한다.
=> 채널과 판촉의 상호 작용은 통계적으로 유의하며, 이러한 시뮬레이션 데이터의 기본 이메일과는 반대로 우편과 공원 내 채널에 대해 강한 음의 관계이다.
승산비를 보면, 판촉은 이메일에 비해 우편과 공원 내 채널을 통해서는 겨우 2%~11% 효과에 불과하다는 것을 알 수 있다.
=> 따라서, 판촉 번들의 유효성은 채널에 따라 다르다는 결론을 내릴 수 있다.
8.3.1 일부 HLM 개념
8.3.2 놀이공원에 대한 등급 기반 공동 분석
새로운 롤러코스터의 설계를 고려하기 위해 어떤 롤러코스터의 특징이 고객에게 어필할 수 있는지 알아보기 위해 고객에게 다양한 롤러코스터를 평가하도록 설문 조사 요청.
데이터 생성
=> 고객의 등급은 롤러코스터의 다양한 특징으로부터 등급이 예측되는 성형 모델로 분석할 수 있다. 이는 전체 평점에 대한 각 특징의 기여도를 알려준다.
8.3.4 초기 선형 모델
데이터 확인
ols()를 사용해 계층적 구성 요소가 없는 일반 선형 모델을 추정한다.
=> 여기서 계수는 선호도와의 연관성을 나타낸다. 평균적으로 최고 등급의 롤러코스터는 최고 속도 70mph, 높이 300 피트, 강철 구조 및 용 테마이다.
=> 그러나 10점 만점인 척도를 뛰어넘는 점수가 나오기 때문에 단순히 '평균' 결과를 해석하는 것은 오해의 소지가 있음을 알 수 있다.
=> 계수는 대부분 바람직하거나 바람직하지 않은 속성을 모두 결합하는 설계를 기반으로 추정되며, 선호도의 극단에서는 신뢰할 수 없다.
8.3.5 mixedlm을 사용한 계층적 선형 모델
fe_params 매개변수에는 고정 효과만 포함된다.
=> 각 응답자에 대한 전체 효과는 모든 사람에게 적용되는 전체 고정 효과와 개별적으로 변하는 랜덤 효과로 구성된다. 이는 고정 효과와 핸덤 효과를 결합하는 생성할 수 있다.
응답별 절편의 랜덤 효과 추정은 random_effects 속성을 통해 접근할 수 있다.
8.3.6 완전한 계층적 선형 모델
마케팅 관행에서 가장 일반적인 계층적 모델은 전체 응답자의 모든 관심 계수에 대한 랜덤 효과 모수를 추정하는 것이다.
그러나 전체 모델에서 이를 추정하는 것은 시간이 다소 걸린다는 것과, 매개변수가 너무 많아 소규모 관측치에서도 안정적인 수렴 모델을 찾는데 어려움이 있을 수 있다는 한계가 존재한다.
랜덤 효과를 추정하기 위해 4개의 롤러코스터 요소를 모두 추가했으며, fit() 메서드에 maxiter=1000이라는 인수를 추가해 반복 횟수를 설정했다.
마찬가지로 fe-params을 적용해 고정 효과를 갖는다.
=> 이 부분은 위의 모델과 동일하므로 계수가 같다.
랜덤 효과에는 각 응답자의 모수에 대한 추정치가 포함된다.
=> 이 부분은 7개의 설명 변수를 추가하고 예측된 결과 평가 포인트가 예측 변수에 따라 다르게 분포되어 있기 때문에 위의 모델의 추정값과 다르게 나타난다.
고정 효과에 랜덤 효과를 추가해 응답자당 총계수를 얻는다.
8.3.7 HLM 해석
8.3.8 HLM에 대한 결론