Multiple imputation: adding constraints to nominal data

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Multiple imputation: adding constraints to nominal data

Lucinda
Hi, I have a question I hope someone knows a solution to.

I have a large questionaire with some questions that are skipped because
they should be skipped (''if this question is yes, then skip the next
questions''). These missing answers I coded with -1. Missings that are
truely missing are system missing, and these are the only ones I want to
impute. I therefore want to add a constraint that ensures imputed cases can
be between 1 - 5.

I know there is an option to add constraints in MI, but only if the
variables are on a scale level. Most of my variables are ordinal, some are
binairy and some are nominal.

If I do MI as is, SPSS will also use the -1 cases to predict the system
missings. It is impossible to use contraints with variables that are on any
other level than scale.

Is there any way around this?

Thank you in advance!



--
Sent from: http://spssx-discussion.1045642.n5.nabble.com/

=====================
To manage your subscription to SPSSX-L, send a message to
[hidden email] (not to SPSSX-L), with no body text except the
command. To leave the list, send the command
SIGNOFF SPSSX-L
For a list of commands to manage subscriptions, send the command
INFO REFCARD
Reply | Threaded
Open this post in threaded view
|

Re: Multiple imputation: adding constraints to nominal data

Joost van Ginkel
Dear Lucinda,

I would advise you to use the mice procedure in R instead. This procedure can impose all kinds of restrictions. Unfortunately, the mice procedure is much more complicated while the SPSS procedure seems easy and user-friendly at first. However, as an expert in the field of multiple imputation I can tell that oftentimes missing-data problems are complex, and require complex solutions. The options within the multiple-imputation procedure in SPSS is way too limited to handle such complex situations.

Best regards,

Joost van Ginkel

-----Original Message-----
From: SPSSX(r) Discussion <[hidden email]> On Behalf Of Lucinda
Sent: vrijdag 17 januari 2020 16:54
To: [hidden email]
Subject: Multiple imputation: adding constraints to nominal data

Hi, I have a question I hope someone knows a solution to.

I have a large questionaire with some questions that are skipped because they should be skipped (''if this question is yes, then skip the next questions''). These missing answers I coded with -1. Missings that are truely missing are system missing, and these are the only ones I want to impute. I therefore want to add a constraint that ensures imputed cases can be between 1 - 5.

I know there is an option to add constraints in MI, but only if the variables are on a scale level. Most of my variables are ordinal, some are binairy and some are nominal.

If I do MI as is, SPSS will also use the -1 cases to predict the system missings. It is impossible to use contraints with variables that are on any other level than scale.

Is there any way around this?

Thank you in advance!



--
Sent from: http://spssx-discussion.1045642.n5.nabble.com/

=====================
To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD

=====================
To manage your subscription to SPSSX-L, send a message to
[hidden email] (not to SPSSX-L), with no body text except the
command. To leave the list, send the command
SIGNOFF SPSSX-L
For a list of commands to manage subscriptions, send the command
INFO REFCARD
Reply | Threaded
Open this post in threaded view
|

Re: Multiple imputation: adding constraints to nominal data

Bruce Weaver
Administrator
Hello Joost (and Lucinda).  Joost, what do you think about this as a
relatively straightforward approach in SPSS?  Would it suffice in Lucinda's
case?

1. Use MULTIPLE IMPUTATION in SPSS imputing values for all missing values,
including those coded -1.  

2. In the file with the original data and the multiple datasets with imputed
values, SORT by ID and them Imputation_; then cycle through the list of
relevant variables and restore the -1 codes where they are wanted.

Here's a small example showing roughly what the code would look like.

* Generate a small data set resembling the MI data set one gets from
MULTIPLE IMPUTATION.
DATA LIST LIST / Imputation_ ID v1 v2 (4F5.0).
BEGIN DATA
0 1 2 5
0 2 -1 -1
0 3  3 -9
0 4 -9 2
0 5 3 4
1 1 2 5
1 2 1 2
1 3  3 9
1 4 9 2
1 5 3 4
2 1 2 5
2 2 2 1
2 3  3 9
2 4 9 2
2 5 3 4
END DATA.

SORT CASES BY ID Imputation_.
* Reset missing values so that -1 is not treated as missing.
MISSING VALUES v1 v2 (-9).

