public function analyze($parameters, $filter = false, $start = false, $end = false, $id = false)
    {
        if ($id) {
            $this->_id = $id;
        }

        //If parameters is not an array try and decode it
        if (! is_array($parameters)) {
            $parameters = json_decode($parameters);
        }

        if (empty($parameters)) {
            throw new DataSift_Exception_InvalidData('Parameters must be supplied as an array or valid JSON');
        }
        $params = array(
            'id' => $this->_id,
            'parameters' => $parameters
        );

        //Set optional request parameters
        if ($filter) {
            $params['filter'] = $filter;
        }

        if ($start) {
            $params['start'] = $start;
        }

        if ($end) {
            $params['end'] = $end;
        }

        return $this->_user->post('pylon/analyze', $params);
    }