Type or copy the following statements into a program window, and select
→ from the main menu.declare DataObject dobj; dobj = DataObject.CreateFromFile("Hurricanes"); dobj.WriteVarsToServerDataSet( {"wind_kts" "min_pressure"}, "Work", "Hurr", true );
These statements open the Hurricanes
data set from your PC and write the wind_kts
and min_pressure
variables to a server data set called Work.Hurr
. These statements are explained in Chapter 2: Reading and Writing Data.
In the Chapter 4: Calling SAS Procedures, you called the REG procedure with the Work.Hurr
data and viewed tables and statistics in the output window. This time, you use the OUTPUT statement to create an output data
set that includes the residual values for the regression model.
Add the following statements at the bottom of the program window, and select
→ from the main menu.submit; proc reg data=Hurr plots=none; model wind_kts = min_pressure; output out=RegOut R=Residual; run; endsubmit;
When you run the program, SAS/IML Studio calls the REG procedure. The procedure creates an output data set named Work.RegOut
that contains all of the original variables in Work.Hurr
, plus a new variable named Residual
. This variable is created by the R= option in the OUTPUT statement.
Now that an output variable is created, you can add it to the DataObject. You can read variables in a server data set directly
into a DataObject by using the CopyServerDataToDataObject module. (Note that the number of observations in Work.RegOut
matches the number of observations in the dobj
DataObject.) After a variable is in the DataObject, you can use that variable to create graphs that help to visualize the
analysis. In this case, you can create a plot of the residuals versus the explanatory variable.
Add the following statements at the bottom of the program window, and select
→ from the main menu.ok = CopyServerDataToDataObject( "Work", "RegOut", dobj, {"Residual"}, /* name on server */ {"Residual"}, /* name in DataObject */ {"Residuals"}, /* label in DataObject */ true /* if an existing variable has this name, replace it */ ); declare ScatterPlot ResPlot; ResPlot = ScatterPlot.Create( dobj, "min_pressure", "Residual" );
The residual plot (Figure 5.1) shows many storms with large negative residuals. These storms had much lower wind speeds (20–40 knots lower) than predicted
from their values of min_pressure
.
Figure 5.1: Creating a Residual Plot