Tuesday, November 15, 2011

Tips - Stata: How to test significance of interactions of categorical variables

Tips - Stata: How to test significance of interactions of categorical variables

We have the model
   . webuse fvex
   . regress y i.sex##i.group age

We can test the overall significance of the sex#group interaction by typing
   . contrast sex#group

Monday, November 14, 2011

Thoughts: Education is The Key to Reduce Health Disparities


Thoughts: Education is The Key to Reduce Health Disparities

This is great. Even more, I would like to see teachers can team up to reduce disparities. My Mom’s experience tells me that the key to reduce the poverty is education, education, and still education. My Mom was a teach of elementary school in China. Sixty years ago, she went a remote poor countryside teaching not just kids but also the parents how to read. Now this area is one of the richest counties in China. My Mom is so proud of what she had done. By the way, my 80-year old Mom is still going to a senior college as a student to have fun and meet friends.

Subject: Lawyers, Doctors Team Up To Reduce Health Disparities
California Watch: Lawyers, Doctors Team Up To Reduce Health Disparities
On Kate Marr's first day practicing law at The Children's Clinic in Long Beach last week, she met with the mother of an asthmatic 7-year-old. ... The Long Beach program is the latest effort by community clinics and hospitals across the country to add lawyers to their medical teams as a way to resolve issues associated with the "social determinants of health," such as housing, domestic violence and poverty (Yeung, 11/10).

Thursday, November 10, 2011

Tips - Stata: How to generate composite categorical variables and indicate/dummy variables

Tips - Stata: How to generate composite categorical variables and indicate/dummy variables, convert a continuous variable into a categorical variable

1. to generate composite categorical variables:
   .egen compvar=group(var1 var2 var3), label
   Now, the dataset has a categorical variable with the different combinations of three variables: var1, var2, and var3.

2. to generate indicate variables:
   .tabulate compvar, generate(compvar)
   Now, the dataset has multiple indicate variables with a prefix of ‘compvar’


3. to convert a continuous variable into a categorical variable
   .gen agecat = recode(age, 24,29,34,39,44,49,54,59,64, ///
        69, 74, 79, 90) if !missing(age)
   or
   .gen age13grp = 1+irecode(age,24,29,34,39,44,49,54,59,64, ///
        69, 74, 79, 90) if !missing(age)

Tuesday, November 08, 2011

Tips - Stata: how to do 'lincom' after a three-way 'margins'?

Tips - Stata: how to do 'lincom' after a three-way 'margins'?
The easiest way to determine how to refer to the margins is to type
   .margins, coeflegend
after the -margins- command. This will list the estimated margins as well as the _b[] notation that can be used to refer to them. Here is an example:
   .webuse nhanes2, clear
   .svy, subpop(female): logit highbp i.race##i.diabetes##c.age weight
   .margins race, over(diabetes) at(age = (30(5)50)) subpop(female) ///

            vce(svy) post
  .margins, coeflegend

