BookmarkSubscribeRSS Feed
BillJones
Calcite | Level 5

Hello Everyone,

I want to estimate z1-z9 of the function below:

y=w1[(x1-1)z1+1] + w2[(x2-1)z2+1] + *** + w9[(x9-1)z9+1]

where

y=dependent variable

w1-w9 are weights (between 0 and 1) that have already been selected

x1-x9 are the independent variables

What is the best way to do this?  Exponential regression?  If so, then how to separate out the zs?

Thanks very much for any suggestions.

-Bill

sample code:

data input;                

  input y x1 x2 x3 x4 x5 x6 x7 x8 x9;     

  datalines;

  0.433009378 0.260269441 1.092278706 0.425360662 0.164029628 0.429880491 0.950489941 0.047595925 0.531987245 0.336139451

  0.386133454 0.184529366 0.033661616 0.245561093 0.105340609 0.882803079 0.981167833 1.07619815 0.781841268 0.233372548

  0.258993942 1.119821022 0.109476847 0.000812581 0.419804897 0.391490911 0.769809934 0.659436672 0.144127286 0.746489656

  0.359816223 1.046465239 0.268638572 0.137649556 1.059282484 0.142724361 0.902195762 0.073187585 1.044987784 0.080340265

  0.41451314 0.07467261 1.142594057 0.097833794 0.6281817 0.804104506 0.953123478 0.877716887 0.986232903 0.413012511

  0.499895162 0.388482105 0.769424554 0.449226135 0.864276043 0.093162782 0.735842414 0.729262551 0.021170317 0.946582289

  0.554731409 0.059169663 0.671669625 0.573134236 0.059555794 0.688838956 1.112734086 0.082975813 0.985157911 0.954789222

  0.933065823 1.09077688 0.937373275 0.961720206 1.137356787 0.912617055 0.414739423 1.179989148 0.793556015 0.527731975

  0.449350652 0.889961987 0.448923153 0.16477621 1.039273537 1.101642002 0.417949375 0.892596492 0.107396261 0.300592589

  0.436482177 0.218474064 0.817187061 0.444305392 0.010617679 0.316182089 0.871165126 0.396994326 0.274244319 1.054925185

  0.844492128 1.199795926 0.562302873 1.087265891 0.857350825 0.717381217 0.361552016 0.188030616 0.078408845 0.477629287

  0.986259829 1.11546778 0.67784779 1.076318082 0.711326509 1.147214979 0.949628603 1.159315584 0.683949937 0.658723083

  0.536026142 0.03874538 0.603083965 0.615275769 1.199564925 0.097081463 1.116060342 0.025003849 0.125264809 0.066314023

  0.478861694 0.623029236 1.118083449 0.343243377 0.445421704 0.990867977 0.074432208 0.093372058 0.301435613 1.061868184

  0.755038738 0.917477552 0.568455848 0.653801794 1.11512354 1.167247795 0.78977679 0.620451789 0.21932299 0.882529179

  0.870345527 0.278402165 0.645632762 1.04345974 1.192690633 0.317710531 0.946307396 0.799783639 0.66667504 0.614709813

  0.653262402 1.077775155 0.181791546 0.669990623 0.776631367 0.513769454 0.39812198 0.078470159 0.870051912 1.178329425

  0.577799576 0.545255692 0.898698641 0.635702755 0.768766323 0.60748745 0.478514258 0.208562345 0.057506345 0.257919144

  0.640086114 0.347670625 0.760234063 0.733585918 0.638387923 0.510148474 0.07436439 0.352510307 0.593989168 1.040021751

  0.823371633 0.638037368 1.01259897 1.097597318 0.644682512 0.266643423 0.344110563 0.450192716 0.383177214 0.840690779

  0.62449019 0.282835785 1.007170731 0.610136182 1.029590947 0.074149805 1.116463349 0.503368539 1.007803905 0.263318173

  0.444804746 0.017693426 0.526388959 0.187740591 1.129412956 0.915406787 1.073308894 0.619777948 0.146676128 0.54520417

  0.484480172 0.497735344 0.104527198 0.500746335 0.985787824 0.199781266 0.065829102 0.202553479 0.626455295 0.813901488

  0.317012256 1.192924294 0.251183508 0.093961339 0.174368642 0.477715786 0.657812327 1.031320803 0.245768093 0.717453859

  0.588034285 0.489578192 0.207186181 0.699312378 0.4967007 0.891018763 0.097971171 0.532467973 0.37236279 0.292556691

  0.598541777 0.331222229 1.194910587 0.566202209 1.181182139 0.344148387 1.135667393 0.369079141 0.224891936 0.002381108

  0.789085218 0.561051456 0.430842595 1.05544095 0.176816812 0.475019069 0.669435603 0.443071061 0.681417633 1.137804746

  0.487889626 0.634337348 1.155309283 0.341090334 0.523437654 1.041496843 0.658849627 0.407481423 0.212381753 0.148660757

  0.500437513 1.003388064 0.028107549 0.408941718 1.140653445 0.546878092 0.312132981 0.164647159 0.896599531 0.139394726

  0.648913057 0.23470331 0.708473294 0.715658801 0.503438628 0.778258155 0.824497121 1.003766639 0.281078622 0.205760578

  0.47675595 0.226090918 0.267337491 0.207966394 0.959121283 1.097665676 0.222061633 0.836446043 0.960294339 0.82965073

  0.709378295 0.009130251 0.192221036 0.993585371 0.209080202 0.157499618 1.190016415 0.748792229 0.836817845 0.541574774

  0.696826726 0.879948846 1.125725147 0.744493446 0.740876159 0.219321144 1.089204287 0.920192756 0.351082149 0.205052275

  0.260997361 0.00973165 0.176036305 0.059693106 0.111782576 1.025158879 0.136361192 0.918763623 0.595752643 0.512487841

  0.570310745 0.632237184 0.304292779 0.526779408 0.822717014 1.004175775 0.548448316 0.063847267 0.41276116 0.523048535

  0.736222587 0.24588289 0.14861863 0.844209142 0.629919526 0.941650487 0.532280328 0.696269823 0.870934505 0.645234111

  0.434171719 0.948062641 0.696583303 0.254165508 0.674046478 0.242673335 1.188268109 0.934818027 0.506338586 0.034269001

  0.705494851 0.68325986 0.106653146 0.811958384 0.269531941 0.696427753 1.081084338 1.057956238 0.729979889 0.399460328

  0.280503587 0.416168159 0.409217298 0.05717669 0.130358799 0.904330781 0.486648621 0.915596266 0.580948113 0.160347238

  0.458996388 1.029620307 0.152837123 0.460200554 0.306766207 0.638229727 0.323942705 0.470856463 0.595152795 0.115520964

  0.740670108 0.829959193 0.801371222 0.700047998 1.02184578 1.130850744 0.500220331 0.29845238 1.054722256 0.022803759

  0.628111577 0.775435333 0.899677969 0.809379813 0.630802294 0.346100793 0.296477882 0.378814672 0.117778822 0.04644256

  0.616620558 1.195580632 0.66884203 0.629953026 0.580271276 0.452977027 0.748081499 0.103261188 0.903194269 0.347424679

  0.485100919 0.640793811 0.984983366 0.174869342 0.568463983 1.075565391 0.768921803 1.017558465 0.700763394 0.552245365

  0.380522255 1.026669851 0.023575147 0.181301495 0.678121679 0.126734702 0.498002422 1.116297938 0.781122541 0.742049492

  0.386310145 0.489322502 0.928953839 0.108098712 0.887426928 0.61118902 0.460495358 0.892752621 0.013579578 0.862879983

  0.644081655 0.791733164 0.807384987 0.832247035 0.041075155 0.063473692 0.424127906 0.853328728 0.293989069 1.179501191

  0.664011771 0.235924253 0.284018069 0.772072735 0.303979747 0.781867879 0.345935375 0.990578377 0.83253673 0.698820026

  0.695065576 0.263981518 0.911212968 0.780187919 0.956728666 0.033297408 0.486447384 1.160349181 0.697104382 0.600284743

  0.742614249 0.389088378 0.856478819 0.855145861 0.507586603 0.737463437 0.021562337 1.154630872 0.806242913 0.582722966

  ; 

