대학원생 리암의 블로그

Discrete Choice Model 설명 [1편] 본문

대학원

Discrete Choice Model 설명 [1편]

liam0222 2024. 9. 10. 14:02

Discrete Choice Model(이하 dcm)은 decision maker가 여러가지 alternative 중에 한가지를 선택하는 방법을 모델링한다. Decision Maker에게는 선택 가능한 대안들의 집합인 Choice Set이 주어진다. Set 내의 alternative들은 다음과 같은 성질을 띈다:

1. Mutual Exclusivity (상호 배타성): 한 대안을 선택하면 다른 대안은 선택할 수 없음
2. Exhaustiveness (완전성): 모든 가능한 대안이 포함되어야 함
3. Finiteness (유한성): 대안의 수가 유한해야 함

 

유한성 조건이 일반 회귀 모형과 DCM을 구분짓는 특징이다.  


각 decision maker {n}은 각 alternative j에 대해 $U_{nj}$의 효용을 얻는다. 그리고 그 중 가장 utility가 높은 것을 선택한다. 이를 수식으로 나타내면 다음과 같다. 

 

$U_{ni} > U_{nj} \quad \forall j \neq i \tag{1}$

 

다만 관찰자는 의사 결정자의 Utility를 완전히 알 수 없기 때문에, 보여지는 특성으로 실제 Utility를 추정하고자 한다. 총 효용을 다음과 같이 가정한다:

 

$U_{nj} = V_{nj} + \epsilon_{nj} \tag{2}$

 

여기서 $U_{nj}$는 의사 결정자 $n$이 대안 $j$를 선택할 때 얻는 실제 효용이고, $V_{nj}$는 관찰 가능한 특성, $\epsilon_{nj}$는 관찰할 수 없는 잠재 변수다. 이 잠재 변수는 정확히 알 수 없기 때문에 확률 변수로 두며, 이를 Random Utility Model이라고 한다.

 

앞서 언급한 식을 확률로 정리하면 다음과 같다:

 

$P_{ni} = \text{Prob}(V_{ni} + \epsilon_{ni} > V_{nj} + \epsilon_{nj} \quad \forall j \neq i) \tag{3}$

 

이것을 like term끼리 이항해서 정리하면 다음과 같다:

 

$P_{ni} = \text{Prob}(\epsilon_{nj} - \epsilon_{ni} < V_{ni} - V_{nj} \quad \forall j \neq i) \tag{4}$

 

그리고 우리는 두 variable이 random variable이면 그 차이 역시 random variable이라는 사실을 알고 있다. 따라서 좌변의 $\varepsilon_{nj} - \varepsilon_{ni}$ 역시 random variable이다.


$\mathbb{P}(\varepsilon_{nj} - \varepsilon_{ni} < V_{ni} - V_{nj}) = \mathbb{P}(d < V_{ni} - V_{nj})$

 

위 표현식은 Cumulative Distribution Function (CDF)를 떠올리게 한다. 실제로 추후에 해당 분포를 어떻게 설정하는지에 따라 dcm의 여러 종류가 등장하게 된다. 일단은 아래식부터 정리해보자.

 

$P_{ni} = \mathbb{P}(\varepsilon_{nj} - \varepsilon_{ni} < V_{ni} - V_{nj} \,\, \forall j \neq i)$
$= \int \mathbf{1} (\varepsilon_{nj} - \varepsilon_{ni} < V_{ni} - V_{nj} \,\, \forall j \neq i) f(\varepsilon_n) d\varepsilon_n,$

 

Indicator function을 활용해서 cumulative probability를 구하고 있다. 이때 multidimensional integral이 사용되는데 저기 뒤의 $d\varepsilon_n$은 모든 epsilon 조합에 적용되는 것이며 $f(\varepsilon_n)$은 모든 epsilon에 대한 joint probability이다.


이때 probability density function인 $f$가 특정 분포일 때만 closed form을 가진다. 

 

>> Logit Model & Nested Logit : pdf가 Generalized Extreme Value 분포라고 가정 


Closed form solution이 없지만 simulation을 통해 접근하는 방법도 존재한다:

 

1. Probit : multivariate normal 분포를 가정

2. Mixed Logit : iid extreme value 분포 + 연구자가 고른 "any distribution"


Logit Model은 critical한 assumption이 있다 : unobserved factors are uncorrelated over alternatives & same variance for all alternatives. 그러나 실제로는 버스를 사람이 많아서 선호하지 않는 사람은 지하철 역시 선호하지 않을 가능성이 크다. 이를 보완하기 위해 등장한 것이 Generalized Extreme Value (GEV)이다. 본 모델은 unobserved variable들끼리의 correlation을 허용하고 correlation이 0일 경우에 logit 모델과 동일해진다는 점이다. 간단한 GEV 모델은 비슷한 factor들을 nest라는 subgroup에 넣는 nested model이고 더 복잡한 모델들은 더 복잡한 correlation pattern 역시 감지할 수 있다. 

 

