# npMeanUnpaired: A test for comparing the means of two bounded random... In npExact: Exact Nonparametric Hypothesis Tests for the Mean, Variance and Stochastic Inequality

## Description

This test requires that the user knows upper and lower bounds before gathering the data such that the properties of the data generating process imply that all observations will be within these bounds. The data input consists of a sequence of independent observations for each random variable, the two sequences being generated independently. No further distributional assumptions are made.

## Usage

 ```1 2 3``` ```npMeanUnpaired(x1, x2, lower = 0, upper = 1, iterations = 5000, alpha = 0.05, alternative = "two.sided", epsilon = 1 * 10^(-6), ignoreNA = FALSE, max.iterations = 100000) ```

## Arguments

 `x1, x2` the (non-empty) numerical data vectors which contain the variables to be tested. `lower, upper` the theoretical lower and upper bounds on the data outcomes known ex-ante before gathering the data. `iterations` the number of iterations used, should not be changed if the exact solution should be derived. `alpha` the type I error. `alternative` a character string describing the alternative hypothesis, can take values "greater", "less" or "two.sided". `epsilon` the tolerance in terms of probability of the Monte Carlo simulations. `ignoreNA` if `TRUE`, NA values will be omitted. Default: `FALSE` `max.iterations` the maximum number of iterations that should be carried out. This number could be increased to achieve greater accuracy in cases where the difference between the threshold probability and theta is small. Default: `10000`

## Details

This is a test of the null hypothesis: H_0: E(X_1) ≤ E(X_2) against H_1: E(X_1) > E(X_2).

This test uses the known bounds of the variables to transform the data into [0, 1]. Then a random transformation is used to turn the data into binary-valued variables. On this variables the exact Fischer-Tocher Test with level `pseudoalpha` is performed and the result recorded. The random transformation and the test are then repeated `iterations` times. If the average rejection probability `probrej` of the iterations is at least `theta`, then the null hypothesis is rejected. If however `probrej` is too close to the threshold `theta` then the number of iterations is increased. The algorithm keeps increasing the number of iterations until the bound on the mistake involved by running these iterations is below `epsilon`. This error epsilon is incorporated into the overall level `alpha` in order to maintain that the test is exact.

`theta` is found in an optimization procedure. `theta` is chosen as to bring the type II error to 0.5. Please see the cited paper below for further information.

## Value

A list with class "nphtest" containing the following components:

 `method` a character string indicating the name and type of the test that was performed. `data.name` a character string giving the name(s) of the data. `alternative` a character string describing the alternative hypothesis. `estimate` the sample means of the two variables. `probrej` numerical estimate of the rejection probability of the randomized test, derived by taking an average of `iterations` realizations of the rejection probability. `bounds` the lower and upper bounds of the variables. `null.value` the specified hypothesized value of the correlation between the variables. `alpha` the type I error. `theta` the parameter that minimizes the type II error. `pseudoalpha` `theta`*`alpha`, this is the level used when calculating the average rejection probability during the iterations `rejection` logical indicator for whether or not the null hypothesis can be rejected `iterations` the number of iterations that were performed.

## Author(s)

Karl Schlag, Christian Pechhacker, Peter Saffert and Oliver Reiter

## References

Karl Schlag (2008), A New Method for Constructing Exact Tests without Making any Assumptions. Available at https://ideas.repec.org/p/upf/upfgen/1109.html.

 ``` 1 2 3 4 5 6 7 8 9 10``` ```## test whether countries with french origin score lower than ## countries with no french origin data(french) npMeanUnpaired(french[], french[], alternative = "less", ignoreNA = TRUE) ## test whether American tend to be more generous than Isrealis ## in a round of the Ultimatum game data(bargaining) npMeanUnpaired(bargaining\$US, bargaining\$IS, lower = 0, upper = 10, ignoreNA = TRUE) ```