Presentation is loading. Please wait.

Presentation is loading. Please wait.

Being Productive with Stata and VA Data Give me six hours to chop down a tree and I will spend the first four sharpening the axe. --Abraham Lincoln Todd.

Similar presentations


Presentation on theme: "Being Productive with Stata and VA Data Give me six hours to chop down a tree and I will spend the first four sharpening the axe. --Abraham Lincoln Todd."— Presentation transcript:

1 Being Productive with Stata and VA Data Give me six hours to chop down a tree and I will spend the first four sharpening the axe. --Abraham Lincoln Todd Wagner August 2008

2 Outline Database manipulation in Stata Database manipulation in Stata Data Analysis in Stata Data Analysis in Stata

3

4 Working Interactively and.do files You can issue commands directly into the command line. You can issue commands directly into the command line. Unless you save your commands into a batch file (a.do file), you’ll lose your code once you close Stata. Unless you save your commands into a batch file (a.do file), you’ll lose your code once you close Stata. I often work interactively and then save the “right” commands in a do file. I often work interactively and then save the “right” commands in a do file.

5 Editing a.do file in Stata Any ASCII text editor will work Any ASCII text editor will work Stata has a built in text editor, but it is limited. Stata has a built in text editor, but it is limited. I recommend exploring your options I recommend exploring your optionshttp://fmwww.bc.edu/repec/bocode/t/textEditors.html

6 How Stata Thinks about Data

7 Handling Data SAS processes one record at a time SAS processes one record at a time Stata processes all the records at the same time Stata processes all the records at the same time –Loops are commonly used in SAS –Loops are very rarely used in Stata

8 Loading Data into Memory Stata reads the data into memory Stata reads the data into memory –set mem 100m (before you load the data) You must have enough memory for your dataset You must have enough memory for your dataset With large datasets: With large datasets: –drop unnecessary variables –Use the compress command (but don’t compress SCRSSN)

9 Stata Abbreviations Stata commands can be abbreviated with the first three letters Stata commands can be abbreviated with the first three letters –regression income education female could be written –reg income education female

10 Stata Help Stata’s built in help is great Stata’s built in help is great –Help –Help Stata manuals are great because they review theory Stata manuals are great because they review theory

11 Stata and the Web Stata is “web aware” Stata is “web aware” Check for updates periodically Check for updates periodically –update all You can search for user-written programs You can search for user-written programs –findit output –findit outreg (click to install)

12 Stata in Windows Page up scrolls through the previous commands Page up scrolls through the previous commands There is a graphical user interface (menus) if you forget a command There is a graphical user interface (menus) if you forget a command In Unix, you can all Stata’s functionality if you use x-windows (e.g., Cygwin). In Unix, you can all Stata’s functionality if you use x-windows (e.g., Cygwin).

13 Sysdir, ls and cd Stata recognizes some unix commands, such as ls and cd Stata recognizes some unix commands, such as ls and cd Sysdir provides a listing of Stata’s working directories Sysdir provides a listing of Stata’s working directoriessysdir STATA: C:\Program Files\Stata9\ UPDATES: C:\ProgramFiles\Stata9\ado\updates\ BASE: C:\Program Files\Stata9\ado\base\ SITE: C:\Program Files\Stata9\ado\site\ PLUS: c:\ado\stbplus\ PERSONAL: c:\ado\personal\ OLDPLACE: c:\ado\ Store your data on a VA server– not on your PC or laptop! Store your data on a VA server– not on your PC or laptop!

14 Delimiters SAS recognizes “;” as a delimiter SAS recognizes “;” as a delimiter Stata recognizes the carriage return Stata recognizes the carriage return –Always add a carriage return after your last command You can change delimiters to ; You can change delimiters to ; #delimit ;

15 Missing Data Stata and SAS both use “.” as missing Stata and SAS both use “.” as missing Stata implicitly values a missing as a very large number Stata implicitly values a missing as a very large number SAS implicitly values a missing as a very small number SAS implicitly values a missing as a very small number

16 Generating and Recoding Variables In SAS you type In SAS you typequality=0; If VA=1 then quality=1; In Stata you type In Stata you type gen quality=0 recode quality 0=1 if VA==1 or replace quality=1 if VA==1