Probit 모델은 jointly normal함을 가정하고 temporal한 explanation을 할 수 있다는 장점을 가진다. 그렇지만 willingness to pay가 무조건 양수인 상황을 예를 들며 normal distribuation은 음수 값이 있다는 점에서 한계가 생긴다고 한다. (그런데 이 점은 사실 잘 납득이 안된다. mean을 바꿔서 shifting을 해주면 어느정도 해결되지 않나?)

 

Mixed Logit은 unobserved factor가 correlation을 보정할 수 있는 model + iid extreme value 분포를 따르는 두가지로 compose된다고 한다. 이는 거의 모든 dcm을 approximate 할 수 있다는 점에서 general하다. Mixed probit은 Mixed Logit과 동일하나 두번째 분포를 normal로 가정한다는 점에서 상이하다. 다만 simplicity와 approximation power를 타협한 케이스이다.


중요한 것은 DIFFERENCE이다. 

 

중학교 때 수련회에서 제일 이해가 안됐던게 조교님이 모두가 잘했으니 모든 팀에게 10점씩 주겠습니다 라고 한 것이었다. 모두의 점수가 오르면 변별력이 없다. Choice Model에서도 마찬가지다. 상수를 더하는 것은 의미가 없고 각 alternative들이 가지는 utility의 차이가 중요하다.  

 

$U_c = \alpha T_c + \beta M_c + k_{0c} + \varepsilon_c$
$U_b = \alpha T_b + \beta M_b + k_{0b} + \varepsilon_b$

 

위 두식을 살펴보자. $k_{0b} - k_{0c} = d$인데 두 차이가 같다면 셀 수 없이 많은 조합이 가능하다. 예를 들어, 3-1 = 4-2 = 5-3 = 6-3 ,,,,,,,이듯이.

 

따라서 우리는 하나의 variable을 0으로 고정하고 다른 variable을 그 variable에 relative하게 나타낸다. 

 

$U_c = \alpha T_c + \beta M_c + \varepsilon_c$
$U_b = \alpha T_b + \beta M_b + k_b + \varepsilon_b$

 

여기서 $k_b$가 d에 상응하는 값이다. 일반화하자면 J개의 alternative들이 있을 때 J-1개의 relative한 d값이 존재한다.

 

$P_{ni} = \mathbb{P}(U_{ni} > U_{nj} \,\, \forall j \neq i) $
$= \mathbb{P}(\varepsilon_{nj} - \varepsilon_{ni} < V_{ni} - V_{nj} \,\, \forall j \neq i) $
$= \mathbb{P}(\tilde{\varepsilon}_{nji} < V_{ni} - V_{nj} \,\, \forall j \neq i) $
$= \int \mathbf{1} (\tilde{\varepsilon}_{nji} < V_{ni} - V_{nj}, \forall j \neq i) g(\tilde{\varepsilon}_{ni}) d\tilde{\varepsilon}_{ni}$

 

$\tilde{\varepsilon}_{nji} = \varepsilon_{nj} - \varepsilon_{ni}$가 대안들 간의 차이이다.

$\tilde{\varepsilon}_{ni} = \{\tilde{\varepsilon}_{n1i}, \dots, \tilde{\varepsilon}_{nJi}\}$은 $J - 1$ dimensional vector of error differences이다. 즉 자기 자신 제외하고 모든 alternative들과의 차이를 구한 것이다. 이렇게 하면 J개의 alternative에서 J-1개로 줄일 수 있다. 


모든 alternative에 상수를 더하는 것이 의미가 없듯이 모든 utility식에 동일한 상수를 곱해도 영향이 없다. 따라서 scale 역시 표준화해서 나타내준다. 이러한 scale 보정은 여러 모델과 비교할 때 필요하다. 

 

Standard Logit 모델은 $\frac{\p\}{2\sqrt{6}}$로 variance를 맞춘다. 이는 1.6정도이며 식에 적용하면 다음과 같다:

 

$U_{nj} = x_{nj} \left(\frac{\beta}{\sigma}\right) 1.6 + \varepsilon_{nj} $ 이 때 $\varepsilon_{nj} = 1.6$이다. 

$\text{Var}(\lambda a) = \lambda^2 \text{Var}(a)$ 이기에 모든 분산이 보정된다. 

위에서는 error term들이 서로 independent한 상황을 살펴봤다. 그러나 error term들이 correlate되었을 경우도 있다. 오차 벡터 $\varepsilon_n = \langle\varepsilon_{n1}, \ldots, \varepsilon_{n4}\rangle$의 평균이 0인 공분산 행렬은 다음과 같다:

 

\begin{pmatrix}\sigma_{11}&\sigma_{12}&\sigma_{13}&\sigma_{14}\\\cdot &\sigma_{22}&\sigma_{23}&\sigma_{24}\\\cdot &\cdot &\sigma_{33}&\sigma_{34}\\\cdot &\cdot &\cdot &\sigma_{44}\end{pmatrix}

 

