<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Marginal standardization of predicted probabilities for multinomial logit in Statistical Procedures</title>
    <link>https://communities.sas.com/t5/Statistical-Procedures/Marginal-standardization-of-predicted-probabilities-for/m-p/886968#M43881</link>
    <description>&lt;P&gt;Below is the macro, apologies for the unfortunate formatting.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;**Data created from Hanley and Shapiro (1994 Journal of Statistical Education 2(1) );&lt;BR /&gt;data Flies;&lt;BR /&gt;input ID treatment thorax death40;&lt;BR /&gt;cards;&lt;BR /&gt;1 0 0.64 1&lt;BR /&gt;2 0 0.68 1&lt;BR /&gt;3 0 0.68 0&lt;BR /&gt;4 0 0.72 0&lt;BR /&gt;5 0 0.72 0&lt;BR /&gt;6 0 0.76 1&lt;BR /&gt;7 0 0.76 0&lt;BR /&gt;8 0 0.76 0&lt;BR /&gt;9 0 0.76 0&lt;BR /&gt;10 0 0.76 0&lt;BR /&gt;11 0 0.80 0&lt;BR /&gt;12 0 0.80 0&lt;BR /&gt;13 0 0.80 0&lt;BR /&gt;14 0 0.84 0&lt;BR /&gt;15 0 0.84 0&lt;BR /&gt;16 0 0.84 0&lt;BR /&gt;17 0 0.84 0&lt;BR /&gt;18 0 0.84 0&lt;BR /&gt;19 0 0.84 0&lt;BR /&gt;20 0 0.88 0&lt;BR /&gt;21 0 0.88 0&lt;BR /&gt;22 0 0.92 0&lt;BR /&gt;23 0 0.92 0&lt;BR /&gt;24 0 0.92 0&lt;BR /&gt;25 0 0.94 0&lt;BR /&gt;26 1 0.64 1&lt;BR /&gt;27 1 0.64 1&lt;BR /&gt;28 1 0.68 1&lt;BR /&gt;29 1 0.72 1&lt;BR /&gt;30 1 0.72 1&lt;BR /&gt;31 1 0.74 1&lt;BR /&gt;32 1 0.76 1&lt;BR /&gt;33 1 0.76 0&lt;BR /&gt;34 1 0.76 0&lt;BR /&gt;35 1 0.78 1&lt;BR /&gt;36 1 0.80 1&lt;BR /&gt;37 1 0.80 1&lt;BR /&gt;38 1 0.82 1&lt;BR /&gt;39 1 0.82 0&lt;BR /&gt;40 1 0.84 1&lt;BR /&gt;41 1 0.84 1&lt;BR /&gt;42 1 0.84 0&lt;BR /&gt;43 1 0.84 0&lt;BR /&gt;44 1 0.88 0&lt;BR /&gt;45 1 0.88 0&lt;BR /&gt;46 1 0.88 0&lt;BR /&gt;47 1 0.88 0&lt;BR /&gt;48 1 0.88 0&lt;BR /&gt;49 1 0.88 0&lt;BR /&gt;50 1 0.92 0&lt;BR /&gt;;&lt;BR /&gt;****************************************************************************&lt;BR /&gt;* Note: Always remember to change data set name as well as variable names *&lt;BR /&gt;****************************************************************************;&lt;BR /&gt;%CounterFactual(data =Flies, /*data set to be analyzed*/&lt;BR /&gt;yvar = death40, /*outcome variabe*/&lt;BR /&gt;trt = treatment, /* Exposure or treatment variable */&lt;BR /&gt;xvar = thorax, /* independent variables to be adjusted */&lt;BR /&gt;link = logit, /* link function used by PROC GENMOD: logit, probit, cloglog */&lt;BR /&gt;alpha=0.05); /* alpha level for confidence interval, default is 0.05*/&lt;BR /&gt;%macro CounterFactual(data=, /*data set to be analyzed*/&lt;BR /&gt;yvar =, /*outcome variabe*/&lt;BR /&gt;trt =, /* Exposure or treatment variable */&lt;BR /&gt;xvar =, /* independent variables to be adjusted */&lt;BR /&gt;link =, /* link function used in PROC GENMOD: logit, probit, cloglog */&lt;BR /&gt;alpha=0.05 /* alpah level for confidence interval, default is 0.05*/&lt;BR /&gt;);&lt;BR /&gt;%if &amp;amp;link= probit %then %let dist=’normal’;&lt;BR /&gt;%else %if &amp;amp;link=logit %then %let dist=’logistic’;&lt;BR /&gt;%else %if &amp;amp;link=cloglog %then %let dist=’extreme’;&lt;BR /&gt;proc genmod desc data= &amp;amp;data;&lt;BR /&gt;model &amp;amp;yvar = &amp;amp;trt &amp;amp;xvar/covb dist=bin link= &amp;amp;link;&lt;BR /&gt;ods output ParameterEstimates=est(keep=estimate)&lt;BR /&gt;covB=cov(drop=rowname);&lt;BR /&gt;proc iml;&lt;BR /&gt;start CI4P(Pest, Var, n);&lt;BR /&gt;%let z=probit(1-&amp;amp;alpha/2);&lt;BR /&gt;*Wald;&lt;BR /&gt;W_L = pest - &amp;amp;z*sqrt(var) ;&lt;BR /&gt;W_U = pest + &amp;amp;z*sqrt(var) ;&lt;BR /&gt;*log, usd by Flanders and Rhodes (1987 J Chron Dis 40: 697-704);&lt;BR /&gt;lOG_L = pest*exp(- &amp;amp;z*sqrt(var)/(pest));&lt;BR /&gt;log_U = pest*exp(+ &amp;amp;Z*sqrt(var)/(pest));&lt;BR /&gt;*logit;&lt;BR /&gt;varlgt = var/( pest*(1-pest))**2 ;&lt;BR /&gt;l=log(pest/(1-pest)) - &amp;amp;z*sqrt(varlgt);&lt;BR /&gt;lgt_L = exp(l)/(1+exp(l));&lt;BR /&gt;u=log(pest/(1-pest)) + &amp;amp;z*sqrt(varlgt);&lt;BR /&gt;lgt_U = exp(u)/(1+exp(u));&lt;BR /&gt;*Wilson, based on Newcombe (2001 Am Stat 55: 200-202);&lt;BR /&gt;ll=log(pest/(1-pest)) - 2*arsinh( &amp;amp;z/2 * sqrt(varlgt));&lt;BR /&gt;Wln_L = exp(ll)/(1+exp(ll));&lt;BR /&gt;uu=log(pest/(1-pest)) + 2*arsinh( &amp;amp;z/2 * sqrt(varlgt));&lt;BR /&gt;Wln_U = exp(uu)/(1+exp(uu));&lt;BR /&gt;return(pest||W_L||W_U||log_L||log_U||lgt_L||lgt_U||wln_L||wln_U);&lt;BR /&gt;finish CI4P;&lt;BR /&gt;start MOVER(p1, l1, u1, p2, l2, u2, corr);&lt;BR /&gt;**Baded on Zou (2008 Am J Epidemiol 162: 212-224);&lt;BR /&gt;point = p1-p2;&lt;BR /&gt;L = p1- p2 - sqrt(max(0, (p1-l1)**2 -2*corr*(p1-l1)*(u2-p2) + (u2-p2)**2));&lt;BR /&gt;U = p1- p2 + sqrt(max(0, (u1-p1)**2 -2*corr*(u1-p1)*(p2-l2) + (p2-l2)**2));&lt;BR /&gt;return(point||L||U);&lt;BR /&gt;finish MOVER;&lt;BR /&gt;**Bring in data for prediction;&lt;BR /&gt;use &amp;amp;data;&lt;BR /&gt;read all var{&amp;amp;xvar} into X;&lt;BR /&gt;n = nrow(X);&lt;BR /&gt;m = ncol(X);&lt;BR /&gt;X1 = J(n,2,1)||X;&lt;BR /&gt;X0 = J(n,1,1)||J(n,1,0)||X;&lt;BR /&gt;use cov;&lt;BR /&gt;read all var _num_ into V;&lt;BR /&gt;use est;&lt;BR /&gt;read all var _num_ into beta;&lt;BR /&gt;beta=beta[1:(m+2)];&lt;BR /&gt;if &amp;amp;dist = ’extreme’ then do;&lt;BR /&gt;p_1 = 1-exp(-exp(X1 * beta));&lt;BR /&gt;p_0 = 1-exp(-exp(X0 * beta));&lt;BR /&gt;piece1 = exp(X1 * beta -exp(X1 * beta) )# X1;&lt;BR /&gt;piece0 = exp(X0 * beta -exp(X0 * beta) )# X0;&lt;BR /&gt;end;&lt;BR /&gt;else do;&lt;BR /&gt;p_1 = cdf(&amp;amp;dist, X1 * beta); **predicted prob, if exposed;&lt;BR /&gt;p_0 = cdf(&amp;amp;dist, X0 * beta); **predicted prob, if unexposed;&lt;BR /&gt;piece1 = pdf(&amp;amp;dist, X1 * beta)# X1;&lt;BR /&gt;piece0 = pdf(&amp;amp;dist, X0 * beta)# X0;&lt;BR /&gt;end;&lt;BR /&gt;p1est = sum(p_1)/n;&lt;BR /&gt;p0est = sum(p_0)/n;&lt;BR /&gt;V1=0; V0=0; COV =0;&lt;BR /&gt;do i =1 to n;&lt;BR /&gt;do j=1 to n;&lt;BR /&gt;Xi1 = X1[i,]; Xj1 = X1[j,];&lt;BR /&gt;Xi0 = X0[i,]; Xj0 = X0[j,];&lt;BR /&gt;if &amp;amp;dist = ’extreme’ then do;&lt;BR /&gt;V1 = V1 + 1/N**2 * exp(Xi1 * beta - exp(Xi1 * beta) )*&lt;BR /&gt;exp(Xj1 * beta - exp(Xj1 * beta) )* (xi1*V*T(xj1));&lt;BR /&gt;V0 = V0 + 1/N**2 * exp(Xi0 * beta - exp(Xi0 * beta) )*&lt;BR /&gt;exp(Xj0 * beta - exp(Xj0 * beta) )* (xi0*V*T(xj0));&lt;BR /&gt;COV = cov + 1/N**2 * exp(Xi1 * beta - exp(Xi1 * beta) )*&lt;BR /&gt;exp(Xj0 * beta - exp(Xj0 * beta) )* (xi1*V*T(xj0));&lt;BR /&gt;end;&lt;BR /&gt;else do;&lt;BR /&gt;V1 = V1 + 1/N**2*pdf(&amp;amp;dist, xi1* beta) *&lt;BR /&gt;pdf(&amp;amp;dist, xj1* beta) * (xi1*V*T(xj1));&lt;BR /&gt;V0 = V0 + 1/N**2*pdf(&amp;amp;dist, xi0* beta) *&lt;BR /&gt;pdf(&amp;amp;dist, xj0* beta) * (xi0*V*T(xj0));&lt;BR /&gt;COV = COV + 1/N**2* pdf(&amp;amp;dist, xi1* beta)*&lt;BR /&gt;pdf(&amp;amp;dist, xj0* beta) * (xi1*V*T(xj0));&lt;BR /&gt;end;&lt;BR /&gt;end; *END J;&lt;BR /&gt;end; *END I;&lt;BR /&gt;ll = p1est-p0est - &amp;amp;z*sqrt(v1+v0-2*cov);&lt;BR /&gt;uu = p1est-p0est + &amp;amp;z*sqrt(v1+v0-2*cov);&lt;BR /&gt;group1 = CI4P(p1est, V1, n); **CI for exposed risk;&lt;BR /&gt;group0 = CI4P(p0est, V0, n); **CI for unexposed risk;&lt;BR /&gt;print ’==== CI for risks ===’;&lt;BR /&gt;name = {estimate Wald_L wald_U log_L log_U lgt_L lgt_U Wlsn_L Wlsn_U};&lt;BR /&gt;print group1[colname=name],&lt;BR /&gt;group0[colname=name];&lt;BR /&gt;**Confidenc einterval for difference;&lt;BR /&gt;rho = COV/sqrt(V1*V0);&lt;BR /&gt;dWald = mover(group1[1], group1[2], group1[3], group0[1], group0[2], group0[3], rho);&lt;BR /&gt;dlgt = mover(group1[1], group1[6], group1[7], group0[1], group0[6], group0[7], rho);&lt;BR /&gt;dWln = mover(group1[1], group1[8], group1[9], group0[1], group0[8], group0[9], rho);&lt;BR /&gt;**The following is based on Zou and Donner (2004 Controlled Clin Trials 25: 3-12);&lt;BR /&gt;vd = V1 + V0 - 2*cov;&lt;BR /&gt;d = p1est - p0est;&lt;BR /&gt;F_LL = log( (1+ d)/(1-d) ) - &amp;amp;z *2*sqrt(vd)/(1- d**2);&lt;BR /&gt;F_L = (exp(F_LL) - 1)/(exp(F_LL) + 1);&lt;BR /&gt;F_Uu = log( (1+ d)/(1-d) ) + &amp;amp;z *2* sqrt(vd)/(1-d**2);&lt;BR /&gt;F_U = (exp(F_uu) - 1)/(exp(F_uu) + 1);&lt;BR /&gt;Fisher = d||F_L||F_U;&lt;BR /&gt;print ’===CI for difference==’;&lt;BR /&gt;print dwald, dlgt, dwln, Fisher;&lt;BR /&gt;** CI for Ratio;&lt;BR /&gt;**log-delta;&lt;BR /&gt;RRest = p1est/p0est;&lt;BR /&gt;var = V1/p1est**2 + V0/p0est**2 - 2 * cov/(p1est*p0est);&lt;BR /&gt;Lower = RRest*exp(-&amp;amp;z*sqrt(var));&lt;BR /&gt;Upper = RRest*exp(+&amp;amp;z*sqrt(var));&lt;BR /&gt;RlogDelta = RRest||lower||upper;&lt;BR /&gt;* Zou and Donner (2008 Stat Med 27: 1693-1702);&lt;BR /&gt;Rlgt = exp(mover(log(group1[1]), log(group1[6]), log(group1[7]),&lt;BR /&gt;log(group0[1]), log(group0[6]), log(group0[7]), rho));&lt;BR /&gt;RWln = exp(mover(log(group1[1]), log(group1[8]), log(group1[9]),&lt;BR /&gt;log(group0[1]), log(group0[8]), log(group0[9]), rho));&lt;BR /&gt;print ’=== CI for RR ===’;&lt;BR /&gt;print RlogDelta, Rlgt, Rwln;&lt;BR /&gt;quit;&lt;BR /&gt;%mend CounterFactual;&lt;/P&gt;</description>
    <pubDate>Sat, 29 Jul 2023 16:00:01 GMT</pubDate>
    <dc:creator>greesamu</dc:creator>
    <dc:date>2023-07-29T16:00:01Z</dc:date>
    <item>
      <title>Marginal standardization of predicted probabilities for multinomial logit</title>
      <link>https://communities.sas.com/t5/Statistical-Procedures/Marginal-standardization-of-predicted-probabilities-for/m-p/886967#M43880</link>
      <description>The following article provides a SAS macro for marginal standardization of predicted probabilities when performing binary logistic regression. I’m curious if it would work for multinomial logistic regression (with 4 categories of the outcome variable) or if it could be modified to do so. &lt;BR /&gt;&lt;BR /&gt;Assessment of risks by predicting counterfactuals&lt;BR /&gt;G Y Zou. Stat Med. 2009.</description>
      <pubDate>Sat, 29 Jul 2023 15:55:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Statistical-Procedures/Marginal-standardization-of-predicted-probabilities-for/m-p/886967#M43880</guid>
      <dc:creator>greesamu</dc:creator>
      <dc:date>2023-07-29T15:55:33Z</dc:date>
    </item>
    <item>
      <title>Re: Marginal standardization of predicted probabilities for multinomial logit</title>
      <link>https://communities.sas.com/t5/Statistical-Procedures/Marginal-standardization-of-predicted-probabilities-for/m-p/886968#M43881</link>
      <description>&lt;P&gt;Below is the macro, apologies for the unfortunate formatting.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;**Data created from Hanley and Shapiro (1994 Journal of Statistical Education 2(1) );&lt;BR /&gt;data Flies;&lt;BR /&gt;input ID treatment thorax death40;&lt;BR /&gt;cards;&lt;BR /&gt;1 0 0.64 1&lt;BR /&gt;2 0 0.68 1&lt;BR /&gt;3 0 0.68 0&lt;BR /&gt;4 0 0.72 0&lt;BR /&gt;5 0 0.72 0&lt;BR /&gt;6 0 0.76 1&lt;BR /&gt;7 0 0.76 0&lt;BR /&gt;8 0 0.76 0&lt;BR /&gt;9 0 0.76 0&lt;BR /&gt;10 0 0.76 0&lt;BR /&gt;11 0 0.80 0&lt;BR /&gt;12 0 0.80 0&lt;BR /&gt;13 0 0.80 0&lt;BR /&gt;14 0 0.84 0&lt;BR /&gt;15 0 0.84 0&lt;BR /&gt;16 0 0.84 0&lt;BR /&gt;17 0 0.84 0&lt;BR /&gt;18 0 0.84 0&lt;BR /&gt;19 0 0.84 0&lt;BR /&gt;20 0 0.88 0&lt;BR /&gt;21 0 0.88 0&lt;BR /&gt;22 0 0.92 0&lt;BR /&gt;23 0 0.92 0&lt;BR /&gt;24 0 0.92 0&lt;BR /&gt;25 0 0.94 0&lt;BR /&gt;26 1 0.64 1&lt;BR /&gt;27 1 0.64 1&lt;BR /&gt;28 1 0.68 1&lt;BR /&gt;29 1 0.72 1&lt;BR /&gt;30 1 0.72 1&lt;BR /&gt;31 1 0.74 1&lt;BR /&gt;32 1 0.76 1&lt;BR /&gt;33 1 0.76 0&lt;BR /&gt;34 1 0.76 0&lt;BR /&gt;35 1 0.78 1&lt;BR /&gt;36 1 0.80 1&lt;BR /&gt;37 1 0.80 1&lt;BR /&gt;38 1 0.82 1&lt;BR /&gt;39 1 0.82 0&lt;BR /&gt;40 1 0.84 1&lt;BR /&gt;41 1 0.84 1&lt;BR /&gt;42 1 0.84 0&lt;BR /&gt;43 1 0.84 0&lt;BR /&gt;44 1 0.88 0&lt;BR /&gt;45 1 0.88 0&lt;BR /&gt;46 1 0.88 0&lt;BR /&gt;47 1 0.88 0&lt;BR /&gt;48 1 0.88 0&lt;BR /&gt;49 1 0.88 0&lt;BR /&gt;50 1 0.92 0&lt;BR /&gt;;&lt;BR /&gt;****************************************************************************&lt;BR /&gt;* Note: Always remember to change data set name as well as variable names *&lt;BR /&gt;****************************************************************************;&lt;BR /&gt;%CounterFactual(data =Flies, /*data set to be analyzed*/&lt;BR /&gt;yvar = death40, /*outcome variabe*/&lt;BR /&gt;trt = treatment, /* Exposure or treatment variable */&lt;BR /&gt;xvar = thorax, /* independent variables to be adjusted */&lt;BR /&gt;link = logit, /* link function used by PROC GENMOD: logit, probit, cloglog */&lt;BR /&gt;alpha=0.05); /* alpha level for confidence interval, default is 0.05*/&lt;BR /&gt;%macro CounterFactual(data=, /*data set to be analyzed*/&lt;BR /&gt;yvar =, /*outcome variabe*/&lt;BR /&gt;trt =, /* Exposure or treatment variable */&lt;BR /&gt;xvar =, /* independent variables to be adjusted */&lt;BR /&gt;link =, /* link function used in PROC GENMOD: logit, probit, cloglog */&lt;BR /&gt;alpha=0.05 /* alpah level for confidence interval, default is 0.05*/&lt;BR /&gt;);&lt;BR /&gt;%if &amp;amp;link= probit %then %let dist=’normal’;&lt;BR /&gt;%else %if &amp;amp;link=logit %then %let dist=’logistic’;&lt;BR /&gt;%else %if &amp;amp;link=cloglog %then %let dist=’extreme’;&lt;BR /&gt;proc genmod desc data= &amp;amp;data;&lt;BR /&gt;model &amp;amp;yvar = &amp;amp;trt &amp;amp;xvar/covb dist=bin link= &amp;amp;link;&lt;BR /&gt;ods output ParameterEstimates=est(keep=estimate)&lt;BR /&gt;covB=cov(drop=rowname);&lt;BR /&gt;proc iml;&lt;BR /&gt;start CI4P(Pest, Var, n);&lt;BR /&gt;%let z=probit(1-&amp;amp;alpha/2);&lt;BR /&gt;*Wald;&lt;BR /&gt;W_L = pest - &amp;amp;z*sqrt(var) ;&lt;BR /&gt;W_U = pest + &amp;amp;z*sqrt(var) ;&lt;BR /&gt;*log, usd by Flanders and Rhodes (1987 J Chron Dis 40: 697-704);&lt;BR /&gt;lOG_L = pest*exp(- &amp;amp;z*sqrt(var)/(pest));&lt;BR /&gt;log_U = pest*exp(+ &amp;amp;Z*sqrt(var)/(pest));&lt;BR /&gt;*logit;&lt;BR /&gt;varlgt = var/( pest*(1-pest))**2 ;&lt;BR /&gt;l=log(pest/(1-pest)) - &amp;amp;z*sqrt(varlgt);&lt;BR /&gt;lgt_L = exp(l)/(1+exp(l));&lt;BR /&gt;u=log(pest/(1-pest)) + &amp;amp;z*sqrt(varlgt);&lt;BR /&gt;lgt_U = exp(u)/(1+exp(u));&lt;BR /&gt;*Wilson, based on Newcombe (2001 Am Stat 55: 200-202);&lt;BR /&gt;ll=log(pest/(1-pest)) - 2*arsinh( &amp;amp;z/2 * sqrt(varlgt));&lt;BR /&gt;Wln_L = exp(ll)/(1+exp(ll));&lt;BR /&gt;uu=log(pest/(1-pest)) + 2*arsinh( &amp;amp;z/2 * sqrt(varlgt));&lt;BR /&gt;Wln_U = exp(uu)/(1+exp(uu));&lt;BR /&gt;return(pest||W_L||W_U||log_L||log_U||lgt_L||lgt_U||wln_L||wln_U);&lt;BR /&gt;finish CI4P;&lt;BR /&gt;start MOVER(p1, l1, u1, p2, l2, u2, corr);&lt;BR /&gt;**Baded on Zou (2008 Am J Epidemiol 162: 212-224);&lt;BR /&gt;point = p1-p2;&lt;BR /&gt;L = p1- p2 - sqrt(max(0, (p1-l1)**2 -2*corr*(p1-l1)*(u2-p2) + (u2-p2)**2));&lt;BR /&gt;U = p1- p2 + sqrt(max(0, (u1-p1)**2 -2*corr*(u1-p1)*(p2-l2) + (p2-l2)**2));&lt;BR /&gt;return(point||L||U);&lt;BR /&gt;finish MOVER;&lt;BR /&gt;**Bring in data for prediction;&lt;BR /&gt;use &amp;amp;data;&lt;BR /&gt;read all var{&amp;amp;xvar} into X;&lt;BR /&gt;n = nrow(X);&lt;BR /&gt;m = ncol(X);&lt;BR /&gt;X1 = J(n,2,1)||X;&lt;BR /&gt;X0 = J(n,1,1)||J(n,1,0)||X;&lt;BR /&gt;use cov;&lt;BR /&gt;read all var _num_ into V;&lt;BR /&gt;use est;&lt;BR /&gt;read all var _num_ into beta;&lt;BR /&gt;beta=beta[1:(m+2)];&lt;BR /&gt;if &amp;amp;dist = ’extreme’ then do;&lt;BR /&gt;p_1 = 1-exp(-exp(X1 * beta));&lt;BR /&gt;p_0 = 1-exp(-exp(X0 * beta));&lt;BR /&gt;piece1 = exp(X1 * beta -exp(X1 * beta) )# X1;&lt;BR /&gt;piece0 = exp(X0 * beta -exp(X0 * beta) )# X0;&lt;BR /&gt;end;&lt;BR /&gt;else do;&lt;BR /&gt;p_1 = cdf(&amp;amp;dist, X1 * beta); **predicted prob, if exposed;&lt;BR /&gt;p_0 = cdf(&amp;amp;dist, X0 * beta); **predicted prob, if unexposed;&lt;BR /&gt;piece1 = pdf(&amp;amp;dist, X1 * beta)# X1;&lt;BR /&gt;piece0 = pdf(&amp;amp;dist, X0 * beta)# X0;&lt;BR /&gt;end;&lt;BR /&gt;p1est = sum(p_1)/n;&lt;BR /&gt;p0est = sum(p_0)/n;&lt;BR /&gt;V1=0; V0=0; COV =0;&lt;BR /&gt;do i =1 to n;&lt;BR /&gt;do j=1 to n;&lt;BR /&gt;Xi1 = X1[i,]; Xj1 = X1[j,];&lt;BR /&gt;Xi0 = X0[i,]; Xj0 = X0[j,];&lt;BR /&gt;if &amp;amp;dist = ’extreme’ then do;&lt;BR /&gt;V1 = V1 + 1/N**2 * exp(Xi1 * beta - exp(Xi1 * beta) )*&lt;BR /&gt;exp(Xj1 * beta - exp(Xj1 * beta) )* (xi1*V*T(xj1));&lt;BR /&gt;V0 = V0 + 1/N**2 * exp(Xi0 * beta - exp(Xi0 * beta) )*&lt;BR /&gt;exp(Xj0 * beta - exp(Xj0 * beta) )* (xi0*V*T(xj0));&lt;BR /&gt;COV = cov + 1/N**2 * exp(Xi1 * beta - exp(Xi1 * beta) )*&lt;BR /&gt;exp(Xj0 * beta - exp(Xj0 * beta) )* (xi1*V*T(xj0));&lt;BR /&gt;end;&lt;BR /&gt;else do;&lt;BR /&gt;V1 = V1 + 1/N**2*pdf(&amp;amp;dist, xi1* beta) *&lt;BR /&gt;pdf(&amp;amp;dist, xj1* beta) * (xi1*V*T(xj1));&lt;BR /&gt;V0 = V0 + 1/N**2*pdf(&amp;amp;dist, xi0* beta) *&lt;BR /&gt;pdf(&amp;amp;dist, xj0* beta) * (xi0*V*T(xj0));&lt;BR /&gt;COV = COV + 1/N**2* pdf(&amp;amp;dist, xi1* beta)*&lt;BR /&gt;pdf(&amp;amp;dist, xj0* beta) * (xi1*V*T(xj0));&lt;BR /&gt;end;&lt;BR /&gt;end; *END J;&lt;BR /&gt;end; *END I;&lt;BR /&gt;ll = p1est-p0est - &amp;amp;z*sqrt(v1+v0-2*cov);&lt;BR /&gt;uu = p1est-p0est + &amp;amp;z*sqrt(v1+v0-2*cov);&lt;BR /&gt;group1 = CI4P(p1est, V1, n); **CI for exposed risk;&lt;BR /&gt;group0 = CI4P(p0est, V0, n); **CI for unexposed risk;&lt;BR /&gt;print ’==== CI for risks ===’;&lt;BR /&gt;name = {estimate Wald_L wald_U log_L log_U lgt_L lgt_U Wlsn_L Wlsn_U};&lt;BR /&gt;print group1[colname=name],&lt;BR /&gt;group0[colname=name];&lt;BR /&gt;**Confidenc einterval for difference;&lt;BR /&gt;rho = COV/sqrt(V1*V0);&lt;BR /&gt;dWald = mover(group1[1], group1[2], group1[3], group0[1], group0[2], group0[3], rho);&lt;BR /&gt;dlgt = mover(group1[1], group1[6], group1[7], group0[1], group0[6], group0[7], rho);&lt;BR /&gt;dWln = mover(group1[1], group1[8], group1[9], group0[1], group0[8], group0[9], rho);&lt;BR /&gt;**The following is based on Zou and Donner (2004 Controlled Clin Trials 25: 3-12);&lt;BR /&gt;vd = V1 + V0 - 2*cov;&lt;BR /&gt;d = p1est - p0est;&lt;BR /&gt;F_LL = log( (1+ d)/(1-d) ) - &amp;amp;z *2*sqrt(vd)/(1- d**2);&lt;BR /&gt;F_L = (exp(F_LL) - 1)/(exp(F_LL) + 1);&lt;BR /&gt;F_Uu = log( (1+ d)/(1-d) ) + &amp;amp;z *2* sqrt(vd)/(1-d**2);&lt;BR /&gt;F_U = (exp(F_uu) - 1)/(exp(F_uu) + 1);&lt;BR /&gt;Fisher = d||F_L||F_U;&lt;BR /&gt;print ’===CI for difference==’;&lt;BR /&gt;print dwald, dlgt, dwln, Fisher;&lt;BR /&gt;** CI for Ratio;&lt;BR /&gt;**log-delta;&lt;BR /&gt;RRest = p1est/p0est;&lt;BR /&gt;var = V1/p1est**2 + V0/p0est**2 - 2 * cov/(p1est*p0est);&lt;BR /&gt;Lower = RRest*exp(-&amp;amp;z*sqrt(var));&lt;BR /&gt;Upper = RRest*exp(+&amp;amp;z*sqrt(var));&lt;BR /&gt;RlogDelta = RRest||lower||upper;&lt;BR /&gt;* Zou and Donner (2008 Stat Med 27: 1693-1702);&lt;BR /&gt;Rlgt = exp(mover(log(group1[1]), log(group1[6]), log(group1[7]),&lt;BR /&gt;log(group0[1]), log(group0[6]), log(group0[7]), rho));&lt;BR /&gt;RWln = exp(mover(log(group1[1]), log(group1[8]), log(group1[9]),&lt;BR /&gt;log(group0[1]), log(group0[8]), log(group0[9]), rho));&lt;BR /&gt;print ’=== CI for RR ===’;&lt;BR /&gt;print RlogDelta, Rlgt, Rwln;&lt;BR /&gt;quit;&lt;BR /&gt;%mend CounterFactual;&lt;/P&gt;</description>
      <pubDate>Sat, 29 Jul 2023 16:00:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Statistical-Procedures/Marginal-standardization-of-predicted-probabilities-for/m-p/886968#M43881</guid>
      <dc:creator>greesamu</dc:creator>
      <dc:date>2023-07-29T16:00:01Z</dc:date>
    </item>
    <item>
      <title>Re: Marginal standardization of predicted probabilities for multinomial logit</title>
      <link>https://communities.sas.com/t5/Statistical-Procedures/Marginal-standardization-of-predicted-probabilities-for/m-p/886972#M43882</link>
      <description>&lt;P&gt;I suspect that the macro simply computes predictive margins for TREATMENT and its marginal effect (difference in margins)&amp;nbsp; which is supported by the following Margins macro call producing the same estimates and confidence limits (matches the Wald limits). See the &lt;A href="http://support.sas.com/kb/63038" target="_self"&gt;Margins macro documentation&lt;/A&gt;.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%margins(data=flies, class=treatment, classgref=first, response=death40, roptions=event='1',
     model=treatment thorax, dist=binomial, 
     margins=treatment, diff=all, options=cl reverse)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Unfortunately, the Margins macro does not handle the multinomial model.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 29 Jul 2023 16:39:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Statistical-Procedures/Marginal-standardization-of-predicted-probabilities-for/m-p/886972#M43882</guid>
      <dc:creator>StatDave</dc:creator>
      <dc:date>2023-07-29T16:39:48Z</dc:date>
    </item>
  </channel>
</rss>