This tells us that if we want to compute the difference in the margins for age=30, diabetes=0, race=1 and age=35, diabetes=0, race=1, we could type
   .lincom _b[1bn._at#0bn.diabetes#1bn.race] - ///
           _b[2._at#0bn.diabetes#1bn.race]
-- by a senior statistician of Stata

Thursday, November 03, 2011

Nice gadgets (freeware) from Microsoft

Nice gadgets (freeware) from Microsoft

Image Composite Editor (ICE)
ICE is an simple advanced panoramic image stitcher.
Mathematics 
This is an amazing powerful calculator has many functions with graphing options. It also has unit conversion tool.
You may also download and install Mathematics Add-In for Word and OneNote hereyou can easily to plot graphs in 2D and 3D, calculate numerical results, solve equations or inequalities, and simplify algebraic expressions in your Word documents and OneNote notebooks.
You may find more information for teachers/education here.
Sysinternals Suite
Sysinternals Suite, a troubleshooting utility package, was bought by Microsoft a few years ago.

Final Data Collection Standards for Race, Ethnicity, Primary Language, Sex, and Disability Status Required by Section 4302 of the Affordable Care Act


HHS on Oct. 31, 2011, published final standards for data collection on race, ethnicity, sex, primary language and disability status, as required by Section 4302 of the Affordable Care Act [PDF | 1.6 MB].
The law requires that data collection standards for these measures be used, to the extent practicable, in all national population health surveys. They will apply to self-reported information only. The law also requires any data standards published by HHS comply with standards created by the Office of Management and Budget (OMB).

Proposed standards were published on June 29, 2011, and public comments were accepted until August 1, 2011.

The standards, effective upon publication today, apply to population health surveys sponsored by HHS, where respondents either self-report information or a knowledgeable person responds for all members of a household. HHS will begin implementation of these new data standards in all new surveys and at the time of major revisions to current surveys.

Tuesday, October 25, 2011

Can 'margins' be used after 'mi estimate'?

Can 'margins' be used after 'mi estimate'?

The -margins- command may not be used in the usual way after -mi estimate-. You'll need to write a short "wrapper command" that can be run with the -mi estimate- prefix. My colleagues outlined the method on Statalist: Average marginal effects for a multiply imputed complex survey. You'll want to change the 11 in the -version 11- statement to 12. One of our FAQs will also be helpful: How can I combine results other than coefficients in e(b) with multiply imputed data? - by A Statistician, Stata


Here is my modified program based on codes of UCLA Stata Portal

use http://www.ats.ucla.edu/stat/data/hsbmar, clear
/* set MI dataset */
mi set mlong
mi register imputed female math read science socst
mi svyset [pw=write], strata(ses)
mi impute chain (logit) female (regress) math read science socst ///
       =ses write awards, add(10) rseed(123456)
/* program */
capture program drop mimargins
program mimargins, eclass properties(mi)
  version 12
  svy: logit honors i.female##i.prog read math science socst
  margins female#prog, post
end
/* run the program */ 
mi estimate, cmdok: mimargins 1
matlist r(table)'*100, tw(20) format(%8.2f)
mi estimate (_b[1.female#2.prog]/_b[1.female#1bn.prog]): mimargins 1

Notes: The 'cmdok' option forces 'mi estimate' to estimate the current Stata unsupported model. The 'cmdok' is not necessary because of already including the 'properties(mi)' in the program.

mi estimate: svy: logit honors i.female##i.prog read math science socst
mi test 1.female#2.prog 1.female#3.prog

mi estimate (diff:1.female#2.prog-1.female#3.prog), saving(miest, replace): svy: logit honors i.female##i.prog read math science socst
mi testtransform diff

mi estimate (rdiff:1.female#2.prog/1.female#3.prog - 1) using miest
mi testtr rdiff


Useful Resources:


Monday, October 24, 2011

Abramowitz and Stegun: Handbook of Mathematical Functions



“The present volume is an outgrowth of a Conference on Mathematical Tables held at Cambridge, Mass., on September 15-16, 1954, under the auspices of the National Science Foundation and the Massachusetts Institute of Technology. The purpose of the meeting was to evaluate the need for mathematical tables in the light of the availability of large scale computing machines. It was the consensus of opinion that in spite of the increasing use of the new machines the basic need for tables would continue to exist.


Numerical tables of mathematical functions are in continual demand by scientists and engineers. A greater variety of functions and higher accuracy of tabulation are now required as a result of scientific advances and, especially, of the increasing use of automatic computers. In the latter connection, the tables serve mainly for preliminary surveys of problems before programming for machine operation. For those without easy access to machines, such tables are, of course, indispensable...”


You can view or download the tenth printing of this famous reference here: http://people.math.sfu.ca/~cbm/aands/

Wednesday, October 19, 2011

How to Estimate Percentiles and Confidence Intervals

How to Estimate Percentiles and Confidence Intervals
By CDC

Including percentiles whose estimate falls on a value that is repeated multiple times in the dataset
A common practice to calculate confidence intervals from survey data is to use large-sample normal approximations. Ninety-five percent confidence intervals on point estimates of percentiles are often computed by adding and subtracting from the point estimate a quantity equal to twice its standard error. This normal approximation method may not be adequate, however, when estimating the proportion of subjects above or below a selected value, especially when the proportion is near 0.0 or 1.0 or when the effective sample size is small. In addition, confidence intervals on proportions deviating from 0.5 are not theoretically expected to be symmetric around the point estimate. Further, adding and subtracting a multiple of the standard error to an estimate near 0.0 or 1.0 can lead to impossible confidence limits (i.e., proportion estimates below 0.0 or above 1.0). The approach used for the Report data tables (and for previous Reports) produces asymmetric confidence intervals consistent with skewed (nonnormal) biologic data distributions. ...

You can read the whole article here: http://www.cdc.gov/exposurereport/data_tables/appendix_a.html

Monday, October 17, 2011

Recipes and Meal Planning from the American Diabetes Association

Recipes and Meal Planning from the American Diabetes Association

If you are looking for healthy recipes to lose weight, prevent, or manager diabetes, you may like the MyFoodAdvisor – Recipes for healthy Living from the American Diabetes Association. You must register to access these recipes, which I don’t like the way of access, but it’s FREE.

Wednesday, October 12, 2011

Top 50 Statistics Blogs of 2011

The Best Colleges has published a long list of statistic related blogs. Wish they could have reduced the number to 10.

Monday, October 03, 2011


Tips: SAS code matched to Stata code and others
Usually, I think that SAS is an analog to a product of Microsoft, Stata is an analog to a product of Apple, and R is an analog to a product of Google. I have used the SAS for many years, but have been attracted by Stata for some new features. I am always trying to find the same handy data management features using Stata, and notice there are a few websites providing these equivalents.

Resources for Disability Research
                                            - these materials highly recommended by my colleague J.C., an expert in this disability area.

Monday, September 19, 2011

How to get orthogonal polynomial coefficient/vector/codes

Tips - R & Stata & SAS: How to get orthogonal polynomial coefficient/vector/codes

When we do "contrast {lvl #1 #2 #3}" for trend analyses using Stata or other software for unequally spaced levels/categories, we need the orthogonal polynomial coefficient (#1 #2 #3), which is hard to be find in books. We can get these coefficients using R, Stata, or SAS. My favorite software for this purpose is R. Below I show the examples using these different kinds of software. Note: Stata has an operator (p. for orthogonal polynomial in the level values) for unequally spaced levels, for example, "contrast p.lvl".

R
  mostly I use R to get these coefficients:
  >cntr<-poly(c(1,2,5,6),3)
  >cntr

Stata
Step 1: create a dataset with one variable [lvl]:
  .input lvl
  1. 1
  2. 2
  3. 5
  4. 6
  5. end
Step 2-b: use 'orthpoly'
  .orthpoly lvl, generate(cntr1 cntr2 cntr3) degree(3)

  Now, in the dataset, you can find three new variables 'cntr1' for the orthogonal polynomial coefficients of degree 1 (linear), and 'cntr2' for the orthogonal polynomial coefficients of degree 2 (quadratic), and 'cntr3' for the orthogonal polynomial coefficients of degree 3 (cubic).

SAS
  PROC IML;
   lvl = {1 3 5 6}
   cntrl=ORPOL(lvl);
   PRINT cntrl;
  QUIT;

Friday, September 16, 2011

Tips: Stata - my first Stata program

capture program drop tabm
 program tabm
   version 12
   syntax varlist [if][in],cell count column row se ci ///

          cv percent proportion]
   local varnum : word count `varlist'
   local x : word 1 of `varlist'
   forvalues i=2/`varnum' {
       local y: word `i' of `varlist'
       svy: tabulate `x' `y',`col' `cell' `se' `percent' ///

            format(%5.1f)
  }
end


.tabm sex race5grp diabetes,cell se percent

why I get error message, when using 'margins' for complex sampling data

Tips - Stata: why I get error message, when using 'margins' for complex sampling data

When I use 'margins' for complex sampling data, after a logistic regression:
  . svy, subpop(if suball==1): logit arthritis i.diabetes c.age i.sex i.bmi4grp
  . margins diabetes, vce(unconditional) post

I've got an error message sometime:
  "missing predicted values encountered within the estimation sample r(322)"


The answer is to include 'subpop' in the 'margins' command:
  .margins diabetes, subpop(if suball==1) vce(unconditional) post