collinearity {fixest} | R Documentation

## Collinearity diagnostics for `fixest` objects

### Description

In some occasions, the optimization algorithm of `femlm` may fail to converge, or the variance-covariance matrix may not be available. The most common reason of why this happens is colllinearity among variables. This function helps to find out which set of variables is problematic.

### Usage

    collinearity(x, verbose)

### Arguments

`x` | A `fixest` object obtained from, e.g. functions `femlm`, `feols` or `feglm`.
`verbose` | An integer. If higher than or equal to 1, then a note is prompted at each step of the algorithm. By default `verbose = 0` for small problems and to 1 for large problems.

### Details

This function tests: 1) collinearity with the cluster variables, 2) perfect multi-collinearity between the variables, 4) perfect multi-collinearity between several variables and the clusters, and 4) identification issues when there are non-linear in parameters parts.

### Value

It returns a text message with the identified diagnostics.

### Author(s)

Laurent Berge

### Examples

    # Creating an example data base:
    cluster_1 = sample(3, 100, TRUE)
    cluster_2 = sample(20, 100, TRUE)
    x = rnorm(100, cluster_1)**2
    y = rnorm(100, cluster_2)**2
    z = rnorm(100, 3)**2
    dep = rpois(100, x*y*z)
    base = data.frame(cluster_1, cluster_2, x, y, z, dep)

    # creating collinearity problems:
    base$v1 = base$v2 = base$v3 = base$v4 = 0
    base$v1[base$cluster_1 == 1] = 1
    base$v2[base$cluster_1 == 2] = 1
    base$v3[base$cluster_1 == 3] = 1
    base$v4[base$cluster_2 == 1] = 1

    # Estimations:

    # Collinearity with the cluster variables:
    res_1 = femlm(dep ~ log(x) + v1 + v2 + v4 | cluster_1 + cluster_2, base)
    collinearity(res_1)
    # => collinearity with cluster identified, we drop v1 and v2
    res_1bis = femlm(dep ~ log(x) + v4 | cluster_1 + cluster_2, base)
    collinearity(res_1bis)

    # Multi-Collinearity:
    res_2 =  femlm(dep ~ log(x) + v1 + v2 + v3 + v4, base)
    collinearity(res_2)

    # In non-linear part:
    res_3 = feNmlm(dep ~ log(z), base, NL.fml = ~log(a*x + b*y),
                  NL.start = list(a=1, b=1), lower = list(a=0, b=0))
    collinearity(res_3)

[Package fixest version 0.1.0 Index]