4

I want to build a continuous data set with the population for 1970, 1981, 1991, 2001, 2011. I already have the population values for the same polygon, at sub-sections level (the lowest), for 1991, 2001 and 2011. The use of georreferenced databases only started (in Portugal) on the 1991 census so it's impossible to have that level of data for 1970 and 1981. However, I do have the number of buildings for each subsection for all the decades of the XX century.

The questions are: How can I predict/estimate the population values at a sub-section level for 1970 and 1981? If possible, are the number of buildings helpful for the estimation?

2 Answers 2

0

You are into the realm of timeseries and forecasting models. You need to fit a model to your current observed data and then forecast the model into the desired time period. I am not sure if the contemporary trend of your observed 1991-2011 will support a back-projection to 1970 but you can certainly try. Just make sure that the resulting distribution in the timeseries makes sense.

The most common model, and the one I would recommend, is an arima(II) mixed-effects model. This is an autoregressive integrated moving averages model that accounts for serial autocorrelation in as the random term. Exponential smoothing are also common.

There are several options in R for specifying time-series models. There is the "arima" function in base with associated functions ("acf", "pacf" and "adf.test") for testing autocorrelation. The "est" function fits an exponential model. There are also many packages; "forecast" and "MAPA" are probably the most useful here. The R Time Series Analysis task view provides a list of relevant packages. The "auto.arima" function will be most helpful because it handles model fitting for you.

There are also base functions for defining time-series objects. Since you are not trying to draw inference from your timeseries there is no need to go into decomposition methods such as spectral analysis and wavelets. However, they are powerful methods that allow you to understand patterns (e.g., seasonality, periodicity) in the timeseries and are worth some attention.

Here is a tutorial on time-series models and forecasting in R.

Here is a very simple worked example using an ARIMA(II) model ("auto.arima" function) in the forecast package.

require(forecast)
   ts.dat <- AirPassengers

# Autocorrelation function
acf(ts.dat,lag.max=40, main="Autocorrelation Function",ylim=c(-1,1))

# Fit and plot ARIMA model using auto.arima 
ts.mdl <- Arima(window(ts.dat, end=1956+11/12), order=c(0,1,1),
                seasonal=list(order=c(0,1,1), period=12), lambda=0)
    plot(forecast(ts.mdl,h=48), main="ARIMA Forecast")
      lines(ts.dat)
        abline(v=1956+11/12)
7
  • 1
    Statistical modeling is the right approach, but how do you propose to fit an ARIMA model when only three periods of data are available? (There's no chance whatsoever of identifying seasonality or periodicity in such data; a version of ARIMA--essentially generalized least squares--could be estimated by analyzing all the Census areas at once, but times series packages won't do that.)
    – whuber
    Commented Apr 10, 2014 at 18:41
  • 1
    Sorry, I misunderstood, I thought that there was yearly data from 1991. Yes, with only an n=3 there is really very little that can be done from an estimation stand point. You could analyze all of the Census sub-sections in a linear model but you cannot back-forecast in a valid way because your only true rate is based on 3 observations. However, the sub-sections are not the experimental unit, time is. You are kinda stuck from any valid back-forecasting method. By the way, a periodicity term is not necessary in an ARIMA model, you can fit the first-order process. Commented Apr 10, 2014 at 18:49
  • Yes, including periodicity would give a SARIMA model. But not all is lost: the idea expressed in the question is to model population as a function of housing (and any other useful variables observable in earlier decades). That exercise could be carried out. It could be improved by estimating spatial and temporal correlations among the residuals and exploiting those. That's a big project, though.
    – whuber
    Commented Apr 10, 2014 at 19:16
  • You could certainty specify a bivariate model between population density and building density. You could then vary your building density parameter, in a Monte Carlo, to test a hypothetical population range. I still am not sure about a forecasting, even with understanding the structure of the spatial-temporal residuals, there is just not enough power to back-forecast 20-years with 3 observations 10 and 20 years after the forecast period(s). Although, I like the idea of analyzing the residual correlation. Commented Apr 10, 2014 at 19:50
  • The point is that by using covariates like housing density, the temporal distance between the data and the projections becomes much less of a concern. A more significant concern, which would be difficult to check with the data, is whether recent (observable) relationships between housing and population were actually the case 30 years ago or more. To the extent such relationships are stable over time, backcasting the populations can be reliable. I suspect, though, that these relationships could depend on spatial context, whence my suggestion to exploit spatial correlations.
    – whuber
    Commented Apr 10, 2014 at 20:16
0

Portugal might record the average number of people in a household? In the UK the ONS make this information available, an example is here.

But you need to know the type of building, it could be a flat with many people living there? Then what do you do with Offices/Hopsitals/Prisons/Schools?

You should look into the subject of Dasymetric mapping.

1
  • 1
    Dasymetric mapping is a great method for creating maps of population density but does not provide an estimate or projection of any sort. Commented Apr 10, 2014 at 17:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.