Monday, April 2, 2012

The years to get green card for Indian and Chinese

The path toward a green card is especially difficult for Indian and Chinese who are working in the US and named as EB2 workers, since they have to wait years to submit an i485 form after being approved with their i140 form submission. Once the cutoff date set by USCIS each month catches the priority date that is a date of filling labor certification and decides the position in the long line, the applicants holding their priority date will be able to file the i485 form. However, the cutoff dates are unpredictable for the public, and “it is impossible to accurately estimate how long that may take”.

Situation
The recent cut-off dates data can be copied and pasted from Wiki. Then I adjusted the cut-off dates within the retrogression period. In the past decade, the waiting years range from about 0 year to 4.25 years. July 2007 looks like an amnesty for those who have priory date before that, otherwise people have to wait at least 1.85 years. Applicants from the adjacent 3 or 4 years usually wait in line for the door to be open. The door is recently shut off on June 2012 and hopefully will be open again one day in 2014.

data pd;
   input @1 _cmon $3. @5 _cyear $4. @13 _pdmon $3. @17 _pddate : @21 _pdyear $2.;
   format c_time pd_time date9.;
   c_time = input(cats('01', _cmon, _cyear), date9.);
   pd_time = input(cats(_pddate, _pdmon,_pdyear), date9.);
   dif_day = c_time - pd_time;
   dif_year = dif_day/365;
   drop _:;
cards;
May 2012   Aug 15  07   
Apr 2012   May 1   10   
Mar 2012   May 1   10   
Feb 2012   Jan 1   10   
Jan 2012   Jan 1   09   
Dec 2011   Mar 15  08
Nov 2011   Nov 1   07   
Oct 2011   Jul 15  07
Sep 2011   Apr 15  07
Aug 2011   Apr 15  07
Jul 2011   Mar 8   07   
Jun 2011   Oct 15  06
May 2011   Jul 1   06   
Apr 2011   May 8   06   
Mar 2011   May 8   06   
Feb 2011   May 8   06   
Jan 2011   May 8   06   
Dec 2010   May 8   06   
Nov 2010   May 8   06   
Oct 2010   May 8   06   
Sep 2010   May 8   06   
Aug 2010   Mar 1   06   
Jul 2010   Oct 1   05   
Jun 2010   Feb 1   05   
May 2010   Feb 1   05   
Apr 2010   Feb 1   05   
Mar 2010   Feb 1   05   
Feb 2010   Jan 22  05
Jan 2010   Jan 22  05
Dec 2009   Jan 22  05
Nov 2009   Jan 22  05
Oct 2009   Jan 22  05
Sep 2009   Jan 8   05   
Aug 2009   Oct 1   03   
Jul 2009   Jan 1   00   
Jun 2009   Jan 1   00   
May 2009   Feb 15  04
Apr 2009   Feb 15  04
Mar 2009   Feb 15  04
Feb 2009   Jan 1   04   
Jan 2009   Jul 1   03   
Dec 2008   Jun 1   03   
Nov 2008   Jun 1   03   
Oct 2008   Apr 1   03   
Sep 2008   Aug 1   06   
Aug 2008   Jun 1   06   
Jul 2008   Apr 1   04   
Jun 2008   Apr 1   04   
May 2008   Jan 1   04   
Jul 2007   Jul 1   07
Jun 2007   Apr 1   04   
May 2007   Jan 8   03   
Apr 2007   Jan 8   03      
Mar 2007   Jan 8   03      
Feb 2007   Jan 8   03      
Jan 2007   Jan 8   03      
Dec 2006   Jan 8   03      
Nov 2006   Jan 8   03   
;;;
run;

proc sql;
   create table pd1 as
   select a.pd_time 'priority date', a.c_time, (select min(c_time) from pd as b 
      where a.pd_time le b.c_time and a.pd_time le b.pd_time) as i140_submit_date format date9.,
      (calculated i140_submit_date - a.pd_time) / 365 as i140_waiting_year 
   from pd as a 
   where year(pd_time) gt 2002
   order by a.pd_time
;quit;

proc sgplot data = pd1;
   series x = pd_time y = i140_submit_date;
   xaxis grid;
run;

proc sgplot data = pd1;
   series x = pd_time y = i140_waiting_year;
   yaxis grid;
run;


Possible change
The cut-off dates much depend on the changes of law and policy which reflects the economic environment. Therefore the US unemployment rate is possibly helpful in predicting the fluctuation of the cut-off dates. First I imported such data, and then transformed the difference between the priority date and the cut-off date to 6-month average. Then the two curves match well. I can even fit the relationship with a simple linear regression. As a conclusion, one percent of unemployment rate decrease may shorten 1/3 year of the waiting time from i140 to i485.

filename _infile url "http://research.stlouisfed.org/fred2/data/UNRATE.txt" debug lrecl=100;
data unempl;
   infile _infile missover firstobs = 22;
   format date date9.;
   input @1 date yymmdd10. @13 unemployement_rate 4.1;
run;

proc sql;
   create table combine as
   select a.dif_year, b.*
   from pd as a, unempl as b
   where a.c_time = b.date
;quit;

proc expand data = combine out = combine1 method=none;
   convert dif_year = ma_dif_year / transform = (movave 6);
run;

proc sgplot data = combine1;
   series x = date y = ma_dif_year;
   series x = date y = unemployement_rate;
   xaxis grid; yaxis grid label = ' ';
run;

proc reg data = combine1;
   model ma_dif_year = unemployement_rate;
   ods select ParameterEstimates FitPlot;
run;

Good math, bad engineering

As a formal statistician and a current engineer, I feel that a successful engineering project may require both the mathematician’s abilit...