S-PLUS

The statistical methods described here use S-Plus, a statistical package available at http://www.mathsoft.com/splus.html.

Additional software and extensions for S-Plus are available at http://lib.stat.cmu.edu/S/.

The command S-Plus will start up the package on most platforms. This will
automatically create a **.Data** directory where the S-Plus data will be
stored. The examples shown in these pages assume that whatever files are
being scanned in are in the same directory where S-Plus was started, as are
any object files which are necessary. If
this is not the case, the path should be included in the *scan* calls.
The C files which are used in some of the methods above need to be compiled
to an object file, which is what the S-Plus routines actually use.

Splus is a statistical package which allows the user a wide flexibility in usage. Simple Splus objects include not only numbers, vectors and matrices, but also inherent and user-defined functions. Following is a sample session, with comments denoted by "#". ">" is the prompt. Splus # Starts Splus from shell X11() #Starts graphics window. #All of the usual arithmetic and logical operators are present. 5+3 > 8 #The "help()" function allows for on-line help about any Splus object, be it #function, etc. help(X11) #Provides help on the command X11(). #To attach a directory different form .Data, use the attach command: attach("/usr/joe/.Data") #For more information help(attach) #One can create and dimension a vector of length n, filled with zeros, by #the command "vect <- rep(0,n)". "<-" or "_" is the assignment operator. hestimates <- rep(0,50) #This is a nice way to create a vector which can be used later, e.g. in a #FOR loop. The vector elements are referred to as "hestimates[i]". #One can simulate stable series with the command "rstab". sample.series <- rstab(1000, index=1.5) # Length 1000, alpha=1.5. tsplot(sample.series) # Produces time series plot. #One can also simulate non-symmetric stable series -- the parametrization #used in this case is special -- see Samorodnitsky and Taqqu, Chapman #and Hall, 1994, p. 43. sample.series[1] > 0.8194 lsfit(sample.series)$coefficients > 1 .5 # $coefficients produces a subset of the output, namely, the coefficients # of a least square fit(Intercept, slope). # (Residuals, etc. can also be obtained). stem(sample.series) # Produces stem plot (median, quartiles, etc.) # One can simulate long-range dependent series (FARIMA) with the command # "arima.fracdiff.sim" . For the right syntax, use help: help(arima.fracdiff.sim) #or look at the function: arima.fracdiff.sim sample.series2 <- arima.fracdiff.sim(model=list(d=0.3),n=1000) sample.series2[1] > 1.293 #Most of the statistical methods take a vector as the "data" variable, and #run the vector through some manipulations, and usually come up with #numerical results and a plot. For example, #(1) Create and dimension an array: farima.data_array(0,dim=c(50,1000)) # Creates an array of zeros 50 by 1000. Members of array can be referenced as # farima.data[i,j]. A whole column or row of array can be referenced as # farima.data[i,] or farima.data[,j]. #(2) Fill in array # Now we put simulated long-range dependent series into array, making 50 # series, each length 1000. We use a FOR loop. for(i in 1:50){ farima.data[i,]<-arima.fracdiff.sim(model=list(d=0.1),n=1000)} #(3) Use an estimation procedure: # Suppose we want to estimate the scaling parameter H using the Aggregated # Variance method. We will use the function "plotvar" contained in the # file "file.S". The source command reads in the contents of this file. source("file.S") #Now we estimate H using our Aggregated Variance method. for (i in 1:50}{ hestimates[i]_plotvar(farima.data[i,],plot=False)} #(4) Examine results: #Since we are analyzing 50 series, we do not usually want to see plots. #Now one can find statistics for the estimator of H. mean(hestimates) sqrt(var(hestimates)) hist(hestimates) #returns histogram of this vector. #(5) Writing results to outside file, sink all output: sink("file_name") mean(hestimates) sqrt(var(hestimates)) sink() # closes file. # To see what objects one has defined, use the command: objects() # This lists everything which has been defined and not deleted. # To delete things use rm(). rm(sample.series) # To see what an object is, type in the name: plotvar #returns the definition of the function plotvar hestimates #returns the values of the vector hestimates #To split graphics window into 4 sub-plots, 2 by 2. par(mfrow=c(2,2)) #For info on axes, title, captions, etc. help(plot) #To save a graphic (plot): One has to regenerate the output and direct it #to a file instead of the X11 window. Last device created and not yet #closed is the default. Open file: postscript("name_of_file.ps") plotvar(sample.series, plot=T) #generate plot (portrait is default). dev.off() #close file #Alternatively, the print button on the X11() window saves a postscript #file as a by-product of printing. (Saved in directory where S-Plus was #started. The default is landscape, but portrait printing can be done by #pressing the "print orientation" button in the X11() window. # Control-C interrupts. Control-Z suspends. #Quit q()