run;

data input;

  set input;

  w1=0.23; w2=0.07; w3=0.21; w4=0.09; w5=0.05; w6=0.15; w7=0.10; w8=0.04; w9=0.06;

run;

3 REPLIES 3
BillJones
Calcite | Level 5

It appears that I need to use proc nlin.  I drafted some code, see below.  It runs but I'm a bit perplexed by the output.  I try to limit z1-z9 from 0.25 to 1, but there are estimates for z over 2?  Additionally, I tried to set z1-z9 from 0 to 1 by 0.01 and got an "insufficient memory" error.  Is there a way to have sas search for the best fit by 0.01?  Perhaps employ some logic that would reduce the possible number of combinations?  Also, I got a warning stating that DER.z1 to DER.z9 are missing and sas will compute them automatically.  Should I specify DER.z1 to DER.z9? 

Thanks for any suggestions.

-Bill

dm 'clear log';

data input;                

  input y x1 x2 x3 x4 x5 x6 x7 x8 x9;     

  datalines;

  0.433009378 0.260269441 1.092278706 0.425360662 0.164029628 0.429880491 0.950489941 0.047595925 0.531987245 0.336139451

  0.386133454 0.184529366 0.033661616 0.245561093 0.105340609 0.882803079 0.981167833 1.07619815 0.781841268 0.233372548

  0.258993942 1.119821022 0.109476847 0.000812581 0.419804897 0.391490911 0.769809934 0.659436672 0.144127286 0.746489656

  0.359816223 1.046465239 0.268638572 0.137649556 1.059282484 0.142724361 0.902195762 0.073187585 1.044987784 0.080340265

  0.41451314 0.07467261 1.142594057 0.097833794 0.6281817 0.804104506 0.953123478 0.877716887 0.986232903 0.413012511

  0.499895162 0.388482105 0.769424554 0.449226135 0.864276043 0.093162782 0.735842414 0.729262551 0.021170317 0.946582289

  0.554731409 0.059169663 0.671669625 0.573134236 0.059555794 0.688838956 1.112734086 0.082975813 0.985157911 0.954789222

  0.933065823 1.09077688 0.937373275 0.961720206 1.137356787 0.912617055 0.414739423 1.179989148 0.793556015 0.527731975

  0.449350652 0.889961987 0.448923153 0.16477621 1.039273537 1.101642002 0.417949375 0.892596492 0.107396261 0.300592589

  0.436482177 0.218474064 0.817187061 0.444305392 0.010617679 0.316182089 0.871165126 0.396994326 0.274244319 1.054925185

  0.844492128 1.199795926 0.562302873 1.087265891 0.857350825 0.717381217 0.361552016 0.188030616 0.078408845 0.477629287

  0.986259829 1.11546778 0.67784779 1.076318082 0.711326509 1.147214979 0.949628603 1.159315584 0.683949937 0.658723083

  0.536026142 0.03874538 0.603083965 0.615275769 1.199564925 0.097081463 1.116060342 0.025003849 0.125264809 0.066314023

  0.478861694 0.623029236 1.118083449 0.343243377 0.445421704 0.990867977 0.074432208 0.093372058 0.301435613 1.061868184

  0.755038738 0.917477552 0.568455848 0.653801794 1.11512354 1.167247795 0.78977679 0.620451789 0.21932299 0.882529179

  0.870345527 0.278402165 0.645632762 1.04345974 1.192690633 0.317710531 0.946307396 0.799783639 0.66667504 0.614709813

  0.653262402 1.077775155 0.181791546 0.669990623 0.776631367 0.513769454 0.39812198 0.078470159 0.870051912 1.178329425

  0.577799576 0.545255692 0.898698641 0.635702755 0.768766323 0.60748745 0.478514258 0.208562345 0.057506345 0.257919144

  0.640086114 0.347670625 0.760234063 0.733585918 0.638387923 0.510148474 0.07436439 0.352510307 0.593989168 1.040021751

  0.823371633 0.638037368 1.01259897 1.097597318 0.644682512 0.266643423 0.344110563 0.450192716 0.383177214 0.840690779

  0.62449019 0.282835785 1.007170731 0.610136182 1.029590947 0.074149805 1.116463349 0.503368539 1.007803905 0.263318173

  0.444804746 0.017693426 0.526388959 0.187740591 1.129412956 0.915406787 1.073308894 0.619777948 0.146676128 0.54520417

  0.484480172 0.497735344 0.104527198 0.500746335 0.985787824 0.199781266 0.065829102 0.202553479 0.626455295 0.813901488

  0.317012256 1.192924294 0.251183508 0.093961339 0.174368642 0.477715786 0.657812327 1.031320803 0.245768093 0.717453859

  0.588034285 0.489578192 0.207186181 0.699312378 0.4967007 0.891018763 0.097971171 0.532467973 0.37236279 0.292556691

  0.598541777 0.331222229 1.194910587 0.566202209 1.181182139 0.344148387 1.135667393 0.369079141 0.224891936 0.002381108

  0.789085218 0.561051456 0.430842595 1.05544095 0.176816812 0.475019069 0.669435603 0.443071061 0.681417633 1.137804746

  0.487889626 0.634337348 1.155309283 0.341090334 0.523437654 1.041496843 0.658849627 0.407481423 0.212381753 0.148660757

  0.500437513 1.003388064 0.028107549 0.408941718 1.140653445 0.546878092 0.312132981 0.164647159 0.896599531 0.139394726

  0.648913057 0.23470331 0.708473294 0.715658801 0.503438628 0.778258155 0.824497121 1.003766639 0.281078622 0.205760578

  0.47675595 0.226090918 0.267337491 0.207966394 0.959121283 1.097665676 0.222061633 0.836446043 0.960294339 0.82965073

  0.709378295 0.009130251 0.192221036 0.993585371 0.209080202 0.157499618 1.190016415 0.748792229 0.836817845 0.541574774

  0.696826726 0.879948846 1.125725147 0.744493446 0.740876159 0.219321144 1.089204287 0.920192756 0.351082149 0.205052275

  0.260997361 0.00973165 0.176036305 0.059693106 0.111782576 1.025158879 0.136361192 0.918763623 0.595752643 0.512487841

  0.570310745 0.632237184 0.304292779 0.526779408 0.822717014 1.004175775 0.548448316 0.063847267 0.41276116 0.523048535

  0.736222587 0.24588289 0.14861863 0.844209142 0.629919526 0.941650487 0.532280328 0.696269823 0.870934505 0.645234111

  0.434171719 0.948062641 0.696583303 0.254165508 0.674046478 0.242673335 1.188268109 0.934818027 0.506338586 0.034269001

  0.705494851 0.68325986 0.106653146 0.811958384 0.269531941 0.696427753 1.081084338 1.057956238 0.729979889 0.399460328

  0.280503587 0.416168159 0.409217298 0.05717669 0.130358799 0.904330781 0.486648621 0.915596266 0.580948113 0.160347238

  0.458996388 1.029620307 0.152837123 0.460200554 0.306766207 0.638229727 0.323942705 0.470856463 0.595152795 0.115520964

  0.740670108 0.829959193 0.801371222 0.700047998 1.02184578 1.130850744 0.500220331 0.29845238 1.054722256 0.022803759

  0.628111577 0.775435333 0.899677969 0.809379813 0.630802294 0.346100793 0.296477882 0.378814672 0.117778822 0.04644256

  0.616620558 1.195580632 0.66884203 0.629953026 0.580271276 0.452977027 0.748081499 0.103261188 0.903194269 0.347424679

  0.485100919 0.640793811 0.984983366 0.174869342 0.568463983 1.075565391 0.768921803 1.017558465 0.700763394 0.552245365

  0.380522255 1.026669851 0.023575147 0.181301495 0.678121679 0.126734702 0.498002422 1.116297938 0.781122541 0.742049492

  0.386310145 0.489322502 0.928953839 0.108098712 0.887426928 0.61118902 0.460495358 0.892752621 0.013579578 0.862879983

  0.644081655 0.791733164 0.807384987 0.832247035 0.041075155 0.063473692 0.424127906 0.853328728 0.293989069 1.179501191

  0.664011771 0.235924253 0.284018069 0.772072735 0.303979747 0.781867879 0.345935375 0.990578377 0.83253673 0.698820026

  0.695065576 0.263981518 0.911212968 0.780187919 0.956728666 0.033297408 0.486447384 1.160349181 0.697104382 0.600284743

  0.742614249 0.389088378 0.856478819 0.855145861 0.507586603 0.737463437 0.021562337 1.154630872 0.806242913 0.582722966

  ; 

