First, let's remind ourselves how we would fit a straight line using Incanter's
linear-model function. We want to extract the
x6 columns from the dataset and apply them (in that order:
x6, the year, is our predictor variable) to the
(defn ex-9-3  (let [data (d/get-dataset :longley) model (s/linear-model (i/$ :x5 data) (i/$ :x6 data))] (println "R-square" (:r-square model)) (-> (c/scatter-plot (i/$ :x6 data) (i/$ :x5 data) :x-label "Year" :y-label "Population") (c/add-lines (i/$ :x6 data) (:fitted model)) (i/view)))) ;; R-square 0.9879
The preceding code generates the following chart:
While the straight line is a close fit to the data—generating an R2 of over 0.98—it ...