# freeknotfit: Fit Free-Knot Splines To Data In freeknotsplines: Free-Knot Splines

## Description

These functions fit free-knot splines to data with one independent variable and one dependent variable. It is assumed that the number of knots is known in advance. `freelsgen` and `freelsgold` fit least-squares splines with no penalty, while `freepsgen` and `freepsgold` fit penalized splines. `freelsgen` and `freepsgen` use a genetic algorithm, while `freelsgold` and `freepsgold` use a blind search augmented with a golden section algorithm.

## Usage

 ```1 2 3 4``` ```freelsgen(x, y, degree, numknot, seed = 5, stream = 0) freelsgold(x, y, degree, numknot, seed = 5, stream = 0) freepsgen(x, y, degree, numknot, seed = 5, stream = 0) freepsgold(x, y, degree, numknot, seed = 5, stream = 0) ```

## Arguments

 `x` A vector containing the values of the independent variable. `y` A vector containing the values of the dependent variable. `degree` The degree of the spline fit. `numknot` The number of knots. `seed` The value of the initial seed. Defaults to 5. `stream` The value of the initial stream to be used for parallel programming. Defaults to 0.

## Value

An object of class "`freekt`" containing the following components:

 `x` A vector containing the x values. `y` A vector containing the y values. `degree` The degree of the spline fit. `seed` The value of the initial seed. `stream` The value of the stream. `lambda` The optimum amount of penalty. This is automatically equal to 0 for `freelsgen` and `freelsgold`. `optknot` A vector containing the optimal knots. `tracehat` The trace of the hat matrix for the optimal fit. `GCV` The value of generalized cross validation (GCV) for the optimal fit. `GSJS` The GSJS estimator, an estimator of the variance of the data. `call` The function call.

## Author(s)

Steven Spiriti, Philip Smith, and Pierre Lecuyer

## References

Eubank, R. (1999), Nonparametric Regression and Spline Smoothing, New York: Marcel Dekker, Inc., Second ed.

Spiriti, S., Eubank, R., Smith, P., Young, D., "Knot Selection for Least-Squares and Penalized Splines," Journal of Statistical Computation and Simulation, in press.

`fit.search.numknots` for the case where the number of knots is not specified in advance.
 ```1 2 3 4 5 6``` ```x <- 0:30/30 truey <- x*sin(10*x) set.seed(10556) y <- truey + rnorm(31, 0, 0.2) xy.freekt <- freelsgen(x, y, degree = 2, numknot = 2, 555) plot(xy.freekt, xfit = 0:1000/1000) ```