# Applying LinearModelFit[] to data obtained with WeatherData[]

I am trying to perform a linear regression on some weather data, but I can't seem to figure out how to perform the operation. What I have right now is this:

temperature = WeatherData["Chicago", "Temperature", {{1990},{2010},"Month"}]
model = LinearModelFit[temperature,x,x]


Any ideas on what I am doing wrong?

• I think you should tell us for which version you need this to work. The problem is that the format of the return value of WeatherData has changed from version 9 to version 10 and both are not valid input for LinearModelFit. Belisarius answer shows how to solve the problem for version 9, but you'd need a different approach for version 10. – Albert Retey Nov 22 '14 at 19:15

temp = WeatherData["Chicago", "Temperature", {{1990}, {2010}, "Month"}];
data = temp /. {{y_, m_, d_}, x_} :> {m, x};
lm = LinearModelFit[data, {1, x, x^2, x^3, x^4}, x]
Show[ListPlot[data, PlotRange -> All, Frame -> True],
Plot[lm[x], {x, 0, 13}]]


But I would personally go for something like this:

data1 = Join[data, {12, 0} + # & /@ data];
model = a Sin[k x + p] + b;
ff = FindFit[data1, model, {a, k, p, b}, x];
modelf = Function[{t}, Evaluate[model /. ff]]
Show[ListPlot@data, Plot[modelf[t], {x, 0, 12}]]