Professional Documents
Culture Documents
Hot Deck Imputation Source Code
Hot Deck Imputation Source Code
RANDOMIZE
LET TOT = 4130 ! TOT = Total number of observations !
LET TRIALS = 100 ! Number of trials !
LET N1 = 2635 ! N1 = Number of total observations under employment status 1 !
LET N2 = 1434 ! N2 = Number of total observations under employment status 2 !
LET N3 = 61 ! N3 = Number of total observations under employment status 3 !
LET NRR = 0.3 ! NRR = Nonresponse rate !
LET NON = NRR * TOT ! NON = Number of total nonresponse observations !
!Matrices that will contain the imputed data for the one hundred data sets!
DIM SIMI(TOT*TRIALS,5), SIME(TOT*TRIALS,5)
! Matrices that will contain the data sets which has nonresponse observation for each
imputation class and nonresponse variable !
DIM SIMI1(N1,5), SIMI2(N2,5), SIMI3(N3,5), SIME1(N1,5), SIME2(N2,5),
SIME3(N3,5)
! Matrices that contains the criteria that will be computed later in the program!
DIM CRITIN(TRIALS,3), CRITEX(TRIALS,3)
DO
LET TRIAL = TRIAL + 1 ! Trial count !
! PECK# = Observation number that was chosen randomly for the expenditure
variable under education status # !
! PICK# = Observation number that was chosen randomly for the income variable
under education status # !
FOR I= 1 TO N1
IF SIME1(I,5) = 0 THEN
LET PECK1 = INT(RND*N1) + 1
LET SIME1(I,4) = SIME1(PECK1,2)
END IF
IF SIMI1(I,5) = 0 THEN
LET PICK1 = INT(RND*N1) + 1
LET SIMI1(I,4) = SIMI1(PICK1,2)
END IF
NEXT I
FOR J = 1 TO N2
IF SIME2(J,5) = 0 THEN
LET PECK2 = INT(RND*N2) + 1
LET SIME2(J,4) = SIME2(PECK2,2)
END IF
IF SIMI2(J,5) = 0 THEN
LET PICK2 = INT(RND*N2) + 1
LET SIMI2(J,4) = SIMI2(PICK2,2)
END IF
NEXT J
FOR K = 1 TO N3
IF SIME3(K,5) = 0 THEN
LET PECK3 = INT(RND*N3) + 1
LET SIME3(K,4) = SIME3(PECK3,2)
END IF
IF SIMI3(K,5) = 0 THEN
LET PICK3 = INT(RND*N3) + 1
LET SIMI3(K,4) = SIMI3(PICK3,2)
END IF
NEXT K
LET MDSIMI1 = 0
LET MDSIMI2 = 0
LET MDSIMI3 = 0
LET MADSIMI1 = 0
LET MADSIMI2 = 0
LET MADSIMI3 = 0
LET RMSDSIMI1 = 0
LET RMSDSIMI2 = 0
LET RMSDSIMI3 = 0
LET MDSIME1 = 0
LET MDSIME2 = 0
LET MDSIME3 = 0
LET MADSIME1 = 0
LET MADSIME2 = 0
LET MADSIME3 = 0
LET RMSDSIME1 = 0
LET RMSDSIME2 = 0
LET RMSDSIME3 = 0
LET NUMB = 0
FOR A = 1 TO N1
LET NUM = NUM + 1
IF SIMI1(A,5) = 0 THEN
LET DIFFI1 = SIMI1(A,4) - SIMI1(A,3)
LET MDSIMI1 = MDSIMI1 + DIFFI1
LET MADSIMI1 = MADSIMI1 + (ABS(DIFFI1))
LET RMSDSIMI1 = RMSDSIMI1 + (DIFFI1)^2
END IF
IF SIME1(A,5) = 0 THEN
LET DIFFE1 = SIME1(A,4) - SIME1(A,3)
LET MDSIME1 = MDSIME1 + DIFFE1
LET MADSIME1 = MADSIME1 + (ABS(DIFFE1))
LET RMSDSIME1 = RMSDSIME1 + (DIFFE1)^2
END IF
FOR COL = 1 TO 5
LET SIMI(NUM,COL) = SIMI1(A,COL)
LET SIME(NUM,COL) = SIME1(A,COL)
NEXT COL
CLOSE #7
CLOSE #8
CLOSE #9
CLOSE #10
END