[\n ENTER SAMPLE SIZE:28428
\n ENTER TOLERANCE LIMIT:100
Undefined variable: xgetfile]1
So basically when I run this program that I have, downloaded from the internet, it always tells me that the variable xgetfile is undefined rather than prompting me to select a file with the data in it. The full code for said program is pasted down below. My question is how to remedy this issue and be able to input my data. The line that says xgetfile is pretty near the top so you don't have to do too much reading to get to it.
n=0;
tol_lim=0;
// ENTERING SAMPLE SIZE
while n<=5 | n==[] , n=input("\n ENTER SAMPLE SIZE:");
if (n<=5) printf("\n\n SAMPLE SIZE SHOULD BE GREATER THAN 5\n\n");end
if n==[] printf("\n\n SAMPLE SIZE CANNOT BE LEFT BLANK\n\n");end
end
//ENTERING TOLERANCE LIMIT
while tol_lim <= 0 | tol_lim==[], tol_lim=input("\n ENTER TOLERANCE LIMIT:");
if (tol_lim<=0) printf("\n TOLERANCE LIMIT SHOULD BE GREATER THAN 0\n\n");end
if tol_lim==[] printf("\n TOLERANCE LIMIT CANNOT BE LEFT BLANK\n\n");end
end
//INITIALIZING VARIABLES
F = zeros(n,3);
Y = zeros(n,1);
OY = zeros(n,1);
EY = zeros(n,1);
DOY = zeros(n,1);
Estimated_Y = zeros(n,1);
d = zeros(3,1);
THETA = zeros(3,1);
GN1=0;GN2=0;GN3=0;
sig=0;y=0;
sigma_hat_square=0; y_bar=0; dff=0; R_square=0;
U_t_hat=0; U_t_hat_square=0; U_t_minusone_hat=0; dd=0; DW=0;Covariance_Matrix=zeros(3,3);
f_obs=0; l_obs=0; r=0; D1=0; D2=0;
S1=0;S2=0;S3=0;D1=0;D2=0;r=0;sum_Y=0;Y_bar=0;Y_square=0;D_den=0;D=0;
AY=zeros(n,1);
OBS=zeros(n,1);
EST=zeros(n,1);
g=[];gh=[];
EXISTING_DATA='';
//CHOOSING INPUT EXCEL DATA FILE
gh=xgetfile();
while gh==[], gh=xgetfile('*.*',title='CHOOSE A FILE NAME');
if g==[] printf("FILE NAME CANNOT BE LEFT BLANK");end
end
Sheets=readxls(gh);
EXISTING_DATA=Sheets(1);
typeof(EXISTING_DATA);
printf("\n\n");
//DISPLAYING EXISTING DATA FROM EXCEL FILE
EXISTING_DATA
for i=2:(n+1),DOY(i-1,1)=EXISTING_DATA(i,2);end
while f_obs<=0 | f_obs==[] , f_obs=input("\n ENTER FIRST OBSERVATION NO:");
//if (f_obs<=0) printf("\n\n IT SHOULD BE GREATER THAN 0\n\n");end
//if f_obs==[] printf("\n\n IT CANNOT BE LEFT BLANK\n\n");end
end
while l_obs<f_obs | l_obs==[] , l_obs=input("\n ENTER LAST OBSERVATION NO:");
//if (l_obs<=f_obs) printf("\n\n IT SHOULD BE GREATER THAN FIRST OBSERVATION NO:\n\n");end
//if l_obs==[] printf("\n\n IT CANNOT BE LEFT BLANK\n\n");end
end
for i=1:n,OY(i,1)=log(DOY(i,1));end
r = ((l_obs - f_obs) + 1)/3;
for i=1:r, S1 = S1 + OY(i,1);end
for i=r+1:2*r, S2 = S2 + OY(i,1);end
for i=2*r+1:3*r, S3 = S3 + OY(i,1);end
D1 = S1 - S2;
D2 = S2 - S3;
A=0;B=0;C=0;
// CALCULATING INITIAL ESTIMATES OF A, B, C
C = (D2/D1)^(1/r);
B = ((1 - C)/C)* [(D1^3)/(D1-D2)^2];
A = (1/3)*(1/r)*[(S1 + S2 + S3) - (D1^2 + D1*D2 + D2^2)/(D1 - D2)];
Ini_A=A; Ini_B=B;Ini_C=C;
for i=1:n, F(i,1)=1;end
for i=1:n, F(i,2)=C^i;end
for i=1:n, F(i,3)=i*B*(C^(i-1));end
for i=1:n, EY(i,1)=A + B*(C^i);end
for i=1:n, Y(i,1) = OY(i,1) - EY(i,1);end
d = inv(F'*F)*F'*Y;
THETA(1,1) = A + d(1,1);
THETA(2,1) = B + d(2,1);
THETA(3,1) = C + d(3,1);
if abs(d(1,1)/A) < tol_lim & abs(d(2,1)/B) < tol_lim & abs(d(3,1)/C) < tol_lim
break;
end
for cnt=1:100
A = THETA(1,1);
B = THETA(2,1);
C = THETA(3,1);
for i=1:n, F(i,1)=1;end
for i=1:n, F(i,2)=C^i;end
for i=1:n, F(i,3)=i*B*(C^(i-1));end
for i=1:n, EY(i,1)=A + B*(C^i);end
for i=1:n, Y(i,1) = OY(i,1) - EY(i,1);end
d = inv(F'*F)*F'*Y;
THETA(1,1) = A + d(1,1);
THETA(2,1) = B + d(2,1);
THETA(3,1) = C + d(3,1);
if abs(d(1,1)/A) < tol_lim & abs(d(2,1)/B) < tol_lim & abs(d(3,1)/C) < tol_lim
break;
end
end
A=THETA(1,1);
B=THETA(2,1);
C=THETA(3,1);
for i=1:n,
GN1 = GN1 + (OY(i,1) - A - B*(C^i));
GN2 = GN2 + (OY(i,1) - A - B*(C^i))*(C^i);
GN3 = GN3 + (OY(i,1) - A - B*(C^i))*B*i*(C^(i-1));
end
p_GN1=GN1;
p_GN2=GN2;
p_GN3=GN3;
for i=1:n, EY(i,1) = A + B*(C^i);end
for i=1:n, Y(i,1) = OY(i,1) - EY(i,1);end
for i=1:n, sig =sig + Y(i,1)*Y(i,1);end
sigma_hat_square = sig/n;
for i=1:n, y = y + OY(i,1);end
y_bar = y/n;
for i=1:n, dff = dff + (OY(i,1) - y_bar)*(OY(i,1) - y_bar);end
R_square = 1 - (sig/dff);
for i=1:n,
F(i,1)=1;
F(i,2)=C^i;
F(i,3)=i*B*(C^(i-1));
end
//Showing Covariance Matrix
Covariance_Matrix = sigma_hat_square*inv(F'*F);
G = zeros(3,3);
G = inv(F'*F);
//Showing Standard Errors
std_err_A = sqrt((sigma_hat_square)*G(1,1));
std_err_B = sqrt((sigma_hat_square)*G(2,2));
std_err_C = sqrt((sigma_hat_square)*G(3,3));
for i=1:n,
U_t_hat_square = U_t_hat_square+ ((OY(i,1) - A - B*(C^i))^2);
end
for i=2:n,
U_t_hat = OY(i,1) - A - B*(C^i);
U_t_minusone_hat = OY(i-1,1) - A - B*(C^(i-1));
dd = dd + (U_t_hat - U_t_minusone_hat)*(U_t_hat - U_t_minusone_hat);
end
DW = dd/U_t_hat_square;
for i=1:n, EY(i,1) = A + B*(C^i);end
for i=1:n, Y(i,1) = OY(i,1) - EY(i,1);end
for i=1:n,sum_Y = sum_Y + OY(i,1);end
Y_bar = sum_Y /n;
for i=1:n, Y_square = Y_square + Y(i,1)*Y(i,1);end
for i=1:n, D_den = D_den + (OY(i,1) - Y_bar)*(OY(i,1) - Y_bar);end
D = Y_square/D_den;
printf("\n\n\nREPORT SHOWING RESULTS\n");
printf("----------------------\n\n\n");
printf("Sample Size = %d Tolerance Limit=%f\n\n",n,tol_lim);
printf("PARAMETER INITIAL ESTIMATES FINAL ESTIMATES STD. ERRORS DW ");
printf("\n------- ----------------- ---------------- ------------ ---- \n");
printf("\nA %f %f %f %f", Ini_A,A, std_err_A, DW);
printf("\nB %f %f %f ", Ini_B,B, std_err_B);
printf("\nC %f %f %f ", Ini_C,C, std_err_C);
printf("\n\n\n ");
printf("No. of Iterations: = %d\n\n",cnt+1);
printf("GN1 = %.7f\n\n", p_GN1);
printf("GN2 = %.7f\n\n", p_GN2);
printf("GN3 = %.7f\n\n", p_GN3);
printf("Sigma_Hat_Square= %f \t\t R_Square= %f\t D=%f",sigma_hat_square, R_square,D);
printf("\n\n COVARIANCE MATRIX \n");
printf("-------------------------\n");
printf("%f\t\t%f\t\t%f\n",Covariance_Matrix(1,1), Covariance_Matrix(1,2), Covariance_Matrix(1,3));
printf("%f\t\t%f\t\t%f\n",Covariance_Matrix(2,1), Covariance_Matrix(2,2), Covariance_Matrix(2,3));
printf("%f\t\t%f\t\t%f",Covariance_Matrix(3,1), Covariance_Matrix(3,2), Covariance_Matrix(3,3));
printf("\n\n Residuals\n\n ");
printf("Y = %f\n",Y);
x=input("\n\n Exit Program??...Press 1 to exit or enter to save");
if (x==1)
exit();
end
g=x_dialog(['enter file name:']);
u=mopen(g,'w');
mfprintf(u,"REPORT SHOWING RESULTS\n");
mfprintf(u,"----------------------\n\n\n");
mfprintf(u,"Sample Size = %d Tolerance Limit = %f\n\n\n",n,tol_lim);
mfprintf(u,"PARAMETER INITIAL ESTIMATES FINAL ESTIMATES STD. ERRORS DW ");
mfprintf(u,"\n------- ----------------- ---------------- ------------ ------ \n");
mfprintf(u,"\nA %f %f %f %f", Ini_A,A, std_err_A, DW);
mfprintf(u,"\nB %f %f %f ", Ini_B,B, std_err_B);
mfprintf(u,"\nC %f %f %f ", Ini_C,C, std_err_C);
mfprintf(u,"\n\n\n ");
mfprintf(u,"No. of Iterations: = %d\n\n",cnt+1);
mfprintf(u,"GN1 = %.7f\n\n", p_GN1);
mfprintf(u, "GN2 = %.7f\n\n", p_GN2);
mfprintf(u, "GN3 = %.7f\n\n", p_GN3);
mfprintf(u, "Sigma_Hat_Square= %f \t\t R_Square= %f\t D=%f",sigma_hat_square, R_square,D);
mfprintf(u,"\n\n COVARIANCE MATRIX \n");
mfprintf(u,"-------------------------\n");
mfprintf(u,"%f\t\t%f\t\t%f\n",Covariance_Matrix(1,1), Covariance_Matrix(1,2), Covariance_Matrix(1,3));
mfprintf(u,"%f\t\t%f\t\t%f\n",Covariance_Matrix(2,1), Covariance_Matrix(2,2), Covariance_Matrix(2,3));
mfprintf(u,"%f\t\t%f\t\t%f",Covariance_Matrix(3,1), Covariance_Matrix(3,2), Covariance_Matrix(3,3));
mfprintf(u,"\n\n SHOWING RESIDUALS\n\n ");
mfprintf(u, "Y = %f\n",Y);
mclose(u);
t=[1:1:n]';
Estimated_Y=A + B*(C^t);
for i=1:n, OBS(i,1)=OY(i,1);end
for i=1:n,EST(i,1)=Estimated_Y(i,1);end
plot2d(t,[OBS,EST],[2,3],leg="Observed@Estimated",nax=[1,n,1,n]);
legends(['t';'(Year)'],[1,1],opt="lr")
legends(['Y';'(Dependent Variable)'],[1,1],opt="ul")
xtitle("GOMPERTZ GROWTH CURVE");
end_prog=input("\n\n Continue??..PRESS 1 TO CONTINUE.....PRESS 2 TO EXIT");
if (end_prog==1)
exec("C:\SCILAB\Gompertz.sce");
end
if (end_prog==2)
printf("CLOSING PROGRAM........");
exit;
end
gh=xgetfile()would have been enough. You can still edit your message even I already answered, - Stéphane Mottelet