def filter_by_min_length(splits, min_length, threshold=0.1):
    """Filtering out those compound analyses that contain over a
    threshold ratio of words over specified length.

        Example:
            >>> splits = [['t', 'o', 'm', 'c', 'a', 't'],\
                          ['t', 'o', 'm', 'c', 'at'],\
                          ["tom", "cat"]]
            >>> print(filter_by_min_length(splits, min_length=3))
            [['tom', 'cat']]

    Args:
        splits (list): list of lists
        min_length (int): the minimum length of words in an acceptable
            analysis
        threshold: the acceptable ratio of short to longer words in the
            analysis

    Returns:
        (list): filtered list of analyses
    """
    filtered = []
    for split in splits:
        too_short = [w for w in split if len(w) < min_length]
        score = len(too_short)/len(split)
        if score < threshold:
            filtered.append(split)
    return filtered