You can solve this problem by hand by using algebraic manipulations. I did not double-check my calculations, so please read the comments for an explanation and to verify my algebra. Also, you did not supply m4 or m5, but I indicated where you can plug those numbers in.
data Have;
retain I1 0.1231
I2 0.4564
I3 0.8675
b1 1
b2 1
b3 1
m2 0.1341
m3 0.6456
m4 1 /* OP did not supply */
m5 1; /* OP did not supply */
input Cust Y E M V;
datalines;
1 0.76364 0.4234 0.24325 0.1636
2 0.3451 0.423421 0.5675 0.1674
3 0.84764 0.6456 0.4756 0.2457
4 0.46823 0.53466 0.52345 0.254564
5 0.345783 0.52345 0.6745 0.742
6 0.783478 0.3523 0.3452 0.876
7 0.78246 0.54536 0.52345 0.2453
8 0.827612 0.352 0.7452 0.65434
9 0.89459 0.35234 0.66745 0.2341
10 0.094897 0.23452 0.245 0.7547
11 0.92342 0.2345 0.647 0.24523
;
proc iml;
/*
x1 = I3 + m3 * x2 + m4 * x3 + m5 * x4
E = I2 + m2 * x1
Y = I1 + b1*E + b2*M + b3*V
so
Y = I1 + b2*M + b3*V + b1*(I2 + m2 *(I3 + m3 * x2 + m4 * x3 + m5 * x4) )
= I1 + b2*M + b3*V + b1*I2 + b1*m2*I3 + b1*m2*m3 *x2 + b1*m2*m4*x3 + b1*m2*m5*x4
Define
c1 = I1 + b2*M + b3*V + b1*I2 + b1*m2*I3
c2 = b1*m2*m3
c3 = b1*m2*m4
c4 = b1*m2*m5
Then Y = c1 + c2*x2 + c3*x3 and c4*x4
or
x2 = (Y - c1 - c3*x3 - c4*x4) / c2
Because the system is overdetermined, you can choose ANY VALUES for x3 and x4
For example, if you choose x3=1 and x4=1 then the two equations are
x2 = (0 - c1 - c3*x3 - c4*x4) / c2
and
x2 = (1 - c1 - c3*x3 - c4*x4) / c2
*/
data Want;
set Have;
c1 = I1 + b2*M + b3*V + b1*I2 + b1*m2*I3;
c2 = b1*m2*m3;
c3 = b1*m2*m4;
c4 = b1*m2*m5;
/* make a choice for x3 and x4 */
x3 = 1; x4 = 1;
do Ytarget = 0, 1;
x2 = (YTarget - c1 - c3*x3 - c4*x4) / c2;
output;
end;
run;
proc print data=Want;
var cust yTarget x2 x3 x4;
run;
... View more