1. Home
  2. RFUNCTION directive

RFUNCTION directive

Estimates functions of parameters of a linear, generalized linear, generalized additive or nonlinear model.

Options

PRINT = string tokens What to print (estimates, se, correlations); default esti,se
CHANNEL = identifier Channel number of file, or identifier of a text to store output; default current output file
CALCULATION = expression structures Calculation of functions involving nonlinear and/or linear parameters; no default
SE = variate To save approximate standard errors; default *
VCOVARIANCE = symmetric matrix To save approximate variance-covariance matrix; default *
SAVE = identifier Specifies save structure of regression model; default * i.e. that from last model fitted

Parameter

    scalars Identifiers of scalars assigned values of the functions by the calculations

Description

The RFUNCTION directive provides estimates of functions of parameters in regression models, together with approximate standard errors and correlations. It can be used after any regression model except after fitting standard curves with separate nonlinear parameters for each level of a factor (option NONLINEAR=separate in FITCURVE, ADD, DROP and SWITCH). However, if there are any linear parameters in a general nonlinear model for which standard errors have not been estimated, standard errors and correlations cannot be estimated for functions that depend on those parameters.

The functions are defined by the expressions supplied by the CALCULATION option of RFUNCTION. These define how to calculate the function from the values of the parameters.

In linear and generalized linear models, the parameters have no identifiers associated with them. You should then refer to each parameter by using a text structure containing the name of the parameter as displayed, for example, by the option PRINT=estimates of the FIT directive. The text structure can, of course, just be a string, for example 'Constant'. However, it must match exactly, including case, the name displayed by FIT.

Unless initial values have been specified using the RCYCLE directive, parameters in standard curves (fitted by FITCURVE) usually also have no identifiers and so should be referred to using texts as for linear regression models. However, in nonlinear models (fitted by FITNONLINEAR) identifiers are specified for the nonlinear parameters using RCYCLE. Names can be specified for the linear parameters of nonlinear models using the LINEARPARAMETERS option of RCYCLE; if not, texts must be used as in linear regression models.

The parameter of RFUNCTION provides a list of scalars that are to hold the estimated values of the functions. These need not be declared in advance, but will be defined automatically if necessary. The CALCULATION option specifies a list of one or more expressions to define the calculations necessary to evaluate the functions from the parameters of the model, and place the results into the scalars.

The PRINT option controls output as usual. By default, the estimates of the function values are formed – as could be done simply by a CALCULATE statement using the expressions if the parameters were available in scalars. In addition, approximate standard errors are calculated, using a first-order approximation based on difference estimates of the derivatives of each function with respect to each parameter. Approximate correlations can also be requested.

The SE and VCOVARIANCE options allow standard errors and the approximate variance-covariance matrix of the functions to be stored; the estimates of the functions themselves are automatically available in the scalars listed by the parameter of RFUNCTION. The SAVE option specifies which fitted model is to be used, as in the RDISPLAY and RKEEP directives.

Options: PRINT, CHANNEL, CALCULATION, SE, VCOVARIANCE, SAVE.

Parameter: unnamed.

See also

Directives: EXPRESSION, FIT, FITCURVE, FITNONLINEAR.

Procedures: NLAR1, FIELLER.

Commands for: Regression analysis.

Example

CAPTION 'RFUNCTION Example'; STYLE=meta

"Remove any predefined structures that may clash with this example"
DELETE [REDEFINE=yes] X,Y,model,Fit,B,M,beta,gamma,Fitted,Parms,DF,N,\ 
       MinX,MaxX,Fit_X,N1,Fit_Y,Fit_SE,MFit,fmodel,i,ec50_calc,\ 
       CI_Lo,CI_Hi,X50,Y50,EC50,H50,LMin

"Data for response function"
VARIATE X; !(-2.204,-2.204,-1.903,-1.903,-1.602,-1.602,-1.3,-1.3,-0.999,\
   -0.999,-0.698,-0.698,-0.397,-0.397,-0.096,-0.096,0.204,0.204)
VARIATE Y; !(0.523,-0.141,0.959,1.095,2.586,1.677,6.381,5.684,7.681,\
   9.769,12.049,13.884,14.683,12.344,15.531,16.674,16.187,18.672)

"Fit a Non-Linear Model"
EXPRESSION [VALUE = Fit = B + (M - B)/(1+ EXP(beta - gamma*X))] model
MODEL  [DISTRIBUTION=normal; DISPERSION=*] Y; FITTED=Fit
RCYCLE [MAXCYCLE=100; METHOD=GaussNewton] B,M,beta,gamma
FITNONLINEAR [PRINT=model,summary,estimates; CALC=model;\ 
       CONSTANT=estimate; FPROB=yes]
RKEEP FITTEDVALUES=Fitted; ESTIMATES=Parms; SE=SEParms; DF=DF

"Calculate SE's of fitted values over range of data"
SCALAR N; 100
CALC MinX = MIN(X)
 &   MaxX = MAX(X)
 &   Fit_X = MinX + (MaxX - MinX)*!(0...N)/100
 &   N1 = N + 1
VARIATE [N1] Fit_Y,Fit_SE
SCALAR B,M,beta,gamma; #Parms
EXPRESSION [VALUE = MFit = B + (M - B)/(1 + EXP(beta - gamma*x))] fmodel
FOR [NTIMES=N1;INDEX=i]
   CALC x = Fit_X$[i]
   RFUNCTION [PRINT=*;CALC=fmodel;SE=MF_se] MFit
   CALC (Fit_Y,Fit_SE)$[i] = MFit,MF_se
ENDFOR
"Calculate 95% confidence limits around fit"
CALC CI_Lo,CI_Hi = Fit_Y + (-1,1)*Fit_SE*EDT(0.975;DF)

"Calculate point at which function reaches 50% of maximum with SE"
EXPRESSION [VALUE=EC50 = beta/gamma] ec50_calc
RFUNCTION [PRINT=e,se;CALC=ec50_calc] EC50

"Create points to plot 50% value on graph"
CALC H50 = B + (M - B)/2
CALC LMin = MIN(CI_Lo)
VARIATE X50,Y50; !(MinX,EC50,EC50),!(H50,H50,LMin)

"Draw Graph of fitted values with confidence curves"
FRAME [RESET=yes] WINDOW=3; BOX=omit
FRAME [RESET=yes] WINDOW=2; YL=0.14; YU=0.25; XL=0.7; XU=0.925; BOX=include
XAXIS [RESET=yes] WINDOW=3; TITLE='X';
YAXIS [RESET=yes] WINDOW=3; TITLE='Y'
PEN   [RESET=yes] 1; METHOD=point; SYMBOL=2; CSYMBOL=2; CFILL=2; COLOUR=2
PEN   [RESET=yes] 2...5; METHOD=3(monotonic),line; SYMBOL=0;\ 
      CLINE=4,12,12,2; THICKNESS=5,2,2,1; LINESTYLE=1,2,2,1
DGRAPH [WINDOW=3; TITLE='Fitted Model vs Observed Data';Key=2]\ 
       Y=Y,Fit_Y,CI_Lo,CI_Hi,Y50; X=X,3(Fit_X),X50;\ 
       DESC='Data','Fitted','95% CI',' ','50% of max'
Updated on March 5, 2019

Was this article helpful?