* Here is the main part of the code.
DO REPEAT v = v1 v2.
IF (Imputation_ GT 0) AND (LAG(v) EQ -1) v = LAG(v).
END REPEAT.
LIST.  
* NOTE:  A data pass is required before resetting the missing values below,
* hence the inclusion of the LIST command.
* In a larger dataset, use EXECUTE rather than LIST.

* Reset missing values to treat -1 as missing again.
MISSING VALUES v1 v2 (-1 -9).

Here's the output from the final LIST command:

Imputation_    ID    v1    v2
 
       0        1     2     5
       1        1     2     5
       2        1     2     5
       0        2    -1    -1
       1        2    -1    -1   <-- -1 copied from previous row
       2        2    -1    -1   <-- -1 copied from previous row
       0        3     3    -9
       1        3     3     9
       2        3     3     9
       0        4    -9     2
       1        4     9     2
       2        4     9     2
       0        5     3     4
       1        5     3     4
       2        5     3     4
 
 Number of cases read:  15    Number of cases listed:  15


PS- I tried using the VALUE() function to test for and assign -1 values, but
it didn't seem to work in this situation.  That's why I ended up resetting
the missing values to temporarily treat -1 as not missing.  If some can get
the basic code working with VALUE() instead, that would be great.



Joost van Ginkel wrote

> Dear Lucinda,
>
> I would advise you to use the mice procedure in R instead. This procedure
> can impose all kinds of restrictions. Unfortunately, the mice procedure is
> much more complicated while the SPSS procedure seems easy and
> user-friendly at first. However, as an expert in the field of multiple
> imputation I can tell that oftentimes missing-data problems are complex,
> and require complex solutions. The options within the multiple-imputation
> procedure in SPSS is way too limited to handle such complex situations.
>
> Best regards,
>
> Joost van Ginkel





-----
--
Bruce Weaver
[hidden email]
http://sites.google.com/a/lakeheadu.ca/bweaver/

"When all else fails, RTFM."

NOTE: My Hotmail account is not monitored regularly.
To send me an e-mail, please use the address shown above.

--
Sent from: http://spssx-discussion.1045642.n5.nabble.com/

=====================
To manage your subscription to SPSSX-L, send a message to
[hidden email] (not to SPSSX-L), with no body text except the
command. To leave the list, send the command
SIGNOFF SPSSX-L
For a list of commands to manage subscriptions, send the command
INFO REFCARD
--
Bruce Weaver
bweaver@lakeheadu.ca
http://sites.google.com/a/lakeheadu.ca/bweaver/

"When all else fails, RTFM."

NOTE: My Hotmail account is not monitored regularly.
To send me an e-mail, please use the address shown above.
Reply | Threaded
Open this post in threaded view
|

Re: Multiple imputation: adding constraints to nominal data

Art Kendall
In reply to this post by Lucinda
How did you get sysmis rather than some form of user missing? Were the inputs
unreadable by SPSS?  Were they the result of transformations?
Are the sysmis values scattered across questions or are they concentrated on
a few questions?



Since you have a long questionnaire, is it possible many of the questions
are parts of summative scales?




-----
Art Kendall
Social Research Consultants
--
Sent from: http://spssx-discussion.1045642.n5.nabble.com/

=====================
To manage your subscription to SPSSX-L, send a message to
[hidden email] (not to SPSSX-L), with no body text except the
command. To leave the list, send the command
SIGNOFF SPSSX-L
For a list of commands to manage subscriptions, send the command
INFO REFCARD
Art Kendall
Social Research Consultants
Reply | Threaded
Open this post in threaded view
|

Re: Multiple imputation: adding constraints to nominal data

Joost van Ginkel
In reply to this post by Bruce Weaver
Dear Bruce,

I'm not sure if that would be a good idea, as the -1's will also have an influence of the parameter estimates of the imputation model, which will consequently influence the imputed values on other cases.

Best regards,

Joost van Ginkel

-----Original Message-----
From: SPSSX(r) Discussion <[hidden email]> On Behalf Of Bruce Weaver
Sent: vrijdag 17 januari 2020 21:19
To: [hidden email]
Subject: Re: Multiple imputation: adding constraints to nominal data

