### Goals

This tutorial introduces the use of the optional weights for regression with the `quantileFit`

procedure. After this tutorial you should be able to estimate a weighted quantile regression.

## The weights input

The `quantileFit`

procedure accepts weights as the optional fourth input:

`quantileFit(dataset, formula, tau, weights)`

or

`quantileFit(y, x, tau, weights)`

The weights should be observation specific and the length of the weight vector must be equal to the length of the independent and dependent variable vectors.

## Example #1

Consider the previous example:

$$ln(wage) = \alpha + \beta_1 * age + \beta_2 * age^2 + \beta_3 * tenure .$$

Now, we will estimate the same model but will include weights. For the sake of simplicity, we will use randomly generated weights.

```
rndseed 68987;
// Create string with full path to dataset
dataset = getGAUSSHome() $+ "examples/regsmpl.dta";
// Specify quantile levels
tau = 0.05|0.50|0.95;
/*
** Generate random weights
** Note that the dataset has 28534 obs
*/
weights = rndn(28534, 1);
// Estimate the model with matrix inputs
call quantileFit(dataset, "ln_wage ~ age + age:age + tenure", tau, weights);
```

Notice that we now include four inputs when calling `quantileFit`

. Even though we use the default quantile levels we must still include `tau`

as an input because `weights`

must be the fourth input.

This produces the following output:

-- Weighted Analysis -- Total observations: 28101

Number of variables: 3

VAR. / tau (in %) 5% 50% 95%

--------------------------------------------------- CONSTANT 0.4912 0.4983 0.5082 age 0.0675 0.0665 0.0654 age:age -0.0011 -0.0010 -0.0010 tenure 0.0469 0.0467 0.0465

Note that **GAUSS** reports when a weighted analysis is performed before printing the estimates. In addition, we can see that the weights impact the estimated coefficients.

## Example #2

Now suppose we incorrectly try to use a vector of weights that does not have the same number of observations as the original data:

```
rndseed 68987;
// Create string with full path to dataset
dataset = getGAUSSHome() $+ "examples/regsmpl.dta";
// Specify quantile levels
tau = 0.05|0.50|0.95;
/*
** Generate random weights
** Note that the dataset has 28534 obs
** Use incorrect weight vector length
*/
weights = rndn(150, 1);
// Estimate the model with matrix inputs
call quantileFit(dataset, "ln_wage ~ age + age:age + tenure", tau, weights);
```

Now when we estimate our model we will see the following error message:

Because the default unit weights are used, our results are now the same as if we did not include any weights:

Total observations: 28101

Number of variables: 3

VAR. / tau (in %) 5% 50% 95%

--------------------------------------------------- CONSTANT -0.7630 0.5112 0.0006 age 0.1103 0.0656 0.1271 age:age -0.0017 -0.0010 -0.0016 tenure 0.0356 0.0466 0.0196

### Conclusion

This tutorial showed you how to perform a weighted analysis using `quantileFit`

. You should now know how to:

- Specify weights for
`quantileFit`

In the next tutorial we will learn how to store results from the `quantileFit`

procedure.