# Test Equality of Curves with Homoscedastic or Heteroscedastic Errors.

### Description

Main test routine for formally testing the equality of two curves represented by discrete data points over a domain with homoscedacity or heteroscedacity errors. curvetest is the wrapper of curvetest.raw.

### Usage

1 2 3 4 | ```
curvetest(formula, data1 = NULL, data2 = NULL, equal.var = TRUE, alpha = 0.5, bw = NULL, plotit = TRUE, conf.level = 0.05, kernel = c("Triangle", "Gaussian", "Trio", "Uniform", "Triweight", "Epanechnikov", "Quartic"), nn = 100, myx = NULL, bcorrect = "simple",...)
curvetest.raw(fits1, fits2, equal.var, conf.level, plotit)
## S3 method for class 'curvetest'
print(x,...)
``` |

### Arguments

`formula` |
A formula to the data set such as y~x. |

`data1` |
A data frame of 2 columns representing the underlying curve 1. The column names must agree with the names in formula. |

`data2` |
A data frame for curve 2. If it is NULL, the test is whether curve 1 is statistically equal to 0 over the defining domain. |

`equal.var` |
Whether the variances are equal. Default to TRUE. |

`alpha` |
Smoothing parameter. |

`bw` |
Window bandwidth for both curves. |

`plotit` |
WHether plot the fitted curves or not. Default: FALSE. |

`conf.level` |
The confidence level to claim the curves are different. Default: 0.05. |

`kernel` |
One of the kernel functions to use to fit the curves. Must be one of "Triangle", "Gaussian", "Trio","Uniform", "Triweight", "Epanechnikov", "Quartic". partial match is allowed. |

`nn` |
Number of data points in the test domain to calculate the curve values. |

`myx` |
x-values in the test domain to calculate the curve values. If it is specified, nn will be suppressed. |

`bcorrect` |
Boundary correction method. Right now, except for 'none', meaning no corrections, the only other opton is 'simple'. |

`...` |
When plotit is true, plot parameters can be specified such as pch, lty, col etc. |

`fits1,fits2` |
The fitted results from fitting the first or second curve by curvefit procedure. |

`x` |
Test results from curvetest. |

### Details

The algorithm works by first fitting the curves using local regression method specified by formula on data1 and/or data 2 with smoothing parameters specified in the function calls. Then it will test on the fitted curve 1 and curve 2 to see if they are statistically equal or not.

### Value

An R object of class curvetest will be generatd, containing curve fitting and testing results.

`Statistic,p` |
Test statistic and p value of testing whether $f_1(x)==f_2(x)$ or $f_1(x)==0$. |

`eDF` |
Estimated degree of freedom of the fitting. |

`equal.var` |
The model specification of whether the two variances are equal or not |

`esigma1,esigma2` |
Estimated varaince of the fitted curves. |

`k0` |
The calculated value from the tube. See detail in paper. |

`fits1,fits2` |
Objects of class 'curvefit' from curvefit ruotine. |

### Author(s)

Zhongfa Zhang, Jiayang Sun

### References

Zhongfa Zhang, et al: Test Equality of Curves with Homoscedastic or Heteroscedastic Errors. To appear

### See Also

curvefit, print.curvetest, plot.curvetest

### Examples

1 2 3 4 5 6 7 8 | ```
n1=150; n2=155 ##numbers of data points for the two curves.
f1<-f2<-function(x){x*(1-x)+sin(2*pi*x)}; ##True functions.
x1=seq(0,1, length=n1);
x2=seq(0, 1, length=n2);
y1=f1(x1)+rnorm(n1, 0, 0.2)
y2=f2(x2)+rnorm(n2, 0, 0.2) ###Measured data for the two curves with noises.
curvetest(y~x,data.frame(x=x1,y=y1), data.frame(x=x2,y=y2), alpha = 0.7, equal.var=TRUE,plotit=TRUE)
``` |