Skip to main content

Graphics in SAS SGPLOT illustrating ANOVA analysis results.

Output and graphics from statistical programming packages are often time-consuming to read and interpret. In peer-reviewed publications you usually provide both a written assessment, tables and graphics illustrating data and analysis results. ANOVA analysis is still a very common analysis technique and it is possible to beautify the output from analysis using PROC SGPLOT

ods graphics;
proc format lib=work;
value timevar
12='0-12 hrs'
18='12-18 hrs'
24='18-24 hrs'
32='Cumulated 0-24 hrs'
;
run;
proc sql;
  create table estimates
    (  Treatment char(12) label='Treatment Group'
     , Time      num      label='Visit number'
     , Time2     num      label='Visit number'
     , TimeVar   char(18) label='Visit number'
     , Mark      char(8)  label='p values'
     , Est       num      label='Est'
     , LCL       num      label='LCL'
     , UCL       num      label='UCL'
    )
  ;
insert into estimates
values('Control', 12, 12,  '0-12 hrs', '',87.5000,65.9552,109.0448)
values('Control', 18, 18, '12-18 hrs', '',23.1250,15.7518,30.4982)
values('Control', 24, 24, '18-24 hrs', '',16.8750,10.3570,23.3930)
values('Control', 32, .,'Cumulated 0-24 hrs', '',127.7083,101.1505,154.2661)
values('Intervention', 12, 12, '0-12 hrs', 'p=0.0159',50.0000,28.4552,71.5448)
values('Intervention', 18, 18, '12-18 hrs', 'p=0.0256',11.2500,3.8768,18.6232)
values('Intervention', 24, 24, '18-24 hrs', 'p=0.0462',7.5000,0.9820,14.0180)
values('Intervention', 32, .,'Cumulated 0-24 hrs', 'p=0.0023',69.3750,42.8172,95.9328)
  ;
quit;
title 'Morphine consumption during postop';
proc sgplot data=estimates;   format Time Time2 timevar.;   scatter x=Time y=est / yerrorlower=LCL yerrorupper=UCL group=Treatment groupdisplay=cluster clusterwidth=0.2 errorbarattrs=(thickness=1) datalabel=Mark DATALABELPOS=BOTTOMRIGHT DATALABELATTRS=(color=BLACK);   series  x=Time2 y=est / lineattrs=(pattern=solid) group=Treatment groupdisplay=cluster clusterwidth=0.2 lineattrs=(thickness=2) name='s';   yaxis label='Mean with 95% CL' grid;   xaxis display=(nolabel);   keylegend 's' / title='Treatment'; run;
proc sgplot data=estimates;   format Time Time2 timevar.;   scatter x=Time y=est / yerrorlower=LCL yerrorupper=UCL group=Treatment groupdisplay=cluster clusterwidth=0.2 errorbarattrs=(thickness=1) DATALABELPOS=BOTTOMRIGHT DATALABELATTRS=(color=BLACK);   series  x=Time2 y=est / lineattrs=(pattern=solid) group=Treatment groupdisplay=cluster clusterwidth=0.2 lineattrs=(thickness=2) name='s';   yaxis label='Mean with 95% CL' grid;   xaxis display=(nolabel); run;









Comments

Popular posts from this blog

HackRF on Windows 8

This technical note is based on  an extract from thread . I have made several changes and added recommendations. I have experienced lot of latency using GnuRadio and HackRF on Pentoo Linux, so I wanted to try out GnuRadio on Windows. HackRF One is a transceiver, so besides SDR capabilities, it can also transmit signals, inkluding sweeping a given range, uniform and Gaussian signals. Pentoo Linux provides the most direct access to HackRF and toolboxes. Install Pentoo Linux on a separate drive, then you can use osmocom_siggen from a terminal to transmit signals such as near-field GSM bursts, which will only be detectable within a meter. Installation of MGWin and cmake: Download and install the following packages: - MinGW Setup (Go to the Installer directory and download setup file) - CMake (I am using CMake 3.2.2 and I installed it in C:\CMake, this path is important in the commands we must send in the MinGW shell) Download and extract the packages

Alder/korrekt århundrede udfra cpr nummer

De fleste, der arbejder med registre eller databaser, står ofte med problemstillingen, at alder er uoplyst, medens cpr-nummer er kendt. Hvordan regner man den ud? Følgende regel er gældende: Hvis syvende ciffer er 0, 1, 2 eller 3 er man født i det 20. århunderede (1900-tallet) Ligeledes, hvis syvende ciffer er 4 eller 9, og årstallet (femte og sjette ciffer) er større end eller lig 37. Endelig er man født i det 19. århundrede (1800-tallet) hvis syvende ciffer er 5, 6, 7 eller 8 og årstallet er større end eller lig 58. Nedenfor finder du eksempel i SAS kode: En lille makro, der udover fødselsdato også udregner køn samt den præcise alder givet datovariabel. Kilde: Opbygning af CPR nummeret, cpr.dk proc format library=work; value gender 0="Female" 1="Male" ; run; %macro agefromCPR(cpr,datevar=inddto,birthvar=birth,agevar=age); dy_temp=input(substrn(&cpr,1,2),2.); mt_temp=input(substrn(&cpr,3,2),2.); yr_temp=input(substrn(&cpr,5,2),

Comorbidity indexes in SQL

Generating Elixhauser comorbidity index from Danish National Health Register as relational database. ( ICD 10 Coding  in SAS) A lookup-table based version of Charlson comorbidity index I made in SQL. A similar approach can be applied to Elixhauser. SELECT V_CPR, MAX(EI1)+MAX(EI2)+MAX(EI3)+MAX(EI4)+MAX(EI5)+ MAX(EI6)+MAX(EI7)+MAX(EI8)+MAX(EI9)+MAX(EI10)+ MAX(EI11)+MAX(EI12)+MAX(EI13)+MAX(EI14)+MAX(EI15)+ MAX(EI16)+MAX(EI17)+MAX(EI18)+MAX(EI19)+MAX(EI20)+ MAX(EI21)+MAX(EI22)+MAX(EI23)+MAX(EI24)+MAX(EI25)+ MAX(EI26)+MAX(EI27)+MAX(EI28)+MAX(EI29)+MAX(EI30)+MAX(EI31) AS Elixhauser FROM (SELECT V_CPR, -- Congestive Heart Failure CASE WHEN DIAG LIKE 'DI099%' OR DIAG LIKE 'DI110%' OR DIAG LIKE 'DI130%' OR DIAG LIKE 'DI132%' OR DIAG LIKE 'DI255%' OR DIAG LIKE 'DI420%' OR DIAG LIKE 'DI425%' OR DIAG LIKE 'DI426%' OR DIAG LIKE 'DI427%' OR DIAG LIKE 'DI428%' OR DIAG LIKE 'DI429%' OR D