Trong
quá trình thu thập số liệu, mặc dù đã cố gắng kiểm soát chất lượng nhưng khó có
thể tránh khỏi việc bị missing số liệu (hay số liệu bị thiếu thông tin). Có một
số cách để xử lý các giá trị missing đó, thongke.info xin giới thiệu một số
lệnh syntax cơ bản để xử lý giá trị missing.
a. Thay thế
giá trị missing bằng giá trị trung bình của biến nhiều phân loại
Tạo bộ
số liệu với một số giá trị missing.
SET SEED=123456.
INPUT PROGRAM.
LOOP id=1 TO 250.
COMPUTE
cat1=RND(UNIFORM(25)).
IF (UNIFORM(1)>.15)
var1=UNIFORM(5).
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
SAVE
OUTFILE='c:\temp\temp.sav'.
Cách 1
GET
FILE='c:\temp\temp.sav'.
SORT CASES BY cat1.
AGGREGATE OUTFILE=*
/PRESORTED
/BREAK=cat1
/meanvar1=MEAN(var1).
LIST
Có thể
kiểm tra kết quả
COMPUTE nobreak=1.
MATCH FILES FILE=*
/BY=nobreak /FIRST=first /LAST=last.
WRITE
OUTFILE='c:\temp\define vars1.sps.
/'IF MISSING(var2)
AND cat1 = 'cat1' var2='meanvar1'.'.
EXECUTE.
GET
FILE='c:\temp\temp.sav'.
COMPUTE var2=var1. /*
preserve original values*/.
INCLUDE 'c:\temp\define
vars1.sps'.
EXECUTE.
Cách 2
GET
FILE='c:\temp\temp.sav'.
SORT CASES BY cat1.
SPLIT FILE BY cat1.
RMV var2=MEAN(var1,ALL).
SPIT FILE OFF.
b. Thay thế
giá trị missing bằng giá trị trung bình
SET MPRINT=no.
define impute (!positional !enclose ('(',')')
/
!positional !enclose('(',')')
/
!positional !enclose ('(',')'))
!LET !varlist=!HEAD(!1)
!DO !var !IN (!TAIL(!1))
!LET !varlist=!CONCAT(!varlist,',',!var)
!DOEND
COUNT
#mitems = !1 (MISSING).
COUNT
#items = !1 (lo thru hi).
compute #diff = 1 - (#mitems / #items).
DO IF (#diff LT .75).
compute #FILL = MEAN(!varlist).
END IF.
DO REPEAT x = !1.
if missing(x) x = #fill.
END REPEAT.
compute scale1 = SUM(!varlist ).
EXECUTE .
!enddefine.
SET MPRINT=yes.
* call the macro.
impute (q2a q2b q2c).
Thongke.info cám ơn Mr. Raynald
Levesque đã cho phép thongke.info sử dụng một số syntax trong bài viết này từ www.spsstools.net
Số lượt đọc:
3583
-
Cập nhật lần cuối:
19/06/2012 05:17:20 PM |