7z'`$?$폴function p = forecast(d,Y,X); % Function computes predicted values of probabilities of the outcome % for specified values of the coefficients and given data % % Given function is only slightly modified function probit_like.m used to % compute log-likelihood function for the probit by D.Phaneuf. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Inputs take the form: % d: (k+s)x1 vector of parameters to be estimated, where the first k % parameters are for the utility function and the last s parameters % are for a specific var/cov matrix. % Y: nxj matrix of observed choices, where y(n,j) = 1 if % alterntive j was chosen by person n. % X: nxkj matrix containing the explanatory variables, where X(:,1:j) % contains the first varibable, X(:,j+1,2j) contains the second % variable, X(:,2j+1,3j) contains the third variable... % % Outputs take the form: % p: 1xj predicted probabilities values %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % establish dimensions for model [n j] = size(Y); [n jk] = size(X); k = jk/j; b = d(1:k); % kx1 vector of utility parameters q = d(k+1:end); % sx1 vector of var/cov parameters [junk choice] = max(Y'); choice = choice'; % Set values for GHK simulation R = 100; seed = 142; % Set up jxj covariance matrix omega from components q % This section of code is application-specific % Note: % -currently set for one-param var/cov matrix L=zeros(j,j); L(2,2)=1; L(3,2)=q(1); L(3,3)=q(2); L(4,2)=q(3); L(4,3)=q(4); L(4,4)=q(5); omega=L*L'; % set up collection of M-matrices need for transformations into utility % differences and var/cov for error differences. m = eye(j-1); add = -ones(j-1,1); M = [add m]; MM = M(:); t = 2; while t < j+1 ; M = [m(:,1:t-1) add m(:,t:end)]; t = t + 1; MM = [MM M(:)]; end; % construct nxj matrix of representative utilities h = 1; V = zeros(n,j); while h < k+1; V = V + b(h)* X(:,(h-1)*j+1:h*j); h = h + 1; end; % simulate each probability via loop over n people % at each pass through the loop provide correct utility difference and % error difference var/cov prob = zeros(n,j); z = 1; rand('state',seed); errors = rand(n,R*(j-1)); % the only changed part (comparing to the initial probit_like.m function) for i=1:j while z < n + 1; M = reshape(MM(:,i),j-1,j); upper = -M*V(z,:)'; sigma = M*omega*M'; unif = reshape(errors(z,:),R,j-1); prob(z,i) = GHK(zeros(j-1,1), sigma, unif, upper); z = z + 1; end; z=1; end; p=mean(prob); % ghk.m: calculates probability for GHK simulator % %INPUTS: % mu : means of the normal pdf, [kx1] % sigma : covariance matrix for the Normal pdf, [kxk] % unif : matrix of random draws from Standard Uniform, [Rxk] % upperr : upper bounds for the interation, [kx1] % % %OUTPUT: % P : simulated probability function P = ghk(mu,sigma,unif,upperr,varargin); [R,L]=size(unif); % number of repetitions k=1; % current dimension c=1; % current index for conditioning marg=normcdf(upperr(1),mu(1),sqrt(sigma(1,1))); % get marginal pdf condd=norminv(unif(:,1)*marg,mu(1),sqrt(sigma(1,1))); % draw from truncated cond. normal P=marg; % compute probability for the given dimensrion while k>AozC5ZY$V̀߿٪L)ЗrT/GIP@OrAWǧXĂ#@>ΊI& K3_g7)8/}2qbZc[`E{)y4C;SZ* ~vK8W8I2GO k r`+凎Ҟjϯ "Asv%E=Yq `a *VTY{ep&) Z o4InR/Q@Iۥ,%kl9q'Os-[ekH߫޼"CI /%|&rV,VV"Ȼ@QM(u7DTH^L>MBܴftc|RGs<ӬgA|~j4%jQ]V>D Q eCdF,wU;dAO[m$/Tp?44W:AQ~p>q{ f>e=qg@th2'_E~nC>ئ.}{z)o q/tSBocR|\*͓ I|_N5M9g#GϦP2O]ֿ$kcHYz?[tjf&enү%V3a@XiH-0$uxc*Oi{8o 1;{H%oq77t z1\q9E^C'Op>ƝGX4EH=Z\I&ԃ1&wU࿫),}({Q"H(q ~QWI~D=v>Y6|~;RhFN t{]a`EKH( &[ bqs*ܢ`]ST+ŹO^0g߲YP N<bOpNPߡĒQ0U]l y­HZhk@_n"7NPJ'a_otEVa+%NRI<1gFP['}IQ%/:%)</6Lߨ rw1!U?g_#h~[@g#V$|w=D"_@Po^LƇ8(nPޭz8Ļas:;L1X %#6+ Njj&ztN "uYީ?[n"SiM` Yw`G-"3ACH;Wf{FpV[)z5 gUjM3_e\CRuz ~Mq+KS Iä%囯+*3vP+ sN"6N>? /u\ u$nY))%gbn]?L!u~l03saZe/2/dj^>q2"e\( J(kA_i]{$@:_,௴Y1i|>6 {PY/ X5GnrT蚆~,yɱсQMa픥pȾW"}dx7=Dpbȫ _("yj}Co7.A{"ϥ-򉃤n#zEb[$n4 ϝt'QȯO"au7߸MgZ"/SM ~Kl. vZ릁Ud]i#*IQH'8 X߅y0k2SG 7b9jY>c,îvJҎ|ה3%LRI"C-g]K<7߳CzqR)2uT^ HI~={-_H~g^c\#sQEV$(C~wYH&OE'ued?ݪ5TROF[,2ckߐ>?rdMYWIO-7ۨ$kϭޑeۻ5@J kڸ&O:\AGJQvv!UF-vǧ񝿥$L`[r,oCˤMsa Tma{ gSUz)},gE,ʜAvG}"8;^y߆GoOqyD*&W4UC[L̢ڛyByvΊ:ok>_ӖIg*ԗղ,]˵Wxi4`EÝ.QX(k, Rz2!K~-ͳ}/50FUFGQ٠r/~'y❤M/{z? "/T yOaoQ #s(?)FD~xB7Ȟ`)%킥#FxO+ypvz6+GomB4oC_>Z}mE4~FP>HZ xiXۦNlܛTI`c\Tղ80p>ӓ"BkF+nװ ٞ>4׋N\( 1g$Z'(cP# #"ߤ,jأ92'kʊۻ)"v)Nk=])vdzӡݸ&sivI< ノפgۄ2F*O)u'PZ9&>dnt׉}w Eݟxqb~{jK㭪ئ|!æH6FQ{;2rC3]Oo1KK,ҦY?l*{kbyRTOc~"^"XdNGJO,1q^L;',`ƆOT3f08jl7Z`eF߽CfncFD(\% P:ZVx%Ԗ Շ32e>Ρ{zBgtU_Kn e)spџyx\GM zF;ˎPqhٞaoO[mo~(n`i :j;<3AFU/ @o iԢ\7RېRI0WzS3,sFr}8(?u&웖z&[“) &4Sa<*"D?pr qJ>TJlԬbԣ(y |8_J9A{R4;4 }|&Ɗ;@{6ѰӠZWlg2ҳnd”zsҟc&3)g=bVwW$21iޠiңGRv #ms ǐ?M+z{ea>E'a|3W}C6+HŗS0oO1]v{:.{u/EUPܺ'Hs_|#۞8d yLIԉbbv 2bi9x$}\騌%h핯Ms/HLr|z*6"?1|9cQINɫ}W$:`oՏK l9o:,*XK۹; thUp4߅ȏ@}obobgr Ol] WlfC;ӹ,~sxm:C;&8Cw-UF3[raN7c*ѳ\x_WN ,npީ #+:@n MtlcSȻt{ʪK ?!y(S&>52') MaU+{9^9ؑyhM||r5a#mPKبp̞ܮaPM>CT0BL5߻ 9ts乭5&aFw)۽QYGaNnLdþ|b9,]Q wI ۋ38Ebq0!+>"}oqa{hCd]4^L\zpF6 |L75]s^lj .a[`saOI+l.A= U>x%A1e^XQY4aQl@ Pɝ{p6(b9?q JS1p.I{yrw;+TPVX8= |O<&73pNd5.$ԃ9XIB޷ةỚN5}B?T &^ !參^҉YZJP\!Q,8Ns>їx.<1I>cgJ}?T購xPD>WBH|NӏKiفĎؠUI{l}0/5O撦k+}Xgڒo@Ht'{~e}7AbϮ :ˆD>E3PɎ,ݹĹD/m'År$T6>YDbϏ5%kQ|!{,R}F>wK_)e+V1_붑h?uSg^cJUω;rl#~dGWa-M"?UO:6KL^1w}__Tq*w&R==L&$Xw<6vKB" Гxi( ))J%T4(IzʕR*tP*d9r8Splm\(b VN+v?f좣zV4E>}{L+' ֶ䍸yMl.FMsz+'n^c zIwOrٰ1͂b~& W&\5; ޸_c.x֩VMةE=M5½fhTAZ*᫟ uʻ_w~䷽bWs13;\='7jY?mDؗxi,4% bˏT/W /ЅM+"NNB[Clj[S~ŐRqp[^+Mv vU#'j/on ?9zLp^a -:,9筆+!w\NrO1pDɥ+oWJ@/x?sa q -o)+s\$5t|֟9LUԩ#znԒ}bBkoFed?wm8V-ݩե>Kak@^:2O ,¹G6_Th._-? ]?;}߁/k/ʫTOr'F> j?_{ݧrOmӀqȟ?)Y6>ɼ!ݒ຦FiڐmHfy3COR>S?ۗb?2KAW, ~;` ?s@]@~A8S!ם$>4dѦW+؂ H~8?pͼ5l Aox'R\cGߪy- k3q{gLi)=p<}\9m˲ !C%qWu!mO,ϊңybTL:E5ѵ&cZ)/ن{<G_zgoRZK}X.]C bnHq"=:qؑw>MA'Go{f$4qPFhgjCږWcQ,U}w3)R#7i?JvZinok<^濃߷gnU|]KUV3 |#eebeYS8V},%ٞuUa{.ML6:\xҴrȲ`߷, g|ҀKMDy+%|͙$ס#-|lz.3=ƋmH3bw-䖿QDj-蟋t{=䔏 ]9^'0\ꅠ 9[\ ۹'z3/oiMҽ@ni8DkI/ɓx= DN'!q=I8?4KZX8 ;dWuY2o8 lX<WӆRz ]қߋ|~fdENJ`i{frU ߾ TyqǓX#oL,FMwGLoݦ y &u߾17Rof&d1{<Gs ‚7 .[4޵i/"-P~O`Αbs{?"-||M'8{U5,I;UZIQ_Wu}ִb] 6BQa]*Mћ 1RsH\l7J>{H=ƼQ~6Fq4Q_J6J .-5XىKcE.wqPQw)|Ӛ|)/g_SOYp-|އdO߬{>!/!2Fk>ݽ[aOR]᧰{TN[YqF7ⷢvm4g*[_ً6R_[,hNVO16D2gE6Qj!ϋ{xa5N\ָAUz+99dk>fGۭ?T~+K).|\8ծ#k& 1n"N*_ZxŽ[)`=G}8WۙAT%ƾ Y}Avܿzm >GtJS?AӁ?W]D Uv2?蛅֪[ƾ귅^{6w\/˄'F_&]ؿa'z) ?ռ@=i@o60k9zQuܟ)5f;ܿTgΛO#+Vb l*½vKЍ{X$7n7Cd@WE lnBù~ŸXkQ~)k̑]7yW5c*ل]-Z4?jBcyjs1Ӄ]()" uk7"kep _>g-DnyzOA:Wb\~Wh~sy ow2nNDw?[%Bˁ{L%ޅ=7NJٹ f Elk-I|\:K^DuʗjG֣5u՝_q\)?2_zAmS^ ~}{x!br*]~g}  +t8b\rݿ;gH,e/9]ߺw{P< `svSEϓ(76.C[2|2xq찜  pW2BI iRl/٢ޢgw ~UrJ sʩJLjQrlׯwe[f_\ւˊ1ߝ& -¼F\Wwwx9gڗK1 G)g0_uJ}//@{\{ZbkK.boiy𢘭G2΀7O:BOۑBkT*Y{2;d+_8!cK;ngp*(7 umO%9(3*W4J`@RѹRc~SeeXՆ~ȳp~B}{6kMx(MpqDGU\'#aCy6ց1:gB'gI%FU G¬O_!gc.P}E cC}6̏Ca݈2+ɲ 6݁>Bz&g&N>ZVB;u~<~\.ЭTnI&1KOu{F*V+@bϮl&Ngy`Pd)I{ jEMԟ/]Հt,QwuQwߓgו Ct ?9a>SRA~gr?[ L^OnJ?_uqs=]'Cxi.;Wy~t>O!nLd97 `Ε; ,P]RDs#g\~f_<9O7mhaq;¹TIS~v>M=牿~g>=z VajplrF.`?}DtsIHDQtacCA8O[ ,r筳f@*])6jcKL@QH޽~~xt*МalSe`^7coq>/6@ۇ y:,E񡳝Ϸ21ژDlG_n^>;_z.С~VĥhOvo56z|Gb};Ze=D4M'Vdw.jSqoο& ԑet)Ogxvr-+wmMߒ/8|m78T~ay03r`7̏UJzԼ6r "Pߋ3{#ʍ}l1>]2>w3.F:]z4oͭ/4ڵw}ɨE?wQ~Gw !~m6:s2r&u~dv,9aKU$Yw<w={ %! QU6i(I2[T_!4J7(%JQ2*+!Ҳ;~1ZD{Hh%wo7A^d~ߥ;?C r'`_Hvc%Z/]%FTKTlFYCMkй?aWHYTʴ~ޞ {N_{o͖9,(B-aiӌSh%Qog6L} 8Bz#\Kڄ}u{"Ȯ!9^^u7${Ny_GH_aW`H~ pi[$lDxkIJ_UphQc/@E\Oj5s;+ri"4/CA^iAocaR&#cp seR!2d\-|)I7tqj:p=wgGrfۆ蚣Waĭ&Pf?;8xUf.Ցv{KT7G* &gӊH{}^ݥ&Ѯ.'ru=;#O;vyM@9[_fNR>8QúpeqZ?kW,^̇8JXOK KyE3i}m!_pr:x9 ~|q"bAQvYQsy /׈׫yLNS1?oCyҫ`&? UU}e4FIkŽD܃Q)`5C7O>J mc 7O `!,j7W"}IԷ4xjBZۄ8,B3׵cMFߗk{'eg/# |U̪KB!1Ѫ~cXQAM#y1N_a,kh6㜥݄e^}GTT/2@L)h† TMLn?8CFq-IWNdF(xv9N̵K!~oTA뺚Iz8_dH.{d<#ϺI>Y} >^ hB5&o bꅧo/9%/f>1^~U?7*0yS~sP~/$Hz\Fl!Xη[>Cg(S ozE%XU]ɍ+9[`$DzO}oKYdx]ҕ!A5M|;'rئ:|EwF8ήxW1< _*C߽/!Nrv-¢SXѾחxH{dq?,.-MS*Ȓ9ʵrt񎓡 uݿxi"ycr,刯;~8fΖ$̞{Ut.-DrW~d2Iy'>yIBwJAB\B~nH=J>TmoYWKK ss(3Q?ȾS.[=ꕯ,k^}gJq|``6|\&"ve~ٝ;gCqYcT}r,u2*wNlڭؒRUZ]=P]6KegY.nw''}_mn9ȷ7\+GT}E7wPSEg۹_ƛ Yd9͝lϐ/NڡH27GK^:2dz9l_"d{Q !ܺO?+"y)?Gh^X;OP=p0!/a3һ~8|$,&DuO^ ccԑT>q]h`E ! t%5H~PGP=M \ CfA#mA֛^ڱy>&&{wkA9 cTZR\߾7mk"dbf3d,!tB$u֎%y>W7-^+9俑~YvRP;4[x(qsɤps9^. -F*k/~:˱2\4{=o^umjQ6LGSs9y+oH!ZK!䩳Ȏ _Þa%oK%gNh<{Ţ DGhUb,9y.}Gם^ssg/|YXEr;CO|݅n&svgkf"/`LQg;{q_5p^lD~NO[o!aHǵwX!ֻl'bq/E;̧,?Bu?GtI#;ʼnsqU[=*" zw=|f5՚qD֥jmLGmb#E;)y[84dD>x OIEC-+\>NxyxH1WVxU{c%cipgtcVAԿS{NCc&].,175nggEUU2D3;lu hE`)r7rs`/y66Vc_(_Όso1_9+@~+h30n=lUPWץj~`3Exw/t-Jӹi7p2:a@} 򓫞 ?+co{y|X]ǩ/vUFnbFD>"# u,<+{z>d*,enNiF]Y576O[(t`F+&o.K=0s=q^?;_yٲKs~Pz1恎bvzȭ:[5Sϵf3pOx~h4Kfp"h5A*;E~DTMqğV\KO ~:fڋϳN Es8ll}W+aVYV~G<7@v2]ޒ@asޟ\!ƃ_I]ȟL+ Zg!Qeee'Od||4DлLT |j"Zg)/27?{k%q}-keZ'soo=Yqq7R$AeV;}C8~{sS &I%ab>#_B]o>9<~ ]D^S5␗  =]nX'35_wIwLD )".7_N³!O ֲ숃 4'Yu8B0N)$c~ ͽd(Fu% punq*ʧQ]Z%@'(Ce}o|KNY4y#TB/p}|ȷ3lݷpr1گdރ+P?6x2+]| \|&ϨG[S_뼥}W 5.H}4nүYR\ҬuqT`KjU"?a꽤>ϥ=Q0l-΀YxJC\m/B$ڭv,&y]#5_`̟u:z9;S_ɝ&*x_ uքa=ލч !}&}ŊAMpsu2(ݲy19x\anȐԷ1=6ޢ8'ZzV5Efy:RˆCџ̧ͻ}hѹ_ ui7>?tFeֽwM% wLE|=[1*ri*& ƨOѱt:]xާ6M} ,C?w{ŽۈKnl 'ٳ_ԑZnR1M &״9qd9q)s*dNFkpPpmqѡ}< x e ،4{t~:A_x\T;E GOmla}{<+/oV'\y`+vSfu">i~N'_{ >:Eu-W嗭IZmEzd1J9 {^wmWOit* փv!Cj 7W>GkrkL?%h<1w_Ip}zZ>WOwFoG fTu.eZNg)TQOԓ?_i0gd/ yxf.A h?Ȯ[w/Т;L\<:C#Gu]6&t1]#q)Z/Ua_G~ݙeAdG~rvy\+3qpɵg|<ǻS)1,E.%x]O qh|(OlB*}2]}Go=˜Kg$PƼvNƈ},B}_c]=1$e ޥ}MWpP 0x2u:_\>2>A#1__9;86ai!%Ѽu@Y袦/OwعgķPp :RgI_of+8z\g]!/G(^v쑵Xtj'KfL =ZrǴc:d q45tZ} U6r6vNn잋uvY=$v&3j?<]D٬f=KtIY~\Pn* >D<*WC~h(ށJc%hLBxcmLnLvc8=Z~J(?94pF*TB6d F)l./K{yo[חI~ Yt˥P'BΘ.x56kkd|\G>s8ޯP9ޗBf]zSI1za]k[O#1@%&xrQ7u ak5~7g0LW|#ޛs¤Q™-L+~|VEaB,6.,gPO=1cպփ_c޸v3)GkW})˱3}l} ɓX]ޭW8_W,$mH8q{G]7;^L)t( ;}ýxaI@ #"9JtNgq'ypzWs論:="8\(ҺK֡z|9E {D!>I&-~aCvFw J>u(Eh{%c_E{k'n{A uS Me4[{ai*/7A! 1־>}duh4Ip4C<kqQ&XfgEŸ_pѿ5=5첷s,E67o1+txMjW~Z <þTN G|W Wx?>UzQVZ Gl.X *|*}pZoEBI3ol?+Jk&L&*Q Y dyeO1=oě {w=~6v]5mtpZs2}tg59>EngGBn•TeE`Eo7!3#=[PA}P$])qvm35Ѵ~xU^.VO[Ly>eRF1/y;GN"_jQk/D %ށ:8Yu[<-ȯ\^k~wwӧOq$m-2B}*[v﫚;كGY75 3ւ?= :'> hmw^ o VE)P*|PяGo>5s4:>xx׃"h"6"L~Y'@ԃ}3>nv^<ݧ0;Y!kW'9+wnsk?iը'˓]G5V19Z!W1*.:tN`SXl:?и_8hK^c}0HAl&OE{p x<[9i7s&ǼC*u _wXZ4!ޜ>WVO>lc.}Qos/.{ 6}ܶA$ ;?x ]j:5RǷ9N=+2F*{Mx5obą~>qccl16ccl16gXA 0ٿA>5m۶m4\ ~7`!0ѿ .Ip ڶm۶  ~7`A #xX0۶m۶cIxTQV1K|嗇 {9;-!|/sMy9N c 1C9|M?av*g О1boC{aUBIZw_ǿ E=%t=Xi1qMS.`e-F؄hE.ަ v-PI囋bϴl%饽aIКjgj%wOqҊRz6}Ωb3z+*FN3M~ʶ4RΛՋ\,d;LѤ)A6./3}W0rwt"'3Ոw-25MdzxQr@WXKph!М(j@~ ˯Ѓ! ڽ4+H1/^K1R2tL0%Ohge,/.ܚt'!a?%