code: def probabilistic_collocation(order, dist, subset=.1):
      
      abscissas, weights = chaospy.quad.collection.golub_welsch(order, dist)
  
      likelihood = dist.pdf(abscissas)
  
      alpha = numpy.random.random(len(weights))
      alpha = likelihood > alpha*subset*numpy.max(likelihood)
  
      abscissas = abscissas.T[alpha].T
      weights = weights[alpha]
      return abscissas, weights
docs: Probabilistic collocation method.
  
      Args:
          order (int, numpy.ndarray) : Quadrature order along each axis.
          dist (Dist) : Distribution to generate samples from.
          subset (float) : Rate of which to removed samples.