# Plotting the absolute value functionΒΆ

A simple example plotting a fit of the absolute value function.

Out:

  Beginning forward pass
-------------------------------------------------------------------
iter  parent  var  knot  mse         terms  gcv      rsq    grsq
-------------------------------------------------------------------
0     -       -    -     135.278633  1      135.550  0.000  0.000
1     0       6    537   0.928785  3      0.940  0.993  0.993
2     0       0    377   0.918642  5      0.939  0.993  0.993
---------------------------------------------------------------
Stopping Condition 2: Improvement below threshold
Beginning pruning pass
--------------------------------------------
iter  bf  terms  mse   gcv    rsq    grsq
--------------------------------------------
0     -   5      0.92  0.939  0.993  0.993
1     4   4      0.92  0.939  0.993  0.993
2     3   3      0.93  0.940  0.993  0.993
3     1   2      83.82  84.410  0.380  0.377
4     2   1      135.28  135.550  0.000  0.000
------------------------------------------------
Selected iteration: 1
Forward Pass
-------------------------------------------------------------------
iter  parent  var  knot  mse         terms  gcv      rsq    grsq
-------------------------------------------------------------------
0     -       -    -     135.278633  1      135.550  0.000  0.000
1     0       6    537   0.928785    3      0.940    0.993  0.993
2     0       0    377   0.918642    5      0.939    0.993  0.993
-------------------------------------------------------------------
Stopping Condition 2: Improvement below threshold

Pruning Pass
------------------------------------------------
iter  bf  terms  mse     gcv      rsq    grsq
------------------------------------------------
0     -   5      0.92    0.939    0.993  0.993
1     4   4      0.92    0.939    0.993  0.993
2     3   3      0.93    0.940    0.993  0.993
3     1   2      83.82   84.410   0.380  0.377
4     2   1      135.28  135.550  0.000  0.000
------------------------------------------------
Selected iteration: 1

Earth Model
-------------------------------------
Basis Function  Pruned  Coefficient
-------------------------------------
(Intercept)     No      0.0693416
h(x6-3.93775)   No      0.995325
h(3.93775-x6)   No      1.00427
h(x0-13.1076)   No      -0.00984883
h(13.1076-x0)   Yes     None
-------------------------------------
MSE: 0.9230, GCV: 0.9389, RSQ: 0.9932, GRSQ: 0.9931


import numpy
import matplotlib.pyplot as plt
from pyearth import Earth

# Create some fake data
numpy.random.seed(2)
m = 1000
n = 10
X = 80 * numpy.random.uniform(size=(m, n)) - 40
y = numpy.abs(X[:, 6] - 4.0) + 1 * numpy.random.normal(size=m)

# Fit an Earth model
model = Earth(max_degree=1, verbose=True)
model.fit(X, y)

# Print the model
print(model.trace())
print(model.summary())

# Plot the model
y_hat = model.predict(X)
plt.figure()
plt.plot(X[:, 6], y, 'r.')
plt.plot(X[:, 6], y_hat, 'b.')
plt.show()


Total running time of the script: (0 minutes 0.165 seconds)

Download Python source code: plot_v_function.py
Download IPython notebook: plot_v_function.ipynb