请问这个SAS程序出了什么问题,该如何解决呢?我把log贴出来,在线等。谢谢!
2573 proc iml;
NOTE: IML Ready
2574
2575 use Stag3data2;
2576 read all into data;
NOTE: I/O required temporary file to be opened.
2577 /*show names; */
2578 /*print data;*/
2579 start maxFunc(F) global(data);
2580 sum=0;
2581 Uf=J(1,3,0);
2582 Um=J(1,3,0);
2583 Ud=J(1,3,0);
2584 Pf=J(1,3,0);
2585 Pm=J(1,3,0);
2586 Pd=J(1,3,0);
2587 Vh=J(1,2,0);
2588 G=J(1,3,0);
2589 do i=1 to 1988;
2590 prob=0;
2591 do j=1 to 4;
2592
2593 /*stag1*/
2594
2595 /*Pf1 stands for fπ1*/
2596
2597 z=(i-1)*4+j;
2598
2599 /* change to z */
2600
2601 Uf[1]=F[1]*data[z,5]+F[2]*data[z,6]+F[3]*data[z,7]+F[4]*data[z,8]
2602 +F[5]*data[z,9]+F[6]*data[z,10]+F[7]*data[z,11]+F[8]*data[z,12]+F[9]*dat
a[z,13]+F[10]*data[z,14];
2603
2604 Uf[2]=F[11]*data[z,15]+F[12]*data[z,16]+F[13]*data[z,17]+F[14]*data[z,18
]
2605 +F[15]*data[z,19]+F[16]*data[z,20]+F[17]*data[z,21]+F[18]*data[z,22]+F[1
9]*data[z,23]+F[20]*data[z,24];
2606
2607 Uf[3]=F[21];
2608
2609 Pf[1]=exp(Uf[1])/(exp(Uf[1])+exp(Uf[2])+exp(Uf[3]));
2609! /* Pf[1] stand for f
π1 */
2610 Pf[2]=exp(Uf[2])/(exp(Uf[1])+exp(Uf[2])+exp(Uf[3]));
2611 Pf[3]=exp(Uf[3])/(exp(Uf[1])+exp(Uf[2])+exp(Uf[3]));
2612
2613 /*Pm1 stand for mπ1*/
2614
2615 Um[1]=F[22]*data[z,5]+F[23]*data[z,6]+F[24]*data[z,7]+F[25]*data[z,8]
2616 +F[26]*data[z,9]+F[27]*data[z,10]+F[28]*data[z,11]+F[29]*data[z,12]+F[30
]*data[z,13]+F[31]*data[z,14];
2617
2618 Um[2]=F[32]*data[z,15]+F[33]*data[z,16]+F[34]*data[z,17]+F[35]*data[z,18
]
2619 +F[36]*data[z,19]+F[37]*data[z,20]+F[38]*data[z,21]+F[39]*data[z,22]+F[4
0]*data[z,23]+F[41]*data[z,24];
2620
2621 Um[3]=F[42];
2622 Pm[1]=exp(Um[1])/(exp(Um[1])+exp(Um[2])+exp(Um[3]));
2623 Pm[2]=exp(Um[2])/(exp(Um[1])+exp(Um[2])+exp(Um[3]));
2624 Pm[3]=exp(Um[3])/(exp(Um[1])+exp(Um[2])+exp(Um[3]));
2625
2626 /*Pd1 stand for dπ1*/
2627
2628 Ud[1]=F[43]*data[z,5]+F[44]*data[z,6]+F[45]*data[z,7]+F[46]*data[z,8]
2629 +F[47]*data[z,9]+F[48]*data[z,10]+F[49]*data[z,11]+F[50]*data[z,12]+F[51
]*data[z,13]+F[52]*data[z,14];
2630
2631 Ud[2]=F[53]*data[z,15]+F[54]*data[z,16]+F[55]*data[z,17]+F[56]*data[z,18
]
2632 +F[57]*data[z,19]+F[58]*data[z,20]+F[59]*data[z,21]+F[60]*data[z,22]+F[6
1]*data[z,23]+F[62]*data[z,24];
2633
2634 Ud[3]=F[63];
2635 Pd[1]=exp(Ud[1])/(exp(Ud[1])+exp(Ud[2])+exp(Ud[3]));
2636 Pd[2]=exp(Ud[2])/(exp(Ud[1])+exp(Ud[2])+exp(Ud[3]));
2637 Pd[3]=exp(Ud[3])/(exp(Ud[1])+exp(Ud[2])+exp(Ud[3]));
2638
2639 /*stag2*/
2640
2641 Vf=
2642 Vh[1]=F[64]*data[z,28]+F[65]*data[z,31]+F[66]*data[z,34];
2642! /*Vh stand for
house vote */
2643 Vh[2]=F[64]*data[z,29]+F[65]*data[z,32]+F[66]*data[z,35];
2644
2645 G[1]=(1-Pf[3]*Pm[3]*Pd[3])*(exp(Vh[1])/(exp(Vh[1])+exp(Vh[2])));
2645! /*G sta
nd for probability of household*/
2646 G[2]=(1-Pf[3]*Pm[3]*Pd[3])*(exp(Vh[2])/(exp(Vh[1])+exp(Vh[2])));
2647 G[3]=Pf[3]*Pm[3]*Pd[3];
2648
2649 /*stag3*/
2650
2651 Prof=Pf[1]*data[z,28]+Pf[2]*data[z,29]+Pf[3]*data[z,30];
2651! /*Pf means to c
hoose the available fπ1,2,3*/
2652 Prom=Pm[1]*data[z,31]+Pm[2]*data[z,32]+Pm[3]*data[z,33];
2653 Prod=Pd[1]*data[z,34]+Pd[2]*data[z,35]+Pd[3]*data[z,36];
2654
2655 G[3]=G[1]*data[z,25]+G[2]*data[z,26];
2655! /* G[3] stand f
or group choice*/
2656 fP11=1;
2657 fP21=exp(Uf[1])/(exp(Uf[1])+exp(Uf[3]));
2657! /*fP21 :probabili
ty of switch from channel 2 to 1*/
2658 fP23=exp(Uf[3])/(exp(Uf[1])+exp(Uf[3]));
2659 fP12=exp(Uf[2])/(exp(Uf[2])+exp(Uf[3]));
2660 fP22=1;
2661 fP13=exp(Uf[3])/(exp(Uf[2])+exp(Uf[3]));
2662
2663 mP11=1;
2664 mP21=exp(Um[1])/(exp(Um[1])+exp(Um[3]));
2665 mP23=exp(Um[3])/(exp(Um[1])+exp(Um[3]));
2666 mP12=exp(Um[2])/(exp(Um[2])+exp(Um[3]));
2667 mP22=1;
2668 mP13=exp(Um[3])/(exp(Um[2])+exp(Um[3]));
2669
2670 dP11=1;
2671 dP21=exp(Ud[1])/(exp(Ud[1])+exp(Ud[3]));
2672 dP23=exp(Ud[3])/(exp(Ud[1])+exp(Ud[3]));
2673 dP12=exp(Ud[2])/(exp(Ud[2])+exp(Ud[3]));
2674 dP22=1;
2675 dP13=exp(Ud[3])/(exp(Ud[2])+exp(Ud[3]));
2676
2677 fP=fP11*data[z,41]+fP21*data[z,42]+fP23*data[z,43]+fP12*data[z,44]+fP22*
data[z,45]+fP13*data[z,46];
2678 mP=mP11*data[z,47]+mP21*data[z,48]+mP23*data[z,49]+mP12*data[z,50]+mP22*
data[z,51]+mP13*data[z,52];
2679 dP=dP11*data[z,53]+dP21*data[z,54]+dP23*data[z,55]+dP12*data[z,56]+dP22*
data[z,57]+dP13*data[z,58];
2680
2681 prob=prob + Prof*Prom*Prod*G[3]*fP*mP*dP;
2682 end;
2683 sum=sum*prob ;
2684 end;
2685 return(sum);
2686 finish maxFunc;
NOTE: Module MAXFUNC defined.
2687
2688 optn={1 2};
2689 X=J(1,66,0);
2690 call nlpcg(rc,xres,"maxFunc",X,optn);
ERROR: (execution) Invalid subscript or subscript out of range.
operation : [ at line 2601 column 16
operands : DATA, Z, *LIT1035
DATA 7948 rows 58 cols (numeric)
Z 1 row 1 col (numeric)
7949
*LIT1035 1 row 1 col (numeric)
5
statement : ASSIGN at line 2601 column 1
traceback : module MAXFUNC at line 2601 column 1
ERROR: (execution) Invalid subscript or subscript out of range.
operation : NLPCG at line 2690 column 1
operands : *LIT1332, X, OPTN
*LIT1332 1 row 1 col (character, size 7)
maxFunc
X 1 row 66 cols (numeric)
OPTN 1 row 2 cols (numeric)
1 2
statement : CALL at line 2690 column 1
2691
2692 run;
NOTE: Module MAIN is undefined in IML; cannot be RUN.
2693 quit;
NOTE: Exiting IML.
NOTE: 299 workspace compresses.
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: “PROCEDURE IML”所用时间(总处理时间):
实际时间 2.46 秒
CPU 时间 1.93 秒