
    M/Ph                        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d  ed ed	                    D                       Ze                    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d. e                                D                       Zd/  ee          D             Zd0 e                                D             ZdS )1zTrying out tree structure for nested logit

sum is standing for likelihood calculations

should collect and aggregate likelihood contributions bottom up

    )lrangeN         )               c                 L   t          | d         t                    sd}| D ]}|t          |          z  }n]t          |            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      m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/sandbox/regression/try_treewalker.pyr   r      s     d1gs## 
	 	# 	#A"II	# 	d!4T333 	r$x== t99	
tY///    c                    t          | t                    r_| \  }}t          |t          |                    t          d|           t          rt          |         }n|}|D ]}|t          |          z   }n\t          d | D                       }t          d| d                    |           |           t          r|S d                    |           S t          d| |           |S )z1walking a tree bottom-up based on dictionary
    subtreec              3   0   K   | ]}t           |         V  d S )N)data2).0bis     r   	<genexpr>zbranch2.<locals>.<genexpr>?   s&      11bb	111111r   r    r   )r   tupler   r   r   branch2r   join)r   namer   r   r   	leavessums         r   r$   r$   .   s    
 $ !gdE$K   i!!! 	dIII 	/ 	/A!GAJJ.II	/ 11D11111	!4	BBB 	!774== 	
tY///r   topB1ar   B2B21cdB22)efgB3hc                     g | ]}|S  r6   )r   is     r   
<listcomp>r8   T   s    333Aa333r   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(   c                     h | ]	}|D ]}|
S r6   r6   )r   jr7   s      r   	<setcomp>rM   w   s%    ???AQ??a????r   c                     i | ]\  }}||	S r6   r6   )r   idxr&   s      r   
<dictcomp>rP   z   s    @@@:CT3@@@r   c                 .    i | ]\  }}|d  |D             S )c                 (    g | ]}t           |         S r6   )	paramsidx)r   rL   s     r   r8   z<dictcomp>.<listcomp>}   s    &&&qil&&&r   r6   )r   kvs      r   rP   rP   }   s-    
D
D
D31Q1&&A&&&
D
D
Dr   )__doc__statsmodels.compat.pythonr   numpynpr   aranger   r   r   r   r$   tree2dictzipr   update	paramsindsortedvaluesparamsnames	enumeraterS   itemsinddictr6   r   r   <module>rf      sr    - , , , , ,    	
1!uWWWoqc" yry||^	
  & ffTll    
  6 
1!uWWWoqc"	C9C:&???+
 C5\	 	33Zq		2233344 DsBRcJJ K K K $ % % % ggenn    
oo$
	g	
 	& f??!1!1!3!3???@@ A@;)?)?@@@	 E
D)//2C2C
D
D
D r   