
    Vfd                        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 ed. e                                D                                 Z ed/  ee          D                       Z e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      Mlib/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&      22rr222222r   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	/ 22T22233	!4	BBB 	!774== 	
tY///r   topB1ar   B2B21cdB22)efgB3hc                     g | ]}|S  r7   )r    is     r   
<listcomp>r9   T   s    333Aa333r   abcdefghi  d            i,  )r)   r*   r,   r-   r0   r4   z
 tree with dictionary dataconstapconstbconst2x2)r?   r@   timex22)conster@   hince)consttr@   hincfhincg)consthr@   r5   )r*   r+   r   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r)   c                     g | ]	}|D ]}|
S r7   r7   )r    jr8   s      r   r9   r9   w   s%    CCCCCA!CCCCr   c              #   $   K   | ]\  }}||fV  d S r   r7   )r    idxr'   s      r   r"   r"   z   s*      FF#d$FFFFFFr   c              #   8   K   | ]\  }}|d  |D             fV  dS )c                 (    g | ]}t           |         S r7   )	paramsidx)r    rM   s     r   r9   z<genexpr>.<listcomp>}   s    +++A9Q<+++r   Nr7   )r    kvs      r   r"   r"   }   s:      JJ1+++++,JJJJJJr   )__doc__statsmodels.compat.pythonr   numpynpr   aranger   r   r   r   r%   tree2dictzipr   update	paramsindsortedsetvaluesparamsnames	enumeraterR   itemsinddictr7   r   r   <module>rf      s    - , , , , ,    	
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	
 	& fSSCCY%5%5%7%7CCCDDEE DFFyy/E/EFFFFF	 $JJ	8I8IJJJ
J
J r   