SAS® 9.2: Implications for Biotech Bay Area SUG June 7th 2010

SAS® 9.2
Implications for Biotech
Bay Area SAS User’s Group
June 7th 2010
Sarmad Pirzada, MD, MPH
Cancer Research & Biostat.
Seattle WA 98199
sarmad@hybriddatasystems.com
Bay Area SUG June 2010
1
Topics for SAS Programmers and IT
• ODS Graphics
• SAS Graph Vs. Data
Graphics
• Procedures
–
–
–
–
–
PHREG
LIFETEST
SGPLOT
SAS Graph Template
SGPLOT & Related
• A Few Tricks
• SAS Installs
• OS Issues
– 32 Vs. 64 Bit
– M2 Vs M3
– Win Server 2008 R2
• Download Manager
• ODBC Driver Issues for
34 Vs. 64 Bit for Unix
• JAVA Applet Installs
Bay Area SUG June 2010
2
SAS/Stat PHREG Procedures < SAS9.2
Survival
Curves
Old Way <9.2
1.
2.
3.
4.
5.
6.
Data Step
Lots of SAS Code (>1,200 lines of macro code)
SAS Stat Proc Outputs
Data Step
SAS Graph Programs
Output (Not Easily Portable)
Bay Area SUG June 2010
3
Code Example from < SAS9.1 for Survival Curves
Bay Area SUG June 2010
4
SAS/Stat PHREG Procedures > SAS9.1
Survival
Curves
New Way
ods graphics on;
proc phreg data=s9321 plots(overlay=stratum)=survival;
*ods select survivalplot;
model surtim*surind(0)= age ;
baseline covariates=ROW out=PRED survival=_all_/ROWID=ISS;
run;
ods graphics off;
quit;
Bay Area SUG June 2010
5
SAS/REG Procedures SAS9.2
Other ODS
Graphics
New Way
Ref: SAS/Stat® 9.2 User’s Guide: Stat Graphics Using ODS
ods graphics on;
proc reg data=sashelp.class;
model weight=height;
quit;
run;
ods graphics off;
Bay Area SUG June 2010
6
GTL and the SG Procedure
Scatter Plot
•Proc Template;
ods listing sge=on;
proc template;
define statgraph classscatter;
begingraph;
entrytitle 'Weight by Height';
layout overlay;
scatterplot y=weight x=height;
endlayout;
endgraph;
end;
run;
proc sgrender data=sashelp.class template=classscatter;
run;
proc sgplot data=sashelp.class;
title 'Weight by Height';
scatter x=height y=weight;
run;
Ref: SAS/Stat® 9.2 User’s Guide: Stat Graphics Using ODS
Bay Area SUG June 2010
7
GTL and the SG Procedure
Spline Regression Plot
ods graphics on;
proc transreg data=sashelp.class;
model
identity(weight)=spline(height);
output out=class clm cli p;
run;
Ref: SAS/Stat® 9.2 User’s Guide: Stat Graphics Using ODS
Bay Area SUG June 2010
8
GTL and the SG Procedure
Box Plot
proc template;
define statgraph classboxplot;
begingraph;
entrytitle 'Gender and Weight
Distribution';
layout overlay;
boxplot y=weight x=sex; endlayout;
endgraph;
end;
run;
proc sgrender data=sashelp.class template=classboxplot;
run;
Ref: SAS/Stat® 9.2 User’s Guide: Stat Graphics Using ODS
Bay Area SUG June 2010
9
SAS Graph Template Language (GTL)
Bay Area SUG June 2010
10
SAS Graph Template Language (GTL)
Bay Area SUG June 2010
11
SAS/Stat Survival Analysis: PROC PHREG
Macro Errors
•Macros Using PROC PHREG, developed prior to SAS9.2 will run into errors if
macros are using default output names
•Usage Note 37170 : Variable name in ParameterEstimates table changed from
'Variable' to 'Parameter'
•Code: Output ParameterEstimate=PE(rename=(Parameter=Variable));
•This Topic covered in usage notes: http://support.sas.com/kb/37/170.html
•In SAS9.2, Plots=Survival (CL), ODS Graphics plot does not extend the survival
confidence limits to the last time for censored observations.
•This Topic is covered in usage notes: http://support.sas.com/kb/35/951.html
Bay Area SUG June 2010
12
SAS/Stat Survival Analysis: Proc PHREG
Hazard Ratios
•GLM Parameterization: Wald Confidence limits provided by the
HAZARDRATIO might be incorrect
•Proc PHREG;
•Class Gender Group/Param=GLM;
•Model Duration*Censor(1)=Gender X Group
X*Group;
•Solution: Need to Compute Custom Hazards Ratios
•HotFix
http://ftp.sas.com/techsup/download/hotfix/HF2/A52.html#38391
Bay Area SUG June 2010
13
SAS/Stat Survival Analysis: Proc PHREG
Other Changes
•Estimation Method: Default method for estimating survival function has
changed to Cumulative Hazards from Product Limit (Method=CH Vs.
Method=PL). Implication: If default method has been used in the past, the
option needs to be changed for reproducing the same results.
•More memory for survival analysis (Usage Notes: 37830)
•Where statements may lead to syntax error
•Example: Proc Phreg(where(age=1 or age=2) and x=‘B’ data=a;
•Fix: Proc Phreg Data=a(where=((age=1 or age=2) and x=‘B’));
•On the Good Side: A Class Option in Phreg!
Bay Area SUG June 2010
14
IT/Install Related:
Most Common ODS Graphics Error
Error Log:
ERROR: The Java proxy is not responding.
ERROR: Unable to load the Java Virtual Machine.
Please see the installation instructions or system administrator.
Investigate under
Win32/64:
proc options option=appletloc; run;
proc options option=jreoptions; run;
proc javainfo; run;
Bay Area SUG June 2010
15
Investigations and e-mails for
SAS Tech Support!
Steps for checking JRE Version
1. Check to see if you have this a jvm.dll file here
C:\Program Files\Java\JRE1.5.0_12\bin\client\jvm.dll
2. Open a command prompt and go to C:\Program
Files\Java\JRE1.5.0_12\bin\
Issue the following at the prompt: java -version
Save results for Tech Support:
3. Check your config file: c:\program
files\sas\sasfoundation\9.2\nls\en\sasv9.cfg
Search for the -jreoptions line
Review every thing that you see on the -jreoptions line
4. Review the logs in the following folder: C:\Documents and
Settings\userid\Application Data\SAS\LOGS
Bay Area SUG June 2010
16
IT/Install Related:
Most Common ODS Graphics Error
Error Log:
Investigate under
Unix/Solaris:
ERROR: The Java proxy is not responding.
ERROR: Unable to load the Java Virtual Machine.
Please see the installation instructions or system administrator.
%put %sysget(JAVA_HOME) ;
%put %sysget(LD_LIBRARY_PATH) ;
%put %sysget(LD_LIBRARY_PATH_32) ;
%put %sysget(LD_LIBRARY_PATH_64) ;
proc javainfo ; run ; proc javainfo picklist 'graph/graph.txt'; run;
proc options option=jreptions ; run ;
Modify JREOPTIONS value
/opt/sas/SAS_9.2/SASFoundation/9.2/sasv9_local.cfg
Add
-Dsas.app.repository.path=/opt/sas/SAS_9.2/SASVersionedJarRepository/9.2/(machine name)
Good SAS Tech Support Contact: Tim Braam
SAS Technical Support/Unix Systems
Bay Area SUG June 2010
17
IT/Install Related DBC Drivers for Oracle
32 Vs. 64 Bit Issues (Notes)
#--- This line assumes that ODBC is located in a directory other than /usr/local
#---------------------------------------------------------------------------------------------------------------LD_LIBRARY_PATH=$SYBASE/$SYBASE_OCS/lib:$ODBCHOME/lib/sparcv9:$ODBCHOME/lib:/usr/lib/sparcv9:/usr/lib:$
ORACLE_HOME/lib:$ORACLE_HOME/lib32
http://support.sas.com/kb/11/728.html oracle 64
_____________________________________________
#!/bin/bash
# IMPORTANT !!!
# This script moves 32 bit modules to the executables
# so that 32 bit ODBC drivers will work
# Must be applied following all Service packs
# --------------------------------------------------#set -x
VERS="9_2"
OUT="/opt/sas/odbc9.2_change.""`date +'%Y%b%d'`"".log"
OUTZIP="/opt/sas/odbc_bkup.""`date +'%Y%b%d%H%M'`"".zip"
SASHOME=/opt/sas/SAS_9.2/SASFoundation/9.2
echo '****************************************' > $OUT
echo 'starting bin/ODBC_9.2.bash ' >> $OUT
echo '****************************************' >> $OUT
function move_and_link
{while read fn
do
echo " " >> $OUT
fn2=${fn%_u}
echo ". zipping $fn2 to zip file ">> $OUT
zip $OUTZIP $fn $fn2
echo ".. moving $fn2 to $fn2.orig64 ">> $OUT
mv -i $fn2 $fn2.orig64
echo "... linking $fn to $fn2" >> $OUT
ln -s $fn $fn2
echo " " >> $OUT
done }
cd $SASHOME
find $SASHOME -name '*_u' -print >/tmp/sas_odbc_files
Bay Area SUG June 2010
move_and_link < /tmp/sas_odbc_files
rm /tmp/sas_odbc_files
18
Summary
•SAS9.2 has major changes in its graphics capabilities that are worth
changing your code to
•Challenges for IT in terms of 32 Vs. 64 Bit Operating Systems
•Graph Template Language is a Powerful Tool for Programmers
•Portable Graphics
•Check your Essential Macros Prior to Migrating to 9.2M3
•Thank You!
Bay Area SUG June 2010
19