17 Boolean Logic Stata is picky about Boolean logic Stata is picky about Boolean logic gen y=x if a==b (must use two ==) gen y=x if a>b & b>10 (must use &) gen y=x if a must be before =)

18 Creating Dummy Variables Goal: create dummy variable for gender Goal: create dummy variable for gender gen male=sex==“M” tab sex, gen(sex_) This second command automatically creates 2 dummy variables This second command automatically creates 2 dummy variables Be careful about missing data– missing data are assigned to 0, unless you use “if” or “recode” Be careful about missing data– missing data are assigned to 0, unless you use “if” or “recode”

19 Drop Drop (drops variables) Drop (drops variables) Drop if X==1 (drop cases where value is 1) Drop if X==1 (drop cases where value is 1)

20 egen Commands You want to generate total costs for a medical center You want to generate total costs for a medical center In SAS this is done by proc summary In SAS this is done by proc summary In Stata, you can type In Stata, you can type collapse (sum) costs, by (stan3) or sort sta3n by sta3n: egen sumcost=total(cost)

21 ICD-9 Codes Stata has capabilities to handle ICD-9 diagnosis and procedure codes Stata has capabilities to handle ICD-9 diagnosis and procedure codes You can You can –check to see if codes are valid –generate identifiers based on codes or ranges of codes

22 Dates Same date functions as SAS Same date functions as SAS

23 Combining Data Merge Merge –this automatically creates a variable called _merge –merge==1 obs. from master data –merge==2 obs. from only one using dataset –merge==3 obs. from at least two datasets, master or using merge scrssn admitday disday using data_y Append (stacking data) Append (stacking data)

24 Explicit Subscripting Identify the most recent encounter in an encounter database Identify the most recent encounter in an encounter database gsort id -date by id : gen n=_n by id : gen N=_N gen select=n==1 Ascending sort by ID and reverse by date Record counter from 1 to N per person Total number of records per person

25 Using Stata

26 Set, Clear and More Set: sets system parameters Set: sets system parameters –Need to set memory size to open a database set mem 100m Clear erases data from memory Clear erases data from memory When output is >1 page, you are asked to continue ( set more off ) When output is >1 page, you are asked to continue ( set more off )

27 Summarizing Data. sum gender age educ Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- gender | 4085 1.496206.5000468 1 2 age | 4085 64.5601 9.451724 50 94 educ | 4085 4.398286 1.662883 1 9 Sum, d provides more details on each variable Sum, d provides more details on each variable Tabstat provides summary info, including totals Tabstat provides summary info, including totals

28 Tabulating Data. tab gender gender | Freq. Percent Cum. gender | Freq. Percent Cum.------------+----------------------------------- 1 | 2,058 50.38 50.38 1 | 2,058 50.38 50.38 2 | 2,027 49.62 100.00 2 | 2,027 49.62 100.00------------+----------------------------------- Total | 4,085 100.00 Total | 4,085 100.00. table gender ---------------------- gender | Freq. gender | Freq.----------+----------- 1 | 2,058 1 | 2,058 2 | 2,027 2 | 2,027----------------------

29 Tabulating Data tab gender age too many values r(134); tab age gender tab age gender | gender | gender age | 1 2 | Total age | 1 2 | Total-----------+----------------------+---------- 50 | 49 69 | 118 50 | 49 69 | 118 51 | 72 71 | 143 51 | 72 71 | 143… 94 | 1 0 | 1 94 | 1 0 | 1-----------+----------------------+---------- Total | 2,058 2,027 | 4,085 Total | 2,058 2,027 | 4,085

30 Tabstat. tabstat age, by (gender) gender | mean gender | mean---------+---------- 1 | 64.77454 1 | 64.77454 2 | 64.34238 2 | 64.34238---------+---------- Total | 64.5601 Total | 64.5601--------------------. table gender, c(mean age) ----------------------- gender | mean(age) gender | mean(age)----------+------------ 1 | 64.77454 1 | 64.77454 2 | 64.34238 2 | 64.34238-----------------------

31 Graphing Diagnostic graphics Diagnostic graphics Presenting Presentingresults

