Hi everyone,
Fist of all I want to say thanks to Sven and Ignacio because his suggestions about
inserting a statistical table in a function have been very helpful.
Now, I have some problems with my function script and I don't really understand what
is actually the problem.
When I trie to run my sample script, I get the following error message: "the
variable 0 is duplicated in the list of instructions"
Here is my function script. I ommit A and B matrices because are quite large, but
everything else is there:
function bundle DeWallis_test (series y "Explained variable",
list xlist "Explanatory variables (Note: constant term is included by
default)", bool dummy[0] "Are dummy variables
included in the regression? (remember that constant is included by default)") T =
$nobs list xlist = const xlist if T<16 funcerr "Insufficient
observations" endif ols y xlist --quiet scalar SCE = $ess matrix uhat = $uhat
scalar ut = 0 loop i = 5..T --quiet scalar ui = (uhat[i,1] - uhat[i-4,1])^2 ut = ut
+ ui endloop scalar DeWallis_stat = ut/SCE #A : DeWallis_stat_table_nodummy #B :
DeWallis_stat_table_dummy #De Wallis test if dummy matrix xlist = xlist scalar k
= cols(xlist) - 4 if k>5 funcerr "The number of regressors has to be less
or equal to 5 (withot considering the constant term nor the dummy variables)"
endif if k<1 funcerr "Insufficient number of regressors. Please make sure
you input at least one independent variable and the three dummy") endif scalar
row = T/4 -3 scalar row = floor(row) scalar col_left = 2*k scalar col_right = 2*k
+1 if DeWallis_stat < B[row , col_left] string DeWallis_test_result = "We
reject H0, there is evidence of negative autocorrelation" else if
DeWallis_stat > B[row, col_right] string DeWallis_test_result = "We reject
H0, there is evidence of positive autocorrelation" else string
DeWallis_test_result = "The test does not provide enough evidence to suggest
autocorrelation" endif endif else matrix xlist = xlist scalar k =
cols(xlist) - 1 if k>5 funcerr "The number of regressors has to be less or
equal to 5 (withot considering the constant term)" endif if k<1 funcerr
"Insufficient number of regressors. Please make sure you input at least one
independent variable") endif scalar row = T/4 -3 scalar row = floor(row)
scalar col_left = 2*k scalar col_right = 2*k +1 if DeWallis_stat < A[row ,
col_left] string DeWallis_test_result = "We reject H0, there is evidence of
negative autocorrelation" else if DeWallis_stat > A[row, col_right]
string DeWallis_test_result = "We reject H0, there is evidence of positive
autocorrelation" else string DeWallis_test_result = "The test does
not provide enough evidence to suggest autocorrelation" endif endif endif
DeWallis_test["De Wallis statisitic"] = DeWallis_stat DeWallis_test["Test
result"] = DeWallis_test_result print
"--------------------------------------------\n" printf "The value of the
De Wallis statistic is: %g\n", DeWallis_stat print
"--------------------------------------------\n" return DeWallis_test end
function
#Sample scriptinclude DeWallis_test.gfnopen
'C:\Users\Owner\Documents\MATLAB\BasesDeDatos\np.xlsx' --quietseries y = v1list
xlist = const v2 bundle results = DeWallis_test(y,xlist,0)print results
Thanks in advance for your help.
Sincerely, Juan Pablo de Botton Falcón.