
    !g                        d Z ddlmZ ddlZddgddgg dgdggZd ej                  d	      z  ZdZd
 Z	 e
 e	e             dZd Zddgddgg dgdggZddddgfddddgfdg dfgfddgfgfZ e ed ed	            D  cg c]  } |  c}       Zej!                  ddddddd        e
d         e
 ee             g d!d"gd#d"gd$d%gg g d&g d&d'gg d(g d)d"d*gg g d+g d,Z eej'                         D  ch c]  }|D ]  } |   c} }      Z ee      D ci c]  \  }}||
 c}}Zej/                         D ci c]  \  }}||D cg c]  }e|   	 c} c}}}Zyc c} w c c} }w c c}}w c c}w c c}}}w )-zTrying out tree structure for nested logit

sum is standing for likelihood calculations

should collect and aggregate likelihood contributions bottom up

    )lrangeN         )               c                     t        | d   t              sd}| D ]  }|t        |      z  } nDt        |        t        d| t	        |              t
        rt	        t        |          S t	        |       S t        d| |       |S )zwalking a tree bottom-up
    r   final branch withworking on branch)
isinstanceintbranchprintsumtestxbxb)tree	branchsumbs      j/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/sandbox/regression/try_treewalker.pyr   r      s|     d1gs#	 	#A"I	# 	d!4T3r$x= t9	
tY/    c                 h   t        | t              rL| \  }}t        |t        |          t        d|       t        r
t        |   }n|}|D ]  }|t        |      z   } nHt        d | D              }t        d| dj                  |       |       t        r|S dj                  |       S t        d| |       |S )z1walking a tree bottom-up based on dictionary
    subtreec              3   .   K   | ]  }t         |     y w)N)data2).0bis     r   	<genexpr>zbranch2.<locals>.<genexpr>?   s     1bb	1s   r    r   )r   tupler   r   r   branch2r   join)r   namer   r   r   	leavessums         r   r$   r$   .   s    
 $gdE$K i!dII 	/A!GAJ.I	/ 1D11	!4	B774= 	
tY/r   topB1ar   B2B21cdB22)efgB3habcdefghi  d            i,  )r(   r)   r+   r,   r/   r3   z
 tree with dictionary dataconstapconstbconst2x2)r:   r;   timex22)conster;   hince)consttr;   hincfhincg)consthr;   r4   )r)   r*   r   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r(   )__doc__statsmodels.compat.pythonr   numpynpr   aranger   r   r   r   r$   tree2dictzipr   update	paramsindsortedvaluesparamsnames	enumerate	paramsidxitemsinddict)ijidxr&   kvs   000000r   <module>r]      s    - 	
1!uWoqc" yryy|^	
& fTl  
6 
1!uWoqc"	C9C:&?+
 C5\	 	Zq	23Aa34 DsBRcJ K $ % gen  
oo$
	g	
	& !1!1!3?AQ?a?a?@ *3;)?@:CT3Y@	 3<//2C
D
D31Q1A&qil&&
DW 4F @ A '
Ds*   	E&:E+
E1E<E7E<7E<