code: def get_ridge_summary_df_by_bootstrap(x, y, beta, alpha, pred_cols):
      """Gets the ridge regression coefficients p-values and confidence intervals.
  
      The tests and confidence intervals are bootstrap p-values and confidence intervals.
  
      Parameters
      ----------
      x : `numpy.array`
          The design matrix.
      y : `numpy.array`
          The response vector.
      beta : `numpy.array`
          The estimated coefficients.
      alpha : `float`
          The regularization parameters.
      pred_cols : `list` [ `str` ]
          The list of predictor names.
  
      Returns
      -------
      coef_summary_df : `pandas.DataFrame`
          The coefficients summary dataframe.
      significance_code_legend : `str`
          The significance code legend.
      """
      num_bootstrap = 500
      bootstrap_idx = Bootstrapper(
          sample_size=x.shape[0],
          bootstrap_size=x.shape[0],
          num_bootstrap=num_bootstrap,
      )
      beta_estimates = None
      intercepts = []
      for idx in bootstrap_idx:
          x_b = x[idx, :]
          y_b = y[idx]
          model = Ridge(alpha=alpha, fit_intercept=True).fit(
              x_b, y_b
          )  # Fits intercept separately, does not penalize intercept
          intercepts.append(model.intercept_)
          # ``beta_estimates`` stores the bootstrapped beta: col = bootstrap indices; rows=betas
          if beta_estimates is None:
              beta_estimates = model.coef_.reshape(-1, 1)
          else:
              beta_estimates = np.concatenate(
                  [beta_estimates, model.coef_.reshape(-1, 1)], axis=1
              )
      beta_estimates[0] += np.array(intercepts).reshape(
          beta_estimates[0].shape
      )  # adds intercepts
      # Gets coefficient standard errors
      std_err = beta_estimates.std(axis=1)
  
      # Reference: An introduction to Bootstrap, Efron 1993
  
      # Gets p-values and significance codes
      # For an estimated coefficient, its p-value is the proportion of bootstrap estimates whose distances
      # to the bootstrap distribution mean are at least the absolute value of the estimated coefficient.
      p_values = (
          np.apply_along_axis(
              func1d=lambda row: len(
                  row[:-1][
                      abs(row[:-1] - row[:-1].mean()) >= abs(row[-1])
                  ]
              ),
              axis=1,
              arr=np.concatenate(
                  [beta_estimates, beta.reshape(-1, 1)], axis=1
              ),
          )
          / num_bootstrap
      )
      sig_codes = [
          "***"
          if p < 0.001
          else "**"
          if p < 0.01
          else "*"
          if p < 0.05
          else "."
          if p < 0.1
          else " "
          for p in p_values
      ]
  
      # Gets 95% confidence intervals
      ci_lb = np.percentile(beta_estimates, 2.5, axis=1)
      ci_ub = np.percentile(beta_estimates, 97.5, axis=1)
      ci = [[lb, ub] for lb, ub in zip(ci_lb, ci_ub)]
  
      # Makes full df
      coef_summary_df = pd.DataFrame(
          {
              "Pred_col": pred_cols,
              "Estimate": beta,
              "Std. Err": std_err,
              "Pr(>)_boot": p_values,
              "sig. code": sig_codes,
              "95%CI": ci,
          }
      )
      return (
          coef_summary_df,
          "0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1",
      )
  
imports: import numpy
  import pandas
  import statsmodels
  import statsmodels.api
  from scipy.stats import f
  from scipy.stats import norm
  from scipy.stats import t
  from sklearn.base import clone
  from sklearn.linear_model import Ridge
  from sklearn.model_selection import train_test_split
  from greykite.algo.common.col_name_utils import INTERCEPT
  from greykite.algo.common.col_name_utils import simplify_pred_cols
label_desc: Use image node_id 10 for calling a global function with example usage: get_ridge_summary_df_by_bootstrap(x, y, beta, alpha, pred_cols) and returns: coef_summary_df,  str