32 Basic Analytical Functions OLS (reg) OLS (reg) Logistic, probit, count data (e.g., CLAD) Logistic, probit, count data (e.g., CLAD) Multinomials Multinomials GLM/HLM GLM/HLM Duration models Duration models Semi and non-parametric models Semi and non-parametric models

33 Creating Publishable Tables Outreg command Outreg command Outputs data to a delimited file Outputs data to a delimited file Delimited file can be read into Excel Delimited file can be read into Excel Very flexible Very flexible Creates publishable tables easily Creates publishable tables easily

34 Example with VA data

35 Becaplermin June 2006, FDA issued a Boxed Warning for becaplerim (a treatment for lower extremity diabetic ulcers) June 2006, FDA issued a Boxed Warning for becaplerim (a treatment for lower extremity diabetic ulcers) Warning raised potential risk of cancer related mortality Warning raised potential risk of cancer related mortality

36 Analytical Goal Case-control study for becaplermin Case-control study for becaplermin Sample is all patients with a diabetic ulcer of the lower extremity Sample is all patients with a diabetic ulcer of the lower extremity Exposure is quantity of becaplermin prescriptions Exposure is quantity of becaplermin prescriptions Multivariate analysis, stratifying for patients with prior history of cancer Multivariate analysis, stratifying for patients with prior history of cancer

37 Pulling VA Data VA utilization data extracts reside in SAS. I extract my sample using SAS and then moved the data into Stata. VA utilization data extracts reside in SAS. I extract my sample using SAS and then moved the data into Stata. VA Data: VA Data: –Sample: All encounters with a diabetic ulcer principal diagnosis in NPCD and PTF (FY02-07) –Exposure: All prescriptions from DSS pharmacy FY02-07 for Becaplermin feeder code –Outcome: All encounters with a neoplasm principal diagnosis (FY97-07)

38 Transferring Data Stattransfer or DBMS copy work Stattransfer or DBMS copy work Stattransfer often seeks to optimize the Stata dataset by default Stattransfer often seeks to optimize the Stata dataset by default –If transferring data with SCRSSN, FORCE Stattransfer to transfer SCRSSN as double precision –http://www.stata.com/support/faqs/data/prec.html

39 Stattransfer CLICK ON DOUBLE

40 Diabetic Ulcer Sample Goal: turn encounter level data into person level data Goal: turn encounter level data into person level data cd R:\twagner\customer\becap use ulcer, clear sort scrssn by scrssn: gen n=_n tab n keep if n==1 keep scrssn sort scrssn gen ulcer=1 save finder, replace

41 Alternative Code sort scrssn by scrssn: gen n=_n by scrssn: gen num_ulcervisits=_N sort scrssn by scrssn: gen newepisode=vizday[_n]- vizday[_n-1]>60 recode newepisode.=1 if n==1 by scrssn: egen episodes=sum(newepisode)

42 Step 2: Merge Ulcer Sample and Cancer Cases use neo, clear gen cancer=1 sort scrssn merge scrssn using finder drop if _m==1 Merge command creates a new variable: _m=1 data only in master data _m=2 data only in using data _m=3 data merged in both

43 sort scrssn admitday disday sta3n adtime by scrssn: egen firstcancer=min(admitday) if cancer==1 gen diedihcan=disto==-2 & cancer==1 gen dod_can=disday if diedihcan==1 gen cancerstays=1 if cancer==1 recode cancerstays.=0 collapse (min) firstcancer (sum) cancerstays (max) diedihcan dod_can cancer, by (scrssn) sort scrssn drop _m save diabcancer, replace Step 2: continued

44 Merge in Exposure data use becap, clear gen numrx=1 sort scrssn svc_dte by scrssn: egen firstbecap=min(svc_dte) by scrssn: egen lastbecap=max(svc_dte) collapse (min) firstbecap (max) lastbecap (sum) day_supply numrx, by (scrssn) gen becap=1 sort scrssn save becapsum, replace use diabcancer merge scrssn using becapsum


Download ppt "Being Productive with Stata and VA Data Give me six hours to chop down a tree and I will spend the first four sharpening the axe. --Abraham Lincoln Todd."

Similar presentations


Ads by Google