run;

*Set weights;

%let w1=0.23; %let w2=0.07; %let w3=0.21; %let w4=0.09; %let w5=0.05; %let w6=0.15; %let w7=0.10; %let w8=0.04; %let w9=0.06;

%let start=0.25;

%let end=1.0;

%let inc=0.25;

PROC NLIN DATA=input METHOD=GAUSS NOITPRINT;

PARMS z1 = &start. to &end. by &inc. z2 =&start. to &end. by &inc.  z3 = &start. to &end. by &inc. z4 = &start. to &end. by &inc.

   z5 = &start. to &end. by &inc. z6 = &start. to &end. by &inc. z7 = &start. to &end. by &inc. z8 = &start. to &end. by &inc.

   z9 = &start. to &end. by &inc.;

MODEL Y = &w1.*((x1-1)*z1+1) + &w2.*((x2-1)*z2+1) + &w3.*((x3-1)*z3+1) + &w4.*((x4-1)*z4+1) + &w5.*((x5-1)*z5+1) + &w6.*((x6-1)*z6+1) + &w7.*((x7-1)*z7+1)

+&w8.*((x8-1)*z8+1) + &w9.*((x9-1)*z9+1) ;

OUTPUT OUT=PRED P=PR ;

RUN;

output from proc nlin

gergely_batho
SAS Employee

Hi Bill,

If you set 0 to 1 by 0.01 for each z parameter, NLIN first will do a grid search: will try each combination of the z starting values. This is 100**9 combinations.

In this specific case I don't think it is necessary to specify such a fine grid for starting values. One starting value will be enough, because your model is linear, it will always converge.

You could also convert (reparameterize) this problem and solve with proc reg or glm.

You don't need to specify a formula for the derivatives with the DER statement. It is just a note. DER statement is needed in special cases, when you know the formula for derivatives better then SAS Smiley Happy

You can use the bound statement to restrict z parameters:

BOUNDS z1-z9 <=1;

BillJones
Calcite | Level 5

Gergely,

Thanks very much for your detailed explanation.  I was able to bound the parameter estimates to the interval [0,1]. 

Best,

Bill

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 3 replies
  • 1581 views
  • 3 likes
  • 2 in conversation