title: Negative accuracy in linear regression
body: <p>My linear regression model has <strong>negative</strong> coefficient of determination R².</p>
  <p>How can this happen? Any idea is helpful.</p>
  <p>Here is my dataset:</p>
  <pre><code>year,population
  1960,22151278.0
  1961,22671191.0
  1962,23221389.0
  1963,23798430.0
  1964,24397022.0
  1965,25013626.0
  1966,25641044.0
  1967,26280132.0
  1968,26944390.0
  1969,27652709.0
  1970,28415077.0
  1971,29248643.0
  1972,30140804.0
  1973,31036662.0
  1974,31861352.0
  1975,32566854.0
  1976,33128149.0
  1977,33577242.0
  1978,33993301.0
  1979,34487799.0
  1980,35141712.0
  1981,35984528.0
  1982,36995248.0
  1983,38142674.0
  1984,39374348.0
  1985,40652141.0
  1986,41965693.0
  1987,43329231.0
  1988,44757203.0
  1989,46272299.0
  1990,47887865.0
  1991,49609969.0
  1992,51423585.0
  1993,53295566.0
  1994,55180998.0
  1995,57047908.0
  1996,58883530.0
  1997,60697443.0
  1998,62507724.0
  1999,64343013.0
  2000,66224804.0
  2001,68159423.0
  2002,70142091.0
  2003,72170584.0
  2004,74239505.0
  2005,76346311.0
  2006,78489206.0
  2007,80674348.0
  2008,82916235.0
  2009,85233913.0
  2010,87639964.0
  2011,90139927.0
  2012,92726971.0
  2013,95385785.0
  2014,98094253.0
  2015,100835458.0
  2016,103603501.0
  2017,106400024.0
  2018,109224559.0
  </code></pre>
  <p>The code of the <code>LinearRegression</code> model is as follows:</p>
  <pre><code>import pandas as pd
  
  from sklearn.linear_model import LinearRegression
  
  data =pd.read_csv(&quot;data.csv&quot;, header=None )
  
  data = data.drop(0,axis=0)
  
  X=data[0]
  
  Y=data[1]
  
  from sklearn.model_selection import train_test_split 
  
  X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.1,shuffle =False)
  
  lm = LinearRegression()
  
  lm.fit(X_train.values.reshape(-1,1), Y_train.values.reshape(-1,1))
  
  Y_pred = lm.predict(X_test.values.reshape(-1,1))
  
  accuracy = lm.score(Y_test.values.reshape(-1,1),Y_pred)
  
  print(accuracy)
  </code></pre>
  <pre><code>output
  -3592622948027972.5
  </code></pre>