首页 > 解决方案 > 用 R 中的 mix 包用分类变量进行插补

问题描述

我正在尝试使用 R 中的 mix 包来估算包含分类变量(7 点李克特量表)的数据集中的缺失变量。这就是我正在做的事情:

1.加载数据:

data <- read.csv("test.csv", header=TRUE, row.names="ID")

2. 数据如下所示:

第一列是我的 ID 列,接下来的三列是分类变量(李克特 7 点量表——这些是我对估算缺失值感兴趣的部分)。然后我有三个辅助变量:aux_cat是另一个分类变量(从1到9无序,没有丢失数据),aux_one是一个整数(没有丢失数据),aux_two是数字(包含丢失数据)。

   var_one var_two var_three aux_cat aux_one  aux_two
1        2       1         2       6      26      0.0
2        3       2         3       7      45  32906.5
3        6       2         3       3      31   1237.5
4        7      NA        NA       8      11    277.0
5        4       3         1       5     145  78201.0
6       NA      NA        NA       6      30  48550.0
7        7       6         3       3      48  11568.0
8        6       6         4       2      15   4482.0
9        7       6         5       5      61       NA
10       5       6         7       3       2       NA
11       5       6         5       3      11  78663.0
12       6       2         2       3      16   1235.0
13       7       2         5       3      13   5781.0
14       6       5         4       6      16   5062.0
15       5       5         3       3      43    400.0
16       7       7         5       2     114   7968.0
17       6       5         4       3      99    247.5
18       7       7         7       6     114   1877.0
19       5       5         4       5       3   5881.5
20       4       4         2       3      65   1786.0
21       4       3         6       5       9  14117.5
22       3       3         2       3      35   2093.0
23       3       4         4       5      62  23071.5
24       5       3         5       3      22   2707.5
25       3       1         2       6     128    942.0
26       5       3         6       4      57 101379.0
27       5       5         4       6      76   1398.0
28       1       3         4       3      17   1024.5
29       4       3         2       1     143  10657.0
30       7       1         4       8      14    167.5
31       7       3         7       3      22   4344.0
32       3       3         3       6      27   1582.0
33       7       1         3       2      29     66.5
34       5       5         4       2     108    513.5
35       7       6         6       7      24    936.5
36       4       5         4       7      40   5950.5
37      NA      NA        NA       8      15     99.5
38       2       2         2       6      21    123.5
39       6       4         5       2      61    477.5
40       6       5         5       2      16  28921.0
41       6       2         2       2      11   1063.5
42       6       2         5       3     116  97798.5
43       4       4         2       8      11   9159.5
44       6       6         6       6       4   1098.5
45       6       4         5       7      21    236.5
46       4       6         4       5      43    219.5
47       3       2         3       3      28     85.5
48       5       5         5       2      71  13483.5
49       5       5         6       8      98  18400.0
50       5       6         6       3      27    357.0
51       5       7         6       7      14    145.5
52       4       5         5       3      93    427.5
53       3       4         5       2      40    412.0
54       6       6         3       2       8   2418.0
55       5       6         5       5       8   4923.5
56       4       5         2       7      32   4135.0
57       7       7         2       6      83   1408.5
58       7       2         3       2      12   5595.0
59       7       2         1       2      32   2280.5
60       7       4         5       3      11    638.5
61       7       5         3       3      24    225.5
62       4       3         3       9      44    570.0

3. 进行初步操作

我尝试运行prelim.mix(x, p)其中x是包含缺失值的数据矩阵,p是 x 中分类变量的数量。分类变量必须在 x 的前 p 列中,并且必须使用从 1 开始的连续正整数进行编码。例如,二进制变量必须编码为 1,2 而不是 0,1。

在我的情况下,p 应该是 4,因为我有三个李克特量表变量,我想要估算值和我的辅助变量中的另一个分类变量。

s <- prelim.mix(data,4)

这一步似乎工作正常。

4. 找到最大似然 (ML) 估计:

thetahat <- em.mix(s)

这是我遇到以下错误的地方:

EM 的步骤:1...2...3...em.mix(s) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 6)

我认为这一定与我的辅助变量有关,但我不确定。任何帮助将非常感激。

标签: rimputation

解决方案


推荐阅读