{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The objectives of the lab\n",
    "\n",
    "The purpose of this lab is to reproduce tables 3.1 and 3.2 from the third chapter of the book \"Elements of Statistical Learning\" from Hastie, Tibshirani and Friedman, as shown bellow. The objective of the homework is to reproduce table 3.3.\n",
    "\n",
    "## 1. Prepare the data : \n",
    " \n",
    " Raw data is available on line, download it from  moodle ({\\tt Data.txt} file) or from the web at \n",
    "https://web.stanford.edu/~hastie/ElemStatLearn/datasets/prostate.data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "!conda install -c conda-forge cvxpy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "\n",
    "url_data = \"https://web.stanford.edu/~hastie/ElemStatLearn/datasets/prostate.data\"\n",
    "df = pd.read_csv(url_data, delimiter='\\t') "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For some reason, data has to be normalized"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "variables = df.columns[1:9]\n",
    "df[variables] = df[variables].apply(lambda x: (x - x.mean()) / x.std())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Split the data into training and test sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training set : n = 67 samples and p = 8 dimensions\n",
      "Test set : n = 30 samples and p = 8 dimensions\n"
     ]
    }
   ],
   "source": [
    "# Get the training and test sets\n",
    "Y_train = df.loc[df[\"train\"]==\"T\", 'lpsa'].to_numpy()\n",
    "X_train = df.loc[df[\"train\"]==\"T\", variables].to_numpy()\n",
    "print(\"Training set : n = {} samples and p = {} dimensions\".format(X_train.shape[0], X_train.shape[1]))\n",
    "\n",
    "Y_test = df.loc[df[\"train\"]==\"F\", 'lpsa'].to_numpy()\n",
    "X_test = df.loc[df[\"train\"]==\"F\", variables].to_numpy()\n",
    "print(\"Test set : n = {} samples and p = {} dimensions\".format(X_test.shape[0], X_test.shape[1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Compute the correlation of the predictors in the cancer data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Correlation matrix\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "Xn = (X_train - X_train.mean(axis=0))/X_train.std(axis=0)\n",
    "n, p = Xn.shape\n",
    "C = Xn.T@Xn/n\n",
    "# or C = np.corrcoef(X_train.T)\n",
    "\n",
    "plt.figure(figsize=(6, 4))\n",
    "sns.heatmap(C, annot=True, fmt=\".3f\", vmin=-1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Compute the linear fit to the prostate cancer data, the standart error assosiated with each coefficient and the corresponding Z score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = np.concatenate( (np.ones((X_train.shape[0],1)), X_train), axis=1)\n",
    "b_ls = np.linalg.solve(X.T@X, X.T@Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "n, p = X.shape\n",
    "y_hat = X@b_ls\n",
    "sigma_square = np.dot(Y_train - y_hat, Y_train - y_hat)/(n-p)    \n",
    "vector_v = np.diag(np.linalg.inv(X.T@X))\n",
    "    \n",
    "std_error_coef = np.sqrt(sigma_square * vector_v)\n",
    "z_score = b_ls/(std_error_coef)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--------------------------------------------------\n",
      "Term       Coefficient    Std. error    Z score   \n",
      "--------------------------------------------------\n",
      "Intercept         2.46        0.09       27.60\n",
      "lcavol            0.68        0.13        5.37\n",
      "lweight           0.26        0.10        2.75\n",
      "age              -0.14        0.10       -1.40\n",
      "lbph              0.21        0.10        2.06\n",
      "svi               0.31        0.12        2.47\n",
      "lcp              -0.29        0.15       -1.87\n",
      "gleason          -0.02        0.15       -0.15\n",
      "pgg45             0.27        0.15        1.74\n",
      "--------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "dash = '-' * 50\n",
    "print(dash)\n",
    "print(\"{:<11s}{:<15s}{:<14s}{:<10s}\".format(\"Term\",  \"Coefficient\", \"Std. error\",\"Z score\"))\n",
    "print(dash)\n",
    "for k in range(variables.shape[0]+1):\n",
    "    if k==0:\n",
    "        print(\"{:<10s}{:>12.2f}{:>12.2f}{:>12.2f}\".format(\"Intercept\", b_ls[k], std_error_coef[k], z_score[k]))\n",
    "    else:\n",
    "        print(\"{:<10s}{:>12.2f}{:>12.2f}{:>12.2f}\".format(variables[k-1], b_ls[k], std_error_coef[k], z_score[k]))\n",
    "print(dash)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src = \"https://i.stack.imgur.com/epSz4.png\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Best subset "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimation:  [ 2.477  0.740  0.316  0.000  0.000  0.000  0.000  0.000  0.000]\n"
     ]
    }
   ],
   "source": [
    "X = np.concatenate( (np.ones((X_train.shape[0],1)), X_train[:,0:2]), axis=1)\n",
    "b_bs = np.zeros(p)\n",
    "b_bs[0:3] = np.linalg.solve(X.T@X, X.T@Y_train)\n",
    "np.set_printoptions(formatter={'float': '{: 0.3f}'.format})\n",
    "print(\"Estimation: \", b_bs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Ridge\n",
    "\n",
    "It differs from the regession by the use of a $\\ell_2$-norm regularization on the parameters\n",
    "$$\n",
    "\\min_{\\beta_0, \\, \\beta} \\sum_{i=1}^n \\left(y_i - \\beta_0 - x_i^\\top \\beta \\right)^2 + \\lambda \\sum_{j=1}^p \\beta_j^2\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimation:  [ 2.452  0.420  0.238 -0.047  0.162  0.227  0.001  0.041  0.132]\n",
      "2.4641208076992855\n"
     ]
    }
   ],
   "source": [
    "ybar = Y_train.mean()\n",
    "stdy = Y_train.std()\n",
    "xbar = X_train.mean(0)\n",
    "stdx = X_train.std(0)\n",
    "Xc = X_train - xbar\n",
    "Yc = Y_train - ybar\n",
    "lam = 24.25\n",
    "b_R = np.linalg.solve(Xc.T@Xc + lam*np.eye(p-1), Xc.T@Yc)\n",
    "b0_R = ybar \n",
    "#b0_R = ybar - xbar.T@b_R # should be this\n",
    "beta_R = np.concatenate((np.array([b0_R]), b_R), axis=0)\n",
    "np.set_printoptions(formatter={'float': '{: 0.3f}'.format})\n",
    "print(\"Estimation: \", beta_R)\n",
    "b0_R = ybar - xbar.T@b_R\n",
    "print(b0_R)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimation:  [ 2.464  0.420  0.238 -0.047  0.162  0.227  0.001  0.041  0.132]\n"
     ]
    }
   ],
   "source": [
    "X = np.concatenate( (np.ones((X_train.shape[0],1)), X_train), axis=1)\n",
    "I = np.eye(p)\n",
    "I[0,0] = 0\n",
    "beta_R2 = np.linalg.solve(X.T@X + lam*I, X.T@Y_train)\n",
    "print(\"Estimation: \", beta_R2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(CVXPY) Sep 08 06:43:25 PM: Encountered unexpected exception importing solver OSQP:\n",
      "ImportError(\"dlopen(/Users/stephane/anaconda3/lib/python3.11/site-packages/osqp/_osqp.cpython-311-darwin.so, 0x0002): symbol not found in flat namespace '_csc_matrix'\")\n",
      "Estimation:  [ 2.464  0.420  0.238 -0.047  0.162  0.227  0.001  0.041  0.132]\n"
     ]
    }
   ],
   "source": [
    "import cvxpy as cp\n",
    "\n",
    "lam = 24.25\n",
    "b = cp.Variable(p-1)\n",
    "b0 = cp.Variable(1)\n",
    "\n",
    "o = cp.Minimize(cp.sum_squares(b0+X_train@b-Y_train) + lam*cp.sum_squares(b))\n",
    "problem = cp.Problem(o)\n",
    "problem.solve(solver=cp.SCS,eps=1e-5)\n",
    "\n",
    "beta_R3 = np.concatenate((np.array(b0.value),b.value))\n",
    "np.set_printoptions(formatter={'float': '{: 0.3f}'.format})\n",
    "print(\"Estimation: \",beta_R3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Lasso regression\n",
    "It differs from the ridge regession by the use of a $\\ell_1$-norm regularization on the parameters\n",
    "$$\n",
    "\\min_{\\beta_0, \\, \\beta} \\sum_{i=1}^n \\left(y_i - \\beta_0 - x_i^\\top \\beta \\right)^2 + \\lambda \\sum_{j=1}^p |\\beta_j|\n",
    "$$\n",
    "An equivalent formulation (due to convexity of the fitting error term and the regularization) is:\n",
    "\\begin{eqnarray}\n",
    "\\min_{\\beta_0, \\, \\beta} & \\sum_{i=1}^n \\left(y_i - \\beta_0 - x_i^\\top \\beta \\right)^2 \\\\\n",
    "s.t. & \\sum_{j=1}^p |\\beta_j| \\leq t\n",
    "\\end{eqnarray}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimation:  [ 2.468  0.533  0.169  0.000  0.002  0.094  0.000  0.000  0.000]\n"
     ]
    }
   ],
   "source": [
    "import cvxpy as cp\n",
    "\n",
    "Xn = (X_train - X_train.mean(axis=0))/X_train.std(axis=0)\n",
    "Yn = (Y_train - Y_train.mean())/Y_train.std()\n",
    "t = .7015\n",
    "n, p = Xn.shape\n",
    "\n",
    "b = cp.Variable(p)\n",
    "o = cp.Minimize(cp.sum_squares(Xn@b-Yn))\n",
    "c = [cp.norm(b, 1) <= t]\n",
    "problem = cp.Problem(o, c)\n",
    "problem.solve(solver=cp.SCS,eps=1e-5)\n",
    "\n",
    "ybar = Y_train.mean()\n",
    "stdy = Y_train.std()\n",
    "xbar = X_train.mean(0)\n",
    "stdx = X_train.std(0)\n",
    "b0_lasso =  ybar - stdy*((xbar/stdx).T@b.value)\n",
    "b_lasso = b.value*Y_train.std()/X_train.std(axis=0)\n",
    "beta_lasso = np.concatenate((np.array([b0_lasso]),b_lasso))\n",
    "np.set_printoptions(formatter={'float': '{: 0.3f}'.format})\n",
    "print(\"Estimation: \",beta_lasso)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "23.38565605099124\n",
      "Estimation:  [ 2.468  0.533  0.169 -0.000  0.002  0.094 -0.000 -0.000 -0.000]\n"
     ]
    }
   ],
   "source": [
    "lam = c[0].dual_value\n",
    "print(lam)    # lam = 23.38\n",
    "o = cp.Minimize(cp.sum_squares(Xn@b-Yn) + lam*cp.norm(b, 1))\n",
    "problem = cp.Problem(o)\n",
    "problem.solve(solver=cp.SCS,eps=1e-5)\n",
    "\n",
    "b0_lasso =  ybar - stdy*((xbar/stdx).T@b.value)\n",
    "b_lasso = b.value*Y_train.std()/X_train.std(axis=0)\n",
    "beta_lasso = np.concatenate((np.array([b0_lasso]),b_lasso))\n",
    "np.set_printoptions(formatter={'float': '{: 0.3f}'.format})\n",
    "print(\"Estimation: \",beta_lasso)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## PCR"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimation:  [ 2.497  0.541  0.291 -0.153  0.214  0.318 -0.050  0.233 -0.061]\n"
     ]
    }
   ],
   "source": [
    "U, s, Vt = np.linalg.svd(Xn, full_matrices=False, compute_uv=True)\n",
    "Z = U*s\n",
    "theta = Z.T@Yn/np.diag(Z.T@Z)\n",
    "k = 7\n",
    "b_PCR = Vt.T[:,:k]@theta[:k]\n",
    "\n",
    "ybar = Y_train.mean()\n",
    "stdy = Y_train.std()\n",
    "xbar = X_train.mean(0)\n",
    "stdx = X_train.std(0)\n",
    "b0_PCR =  ybar - stdy*((xbar/stdx).T@b_PCR)\n",
    "b_PCR = b_PCR/X_train.std(axis=0)*stdy\n",
    "beta_PCR = np.concatenate((np.array([b0_PCR]),b_PCR))\n",
    "print(\"Estimation: \",beta_PCR)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## PLS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 2.467  0.419  0.345 -0.026  0.220  0.243  0.078  0.011  0.084]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/stephane/anaconda3/lib/python3.11/site-packages/sklearn/cross_decomposition/_pls.py:503: FutureWarning: The attribute `coef_` will be transposed in version 1.3 to be consistent with other linear models in scikit-learn. Currently, `coef_` has a shape of (n_features, n_targets) and in the future it will have a shape of (n_targets, n_features).\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "from sklearn.cross_decomposition import PLSRegression\n",
    "\n",
    "pls2 = PLSRegression(n_components=2,scale=False)  # really better results with n_components=3\n",
    "#pls2.fit(Xn, Yn)\n",
    "X_train_1 = np.hstack((np.ones((n,1)),X_train))\n",
    "pls2.fit(X_train_1, Y_train)\n",
    "nt = X_test.shape[0]\n",
    "X_test_1 = np.hstack((np.ones((nt,1)),0*X_test))\n",
    "Y_pred = pls2.predict(X_test_1)\n",
    "\n",
    "pls2.coef_[0] = Y_pred[0]    # 2.452 - it doesn't fit the book !\n",
    "beta_pls = pls2.coef_.flatten()\n",
    "print(beta_pls)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Test error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_test_1 = np.hstack((np.ones((nt,1)),X_test))\n",
    "B = np.stack((b_ls.T , b_bs.T , beta_R.T , beta_lasso.T, beta_PCR.T, beta_pls.T)).T\n",
    "ytp = X_test_1@B\n",
    "err = ytp - np.outer(Y_test,np.ones(6))\n",
    "testErr = np.mean(err**2,axis=0)\n",
    "\n",
    "StdErr = np.std(err**2,axis=0, ddof=1)/np.sqrt(nt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "------------------------------------------------------------------------------------\n",
      "Term              LS      Best Subset    Ridge       Lasso        PCR         PLS       \n",
      "------------------------------------------------------------------------------------\n",
      "Intercept        2.465       2.477       2.452       2.468       2.497       2.467\n",
      "lcavol           0.680       0.740       0.420       0.533       0.541       0.419\n",
      "lweight          0.263       0.316       0.238       0.169       0.291       0.345\n",
      "age             -0.141       0.000      -0.047      -0.000      -0.153      -0.026\n",
      "lbph             0.210       0.000       0.162       0.002       0.214       0.220\n",
      "svi              0.305       0.000       0.227       0.094       0.318       0.243\n",
      "lcp             -0.288       0.000       0.001      -0.000      -0.050       0.078\n",
      "gleason         -0.021       0.000       0.041      -0.000       0.233       0.011\n",
      "pgg45            0.267       0.000       0.132      -0.000      -0.061       0.084\n",
      "------------------------------------------------------------------------------------\n",
      "Test Error       0.521       0.492       0.492       0.479       0.448       0.527\n",
      "Std Error        0.179       0.143       0.164       0.164       0.104       0.150\n",
      "------------------------------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "dash = '-' * 84\n",
    "print(dash)\n",
    "print(\"{:<18s}{:<8s}{:<15s}{:<12s}{:<13s}{:<12s}{:<10s}\".format(\"Term\", \"LS\", \"Best Subset\", \"Ridge\", \"Lasso\", \"PCR\", \"PLS\"))\n",
    "print(dash)\n",
    "for k in range(variables.shape[0]+1):\n",
    "    if k==0:\n",
    "        print(\"{:<10s}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}\".format(\"Intercept\", B[0,0],B[0,1],B[0,2],B[0,3],B[0,4],B[0,5]))\n",
    "    else:\n",
    "        print(\"{:<10s}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}\".format(variables[k-1],B[k,0],B[k,1],B[k,2],B[k,3],B[k,4],B[k,5]))\n",
    "print(dash)\n",
    "print(\"{:<10s}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}\".format(\"Test Error\",testErr[0],testErr[1],testErr[2],testErr[3],testErr[4],testErr[5]))\n",
    "print(\"{:<10s}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}\".format(\"Std Error\",StdErr[0],StdErr[1],StdErr[2],StdErr[3],StdErr[4],StdErr[5]))\n",
    "print(dash)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src = \"https://i.stack.imgur.com/4Nooa.png\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Improve the PLS results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 2.483  0.576  0.279 -0.179  0.201  0.299 -0.036  0.006  0.117]\n",
      "------------------------------------------------------------------------------------\n",
      "Term              LS      Best Subset    Ridge       Lasso        PCR         PLS       \n",
      "------------------------------------------------------------------------------------\n",
      "Intercept        2.465       2.477       2.452       2.468       2.497       2.483\n",
      "lcavol           0.680       0.740       0.420       0.533       0.541       0.576\n",
      "lweight          0.263       0.316       0.238       0.169       0.291       0.279\n",
      "age             -0.141       0.000      -0.047      -0.000      -0.153      -0.179\n",
      "lbph             0.210       0.000       0.162       0.002       0.214       0.201\n",
      "svi              0.305       0.000       0.227       0.094       0.318       0.299\n",
      "lcp             -0.288       0.000       0.001      -0.000      -0.050      -0.036\n",
      "gleason         -0.021       0.000       0.041      -0.000       0.233       0.006\n",
      "pgg45            0.267       0.000       0.132      -0.000      -0.061       0.117\n",
      "------------------------------------------------------------------------------------\n",
      "Test Error       0.521       0.492       0.492       0.479       0.448       0.427\n",
      "Std Error        0.179       0.143       0.164       0.164       0.104       0.113\n",
      "------------------------------------------------------------------------------------\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/stephane/anaconda3/lib/python3.11/site-packages/sklearn/cross_decomposition/_pls.py:503: FutureWarning: The attribute `coef_` will be transposed in version 1.3 to be consistent with other linear models in scikit-learn. Currently, `coef_` has a shape of (n_features, n_targets) and in the future it will have a shape of (n_targets, n_features).\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "from sklearn.cross_decomposition import PLSRegression\n",
    "\n",
    "pls2 = PLSRegression(n_components=3,scale=False)  # really better results with n_components=3\n",
    "#pls2.fit(Xn, Yn)\n",
    "X_train_1 = np.hstack((np.ones((n,1)),X_train))\n",
    "pls2.fit(X_train_1, Y_train)\n",
    "nt = X_test.shape[0]\n",
    "X_test_1 = np.hstack((np.ones((nt,1)),0*X_test))\n",
    "Y_pred = pls2.predict(X_test_1)\n",
    "\n",
    "pls2.coef_[0] = Y_pred[0]    # 2.452\n",
    "beta_pls = pls2.coef_.flatten()\n",
    "print(beta_pls)\n",
    "\n",
    "X_test_1 = np.hstack((np.ones((nt,1)),X_test))\n",
    "B = np.stack((b_ls.T , b_bs.T , beta_R.T , beta_lasso.T, beta_PCR.T, beta_pls.T)).T\n",
    "ytp = X_test_1@B\n",
    "err = ytp - np.outer(Y_test,np.ones(6))\n",
    "testErr = np.mean(err**2,axis=0)\n",
    "\n",
    "StdErr = np.std(err**2,axis=0, ddof=1)/np.sqrt(nt)\n",
    "\n",
    "dash = '-' * 84\n",
    "print(dash)\n",
    "print(\"{:<18s}{:<8s}{:<15s}{:<12s}{:<13s}{:<12s}{:<10s}\".format(\"Term\", \"LS\", \"Best Subset\", \"Ridge\", \"Lasso\", \"PCR\", \"PLS\"))\n",
    "print(dash)\n",
    "for k in range(variables.shape[0]+1):\n",
    "    if k==0:\n",
    "        print(\"{:<10s}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}\".format(\"Intercept\", B[0,0],B[0,1],B[0,2],B[0,3],B[0,4],B[0,5]))\n",
    "    else:\n",
    "        print(\"{:<10s}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}\".format(variables[k-1],B[k,0],B[k,1],B[k,2],B[k,3],B[k,4],B[k,5]))\n",
    "print(dash)\n",
    "print(\"{:<10s}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}\".format(\"Test Error\",testErr[0],testErr[1],testErr[2],testErr[3],testErr[4],testErr[5]))\n",
    "print(\"{:<10s}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}{:>12.3f}\".format(\"Std Error\",StdErr[0],StdErr[1],StdErr[2],StdErr[3],StdErr[4],StdErr[5]))\n",
    "print(dash)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