대칭 행렬이기에 중복되는 부분은 (·)으로 생략했다. 

 

$\tilde{U}_{nj1}=\tilde{V}_{nj1}-\tilde{\varepsilon}_{nj1}\quad \text{for }j=2,3,4$, where $\tilde{U}_{nj1}=U_{nj}-U_{n1}$,$\tilde{V}_{nj1}=V_{nj}-V_{n1}$, and $\tilde{\varepsilon}_{n1}=\langle(\varepsilon_{n2}-\varepsilon_{n1}),(\varepsilon_{n3}-\varepsilon_{n1}),(\varepsilon_{n4}-\varepsilon_{n1})\rangle$.

 

예를 들어, 첫 번째와 두 번째 오차의 차이 분산은 다음과 같다:

 

$\text{Var}(\tilde{\varepsilon}_{n21})=\text{Var}(\varepsilon_{n2}-\varepsilon_{n1})=\text{Var}(\varepsilon_{n1})+\text{Var}(\varepsilon_{n2})-2\text{Cov}(\varepsilon_{n1},\varepsilon_{n2})=\sigma_{11}+\sigma_{22}-2\sigma_{12}$

 

이어서 공분산도 계산해보자. 공분산 식은 $\mathbb{E}(XY) - \mu_X \mu_Y$인데 평균이 0이기에 앞의 term만 고려하면 된다. 

 

$\tilde{\varepsilon}_{n21}$와$\tilde{\varepsilon}_{n31}$사이의 공분산을 예로 계산해보자. 

$\text{Cov}(\tilde{\varepsilon}_{n21},\tilde{\varepsilon}_{n31})=E((\varepsilon_{n2}-\varepsilon_{n1})(\varepsilon_{n3}-\varepsilon_{n1}))=E(\varepsilon_{n2}\varepsilon_{n3}-\varepsilon_{n2}\varepsilon_{n1}-\varepsilon_{n3}\varepsilon_{n1}+\varepsilon_{n1}\varepsilon_{n1})=\sigma_{23}-\sigma_{21}-\sigma_{31}+\sigma_{11}$

 

오차 차이 벡터의 공분산 행렬은 다음과 같다.

 

$\tilde{\Omega}_1=\begin{pmatrix}\sigma_{11}+\sigma_{22}-2\sigma_{12}&\sigma_{11}+\sigma_{23}-\sigma_{12}-\sigma_{13}&\sigma_{11}+\sigma_{24}-\sigma_{12}-\sigma_{14}\\\cdot &\sigma_{11}+\sigma_{33}-2\sigma_{13}&\sigma_{11}+\sigma_{34}-\sigma_{13}-\sigma_{14}\\\cdot &\cdot &\sigma_{11}+\sigma_{44}-2\sigma_{14}\end{pmatrix}$

 

그리고 scaling을 하기 위해 특정 term을 정해서 나누어 줄 수 있다. 예를 들어 첫번째 term((1,1) 위치)이고 $m =  \sqrt{\sigma_{11}+\sigma_{22}-2\sigma_{12}}$로 나누어 normalize 해준다.

 

\begin{pmatrix}1&(\sigma_{11}+\sigma_{23}-\sigma_{12}-\sigma_{13})/m&(\sigma_{11}+\sigma_{24}-\sigma_{12}-\sigma_{14})/m\\\cdot &(\sigma_{11}+\sigma_{33}-2\sigma_{13})/m&(\sigma_{11}+\sigma_{34}-\sigma_{13}-\sigma_{14})/m\\\cdot &\cdot &(\sigma_{11}+\sigma_{44}-2\sigma_{14})/m\end{pmatrix}


 

 

우리는 연구를 할 때 aggregate demand를 기반으로 연구하는데 average를 구할 경우 실제 probability와 괴리가 생길 위험이 크다고 한다. 예를 들어, a와 b의 데이터를 이용해서 $\frac{a+b}{2}$를 추정한다고 할 때 average probability와 probability at average의 불가피한 괴리가 있음을 확인할 수 있다. 


Sample Enumeration

 

일반적으로 aggregate demand를 확인하는 방법은 sampling이다. 

 

$\sum_{i=1}^{n} w_{n}P_{ni}(i)$

 

위 식과 같이 sampling을 한 이후 해당 개체와 similar한 사람이 많을수록 weight를 주어 sum을 구하게 된다. 비슷한 맥락에서 설명 변수의 종류가 적을 때 segmentation을 할 수도 있다. 예를 들어 education level(중졸/고졸/대졸/대학자퇴)과 gender(binary)로만 구분한다고 했을 때 8가지의 segement만 존재한다. 따라서 sample enumeration과 식은 동일하나 n이 finite한 숫자로 고정된다. 

 

$\sum_{i=1}^{8} w_{n}P_{ni}(i)$