Removing Missing Values
for Regression Analysis

The regression function cannot work in xlisp-stat when there are missing values in either one of the data lists. The following functions will remove missing observations if the cases in either one of the variables have missing values.

(defun remove-nil (&rest args)
  (def mat (apply #'bind-columns args))
  (def mat (row-list mat))
  (def mat (no-nil-list mat))
  (def mat (apply #'bind-rows mat))
  (def mat (mapcar #'(lambda (x) (coerce x 'list)) (column-list mat))))

;; this function remove the nil and thus some lists become shorter,
;; then select the observations which is not shorter
(defun no-nil-list (lis)
  (setq length-list (length (select lis 0)))
  (setq new-list nil)
     (cond ((null lis) (return new-list)))
     (setq new-list (cons (remove 'nil (coerce (car lis) 'list)) new-list))
     (setq lis (cdr lis)))
  (setq new-length (mapcar 'length new-list))
  (setq no-nil-list (select new-list (which (= new-length length-list)))))

Return to Index