DATA Step, Macro, Functions and more

Generate Equation based on Estimates

Accepted Solution Solved
Reply
Regular Contributor
Posts: 184
Accepted Solution

Generate Equation based on Estimates

I want to generate logistic regression equation based on coefficient estimates. I am trying to find automate solution -

The coefficient estimates are stored in a dataset. They look like below -

VariablesEstimate
Intercept0.001
ABCD0.558356
DEFG0.464783
HIJKL0.111268
MNOP0.811915

score = 0.001 + 0.558356 * ABCD + 0.464783 * DEFG + 0.111269 * HIJKL + 0.811915 * MNOP

p = 1 / (1 + exp(-score))

I want the following equation to be stored in a separate data set. In this data set, there would be a single column named "Equation" and first row contains the equation:

P_1 = 1 / (1 + exp( -(0.001 + 0.558356 * ABCD + 0.464783 * DEFG + 0.111269 * HIJKL + 0.811915 * MNOP))

Note : I am aware of SCORE, OUTMODEL and INMODEL statements in PROC LOGISTIC to calculate predicted probability. But my task is to note down the equation based on estimates.


Accepted Solutions
Solution
‎08-02-2015 02:02 PM
Respected Advisor
Posts: 4,931

Re: Generate Equation based on Estimates

Build the string using CAT_ functions:

data want;

length eq $200;

do until (done);

    set estimates end=done;

    if Variable = "Intercept" then

        eq = catx(" + ", Eq, Estimate);

    else

        eq = catx(" + ", Eq, catx(" * ", Estimate, Variable));

    end;

Eq = cats( "P_1 = 1 / (1 + exp( -(", Eq, "))");

keep Eq;

run;

PG

PG

View solution in original post


All Replies
Solution
‎08-02-2015 02:02 PM
Respected Advisor
Posts: 4,931

Re: Generate Equation based on Estimates

Build the string using CAT_ functions:

data want;

length eq $200;

do until (done);

    set estimates end=done;

    if Variable = "Intercept" then

        eq = catx(" + ", Eq, Estimate);

    else

        eq = catx(" + ", Eq, catx(" * ", Estimate, Variable));

    end;

Eq = cats( "P_1 = 1 / (1 + exp( -(", Eq, "))");

keep Eq;

run;

PG

PG
Regular Contributor
Posts: 184

Re: Generate Equation based on Estimates

Thanks a ton. It works like charm. Could you please explain how it works -

  if Variable = "Intercept" then

        eq = catx(" + ", Eq, Estimate);

    else

        eq = catx(" + ", Eq, catx(" * ", Estimate, Variable));

    end;

Respected Advisor
Posts: 4,931

Re: Generate Equation based on Estimates

CATX function concatenates values (strings or formatted numbers) and adds the first function argument (e.g. " + ") between the concatenated values. So here, the string eq is built up by adding to it ( eq = catx(" + ", eq, something) ) the intercept estimate or the concatenation of the estimate and the variable name, separated by " * ", using the CATX function again. Initially, eq is empty.

Read the manual for more fun details about the CATX, CATS, and CATT functions Smiley Happy.

PG
🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 231 views
  • 0 likes
  • 2 in conversation