// File "UsingStata.do" comments:

// Stata code for the "SBP12.1 Stata" practice
// Download this file into your computer
// Open it from Stata (as a do file) 
// Select one or a set of commands from this file and use the button "do" to run it

// Stata is able to get stata data directly from websites! Stata Data for this practice:

use http://www.uv.es/~meliajl/Docencia/Curs2014/Data12_1.dta

summarize
help summarize
tabulate s3
list N s3 if s3==33
replace s3 = 3 in 85
mvdecode h1-s32, mv(9=.)
summarize h1-s32

// please, check if your data file already contains dh2 ... deh11
// before to run the next six code lines
generate dh2 = 6 - h2
generate dh5 = 6 - h5
generate dh6 = 6 - h6
generate dh9 = 6 - h9
generate dh10 = 6 - h10
generate dh11 = 6 - h11

correlate h2 h5 h6 h9 h10 h11 dh2 dh5 dh6 dh9 dh10 dh11
twoway (scatter dh2 h2)
twoway (scatter dh5 h5)
twoway (scatter dh6 h6)
twoway (scatter dh9 h9)
twoway (scatter dh10 h10)
twoway (scatter dh11 h11)
tabulate dh2 h2
tabulate dh5 h25
tabulate dh6 h6
tabulate dh9 h9
tabulate dh10 h10
tabulate dh11 h11

// optional labeling commands
label data "GHQ, Tension and Job Satisfaction"

label define MaleFema 1 "Male" 2 "Female"
label values Sex MaleFema

label variable Sex "Gender"
label variable Eda "Age"
label variable Est "Educational Level"
label variable Con "Job type"
label variable TM1 "Job Tension Frequency"
label variable TM2 "Job Tension Intensity"

label define Aglab 1 "<20" 2 "20 to 29" 3 "30 to 39" 4 "40 to 49" 5 ">49"
label values Eda Aglab
label define Estu 2 "Primary" 3 "Secondary" 4 "Vocational" 5 "Degree" 6 "Master"
label values Est Estu
label define Contlab 1 "Temporary" 2 "Steady"
label values Con Contlab
label define tm1lab 0 "Never" 1 "Very Rarely" 2 "Rarely" 3 "Occasionally" 4 "Very Frequently"  5 "Always"
label values TM1 tm1lab
label define tm2lab 0 "Nothing at all" 1 "Very Light" 2 "Light" 3 "Moderate" 4 "Hard" 5 "Very Hard"
label values TM2 tm2lab
label define agrem  1 "Strongly Disagree" 2 "Disagree" 3 "Undecided" 4 "Agree" 5 "Strongly Agree"
label values h1-T8 agrem
label define sati 1 "Not at all" 2 "Slightly" 3 "Somewhat" 4 "Very satisfied" 5 "Extremely satisfied"
label values s1-s32 sati
// end of the labeling commands

help alpha
alpha h1 dh2 h3 h4 dh5 dh6 h7 h8 dh9 dh10 dh11 h12, item generate(GHQ)
alpha T1-T8, item generate(Tension)
alpha s1-s32, item generate(Satisfaction)

alpha h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12
alpha h1 dh2 h3 h4 dh5 dh6 h7 h8 dh9 dh10 dh11 h12, detail item
alpha h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12, reverse (h2 h5 h6 h9 h10 h11) item 

summarize h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12
correlate h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12
pwcorr h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12
pwcorr h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12, obs 
pwcorr h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12, obs sig 
pwcorr h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12, sig bonferroni
factor h1 dh2 h3 h4 dh5 dh6 h7 h8 dh9 dh10 dh11 h12, pcf mineigen(1)
rotate, varimax
rotate, promax
ttest GHQ, by(Sex)
ttest Tension, by(Sex)
ttest Satisfaction, by(Sex)

// An alternative way to define GHQ, Tension and Satisfaction
// Do not use this alternative way if you already defined these variable using the alpha command
egen GHQ = rowmean(h1 dh2 h3 h4 dh5 dh6 h7 h8 dh9 dh10 dh11 h12)
egen Tension = rowmean(T1-T8)
egen Satisfaction = rowmean(s1-s32)

summarize GHQ Tension Satisfaction
regress GHQ Tension
twoway (scatter Satisfaction Tension) (lfit Satisfaction Tension)
regress Satisfaction Tension
regress GHQ Tension Satisfaction
ttest GHQ, by(Sex)
ttest Tension, by(Sex)
ttest Satisfaction, by(Sex)
oneway GHQ Eda, bonferroni tabulate
oneway Tension Eda, bonferroni tabulate
oneway Satisfaction Eda, bonferroni tabulate
grmeanby Est Eda Sex Con, summarize(GHQ)
grmeanby Est Eda Sex Con, summarize(Tension)
grmeanby Est Eda Sex Con, summarize(Satisfaction)
grmeanby Est Eda Sex Con, summarize(GHQ) median
graph box Satisfaction, over(Eda) by(Sex, total)
graph matrix GHQ Tension Satisfaction, by(Sex, total)
regress GHQ Tension Satisfaction if Eda>2 & Sex==1
