Hello, Statalist,

Long-time listener, first-time caller, here.

I have panel data at the U.S. county x year level. I have observations of several variables (time-varying county characteristics, namely, the percent of the population in a particular age bucket, ex., percent of population aged 5-14) by decade (in 1940, 1950, 1960, 1970, and 1980) because they are from the Decennial Census. I would like to interpolate values for the years between decades, within county. I have successfully generated linear interpolations using ipolate. However, I would like to try other functional forms, so I would like to interpolate using mipolate and its pchip, spline, and cubic options. For almost each of these options, I run into a different problem.

Pchip gives me this error:
Code:
. mipolate percent5_14 year, by(fcounty1) gen(percent5_14_i_pchip) pchip
           pchipslopes():  3201  vector required
                 pchip():     -  function returned error
            pchipolate():     -  function returned error
                 <istmt>:     -  function returned error

When I run cubic, it interpolates for some decades, but not all decades. See example scatterplot for Connecticut counties. (A separate, less important problem: the way that the green points are connected with a line seems to be screwy.)

Code:
. mipolate percent5_14 year, by(fcounty1) gen(percent5_14_i_cubic) cubic
(194535 missing values generated)


. twoway connected percent5_14_i_cubic year if statefip==9, ms(+) sort || scatter percent5_14 year if
> statefip==9, ///
> legend(order(1 "guessed" 2 "known"))  xtitle("") yla(, ang(h)) ytitle("Percent of Pop., Age 5-14")  
> name( cubicp, replace)

Array

Spline seems to run successfully:

Code:
mipolate percent5_14 year, by(fcounty1) gen(percent5_14_i_spline) spline


twoway connected percent5_14_i_spline year if statefip==9, ms(+) sort || scatter percent5_14 year if statefip==9, ///
legend(order(1 "guessed" 2 "known"))  xtitle("") yla(, ang(h)) ytitle("Percent of Pop., Age 5-14") name( spline, replace)
graph export "/home/nwb/hcproductivity/13_2/percent_5_14_i_spline CT.png", as(png) replace
Array

I am running Stata 14.2 MP on a Linux server.

Any advice and help to get me out of this jam, I would greatly appreciate!

Thanks,
Nate


Code:
foreach i in percent5_14 percent1524 percent2534 percent3544 percent4554 percent5564 percent6574 percent75 {
    bysort fcounty1: ipolate `i' year, gen(i`i')
}


xtset fcounty1 year
format year %ty

sort fcounty1 year
mipolate percent5_14 year, by(fcounty1) gen(percent5_14_i_spline) spline
mipolate percent5_14 year, by(fcounty1) gen(percent5_14_i_pchip) pchip
mipolate percent5_14 year, by(fcounty1) gen(percent5_14_i_cubic) cubic

set scheme s1color

twoway connected percent5_14_i year if statefip==9, ms(+) sort || scatter percent5_14 year if statefip==9, ///
legend(order(1 "guessed" 2 "known"))  xtitle("") yla(, ang(h)) ytitle("Percent of Pop., Age 5-14") name( spline, replace)
graph export "/home/nwb/hcproductivity/13_2/percent_5_14_i_spline CT.png", as(png) replace

twoway connected percent5_14_i_pchip year if statefip==9, ms(+) sort || scatter percent5_14 year if statefip==9, ///
legend(order(1 "guessed" 2 "known"))  xtitle("") yla(, ang(h)) ytitle("Percent of Pop., Age 5-14") name( pchip, replace)
graph export "/home/nwb/hcproductivity/13_2/percent_5_14_i_pchip CT.png", as(png) replace

twoway connected percent5_14_i_cubic year if statefip==9, ms(+) sort || scatter percent5_14 year if statefip==9, ///
legend(order(1 "guessed" 2 "known"))  xtitle("") yla(, ang(h)) ytitle("Percent of Pop., Age 5-14")  name( cubicp, replace)
graph export "/home/nwb/hcproductivity/13_2/percent_5_14_i_cubic CT.png", as(png) replace
Code:
* Example generated by -dataex-. To install: ssc install dataex
clear
input double fcounty1 float(year percent5_14 statefip)
   0    .         . .
1000    .         . .
1001 1927         . 1
1001 1928         . 1
1001 1929         . 1
1001 1930         . 1
1001 1931         . 1
1001 1932         . 1
1001 1933         . 1
1001 1934         . 1
1001 1935         . 1
1001 1936         . 1
1001 1937         . 1
1001 1938         . 1
1001 1939         . 1
1001 1940 .23730753 1
1001 1941         . 1
1001 1942         . 1
1001 1943         . 1
1001 1944         . 1
1001 1945         . 1
1001 1946         . 1
1001 1947         . 1
1001 1948         . 1
1001 1949         . 1
1001 1950  .2252282 1
1001 1951         . 1
1001 1952         . 1
1001 1953         . 1
1001 1954         . 1
1001 1955         . 1
1001 1956         . 1
1001 1957         . 1
1001 1958         . 1
1001 1959         . 1
1001 1960  .2381664 1
1001 1961         . 1
1001 1962         . 1
1001 1963         . 1
1001 1964         . 1
1001 1965         . 1
1001 1966         . 1
1001 1967         . 1
1001 1968         . 1
1001 1969         . 1
1001 1970 .25179887 1
1001 1971         . 1
1001 1972         . 1
1001 1973         . 1
1001 1974         . 1
1001 1975         . 1
1001 1976         . 1
1001 1977         . 1
1001 1978         . 1
1001 1979         . 1
1001 1980 .19021048 1
1001 1981         . 1
1001 1982         . 1
1001 1983         . 1
1001 1984         . 1
1001 1985         . 1
1001 1986         . 1
1001 1987         . 1
1001 1988         . 1
1001 1989         . 1
1001 1990         . 1
1001 1991         . 1
1001 1992         . 1
1001 1993         . 1
1001 1994         . 1
1001 1995         . 1
1001 1996         . 1
1001 1997         . 1
1001 1998         . 1
1001 1999         . 1
1001 2000         . 1
1001 2001         . 1
1001 2002         . 1
1001 2003         . 1
1001 2004         . 1
1001 2005         . 1
1001 2006         . 1
1001 2007         . 1
1003 1927         . 1
1003 1928         . 1
1003 1929         . 1
1003 1930         . 1
1003 1931         . 1
1003 1932         . 1
1003 1933         . 1
1003 1934         . 1
1003 1935         . 1
1003 1936         . 1
1003 1937         . 1
1003 1938         . 1
1003 1939         . 1
1003 1940  .2143299 1
1003 1941         . 1
1003 1942         . 1
1003 1943         . 1
end