code: def test_spl_s():
      # matrix from R
      spl_s_R = [
          [0, 0, 0.000000000, 0.000000000, 0.000000000, 0.000000000],
          [0, 0, 0.000000000, 0.000000000, 0.000000000, 0.000000000],
          [0, 0, 0.001400000, 0.000200000, -0.001133333, -0.001000000],
          [0, 0, 0.000200000, 0.002733333, 0.001666667, -0.001133333],
          [0, 0, -0.001133333, 0.001666667, 0.002733333, 0.000200000],
          [0, 0, -0.001000000, -0.001133333, 0.000200000, 0.001400000],
      ]
  
      np.random.seed(1)
      x = np.random.normal(0, 1, 10)
      xk = np.array([0.2, 0.4, 0.6, 0.8])
      cs = UnivariateCubicSplines(x, df=4)
      cs.knots = xk
  
      spl_s = cs._splines_s()
      assert_allclose(spl_s_R, spl_s, atol=4.0e-10)
  
imports: import os
  import numpy
  from numpy.testing import assert_allclose
  import pandas
  from scipy.linalg import block_diag
  import pytest
  from statsmodels.tools.linalg import matrix_sqrt
  from statsmodels.gam.smooth_basis import UnivariatePolynomialSmoother, PolynomialSmoother, BSplines, GenericSmoothers, UnivariateCubicSplines, CyclicCubicSplines
  from statsmodels.gam.generalized_additive_model import GLMGam, LogitGam, make_augmented_matrix, penalized_wls
  from statsmodels.gam.gam_cross_validation.gam_cross_validation import MultivariateGAMCV, MultivariateGAMCVPath, _split_train_test_smoothers
  from statsmodels.gam.gam_penalties import UnivariateGamPenalty, MultivariateGamPenalty
  from statsmodels.gam.gam_cross_validation.cross_validators import KFold
  from statsmodels.genmod.generalized_linear_model import GLM
  from statsmodels.genmod.families.family import Gaussian
  from statsmodels.genmod.generalized_linear_model import lm
label_desc: Use image node_id 26 for calling a global function with example usage: test_spl_s() without return types