def covariance
          cache = Hash.new do |h, (col, row)|
            value = vector_cov(self[row],self[col])
            h[[col, row]] = value
            h[[row, col]] = value
          end
          vectors = numeric_vectors

          mat_rows = vectors.collect do |row|
            vectors.collect do |col|
              row == col ? self[row].variance : cache[[col,row]]
            end
          end

          Daru::DataFrame.rows(mat_rows, index: numeric_vectors, order: numeric_vectors)
        end
Calculate sample variance-covariance between the numeric vectors.