def filter_dict(lam,bigZ,bigZlag):
    """Dictionary of spatially filtered variables for use in SUR
    
    Parameters
    ----------
    lam        : n_eq x 1 array of spatial autoregressive parameters
    bigZ       : dictionary of vector or matrix of variables, one for
                 each equation
    bigZlag    : dictionaly of vector or matrix of spatially lagged
                 variables, one for each equation
    
    Returns
    -------
    Zfilt      : dictionary with spatially filtered variables
                 Z - lam*WZ, one for each equation
    
    """
    n_eq = lam.shape[0]
    if not(len(bigZ.keys()) == n_eq and len(bigZlag.keys()) == n_eq):
        raise Exception("Error: incompatible dimensions")
    Zfilt = {}
    for r in range(n_eq):
        lami = lam[r][0]
        Zfilt[r] = bigZ[r] - lami*bigZlag[r]
    return Zfilt