Hello Joost (and Lucinda).  Joost, what do you think about this as a relatively straightforward approach in SPSS?  Would it suffice in Lucinda's case?

1. Use MULTIPLE IMPUTATION in SPSS imputing values for all missing values, including those coded -1.  

2. In the file with the original data and the multiple datasets with imputed values, SORT by ID and them Imputation_; then cycle through the list of relevant variables and restore the -1 codes where they are wanted.

Here's a small example showing roughly what the code would look like.

* Generate a small data set resembling the MI data set one gets from MULTIPLE IMPUTATION.
DATA LIST LIST / Imputation_ ID v1 v2 (4F5.0).
BEGIN DATA
0 1 2 5
0 2 -1 -1
0 3  3 -9
0 4 -9 2
0 5 3 4
1 1 2 5
1 2 1 2
1 3  3 9
1 4 9 2
1 5 3 4
2 1 2 5
2 2 2 1
2 3  3 9
2 4 9 2
2 5 3 4
END DATA.

SORT CASES BY ID Imputation_.
* Reset missing values so that -1 is not treated as missing.
MISSING VALUES v1 v2 (-9).

* Here is the main part of the code.
DO REPEAT v = v1 v2.
IF (Imputation_ GT 0) AND (LAG(v) EQ -1) v = LAG(v).
END REPEAT.
LIST.  
* NOTE:  A data pass is required before resetting the missing values below,
* hence the inclusion of the LIST command.
* In a larger dataset, use EXECUTE rather than LIST.

* Reset missing values to treat -1 as missing again.
MISSING VALUES v1 v2 (-1 -9).

Here's the output from the final LIST command:

Imputation_    ID    v1    v2
 
       0        1     2     5
       1        1     2     5
       2        1     2     5
       0        2    -1    -1
       1        2    -1    -1   <-- -1 copied from previous row
       2        2    -1    -1   <-- -1 copied from previous row
       0        3     3    -9
       1        3     3     9
       2        3     3     9
       0        4    -9     2
       1        4     9     2
       2        4     9     2
       0        5     3     4
       1        5     3     4
       2        5     3     4
 
 Number of cases read:  15    Number of cases listed:  15


PS- I tried using the VALUE() function to test for and assign -1 values, but it didn't seem to work in this situation.  That's why I ended up resetting the missing values to temporarily treat -1 as not missing.  If some can get the basic code working with VALUE() instead, that would be great.



Joost van Ginkel wrote

> Dear Lucinda,
>
> I would advise you to use the mice procedure in R instead. This
> procedure can impose all kinds of restrictions. Unfortunately, the
> mice procedure is much more complicated while the SPSS procedure seems
> easy and user-friendly at first. However, as an expert in the field of
> multiple imputation I can tell that oftentimes missing-data problems
> are complex, and require complex solutions. The options within the
> multiple-imputation procedure in SPSS is way too limited to handle such complex situations.
>
> Best regards,
>
> Joost van Ginkel





-----
--
Bruce Weaver
[hidden email]
http://sites.google.com/a/lakeheadu.ca/bweaver/

"When all else fails, RTFM."

NOTE: My Hotmail account is not monitored regularly.
To send me an e-mail, please use the address shown above.

--
Sent from: http://spssx-discussion.1045642.n5.nabble.com/

=====================
To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD

=====================
To manage your subscription to SPSSX-L, send a message to
[hidden email] (not to SPSSX-L), with no body text except the
command. To leave the list, send the command
SIGNOFF SPSSX-L
For a list of commands to manage subscriptions, send the command
INFO REFCARD
Reply | Threaded
Open this post in threaded view
|

Re: Multiple imputation: adding constraints to nominal data

Adamski
I think Joost is right, the -1's might influence the parameter estimates of
the imputation model or at least one is operating in a black box. I am
looking desperate for a solution to this issue, I would even go so far as to
use the R, but I just can't find a how-to for not very tech savvy folks —
although the problem should affect many people.



--
Sent from: http://spssx-discussion.1045642.n5.nabble.com/

=====================
To manage your subscription to SPSSX-L, send a message to
[hidden email] (not to SPSSX-L), with no body text except the
command. To leave the list, send the command
SIGNOFF SPSSX-L
For a list of commands to manage subscriptions, send the command
INFO REFCARD