在StatMatch中关闭NND.hotdeck随机化?

时间:2014-05-20 20:19:30

标签: r

我正在使用StatMatch库中的NND.hotdeck,并发现在相同的数据上运行它会产生不同的结果。这是一些示范代码:

library(StatMatch);
lab <- c(1:15, 51:65, 101:115);
iris.rec <- iris[lab, c(1:3,5)];
iris.don <- iris[-lab, c(1:2,4:5)];
a <- NND.hotdeck(data.rec=iris.rec, data.don=iris.don, match.vars=c("Sepal.Length", "Sepal.Width") );
b <- NND.hotdeck(data.rec=iris.rec, data.don=iris.don, match.vars=c("Sepal.Length", "Sepal.Width") );
View(a$mtc.ids)
View(b$mtc.ids)

两个网格大多相同,但存在差异。我希望它们是一样的。

如何关闭此随机化?我没有发现这种行为的引用,更不用说禁用它了。

1 个答案:

答案 0 :(得分:1)

我对包不熟悉,但我确信它在某处使用随机值。 您可以在每次通话前使用set.seed设置随机种子。

set.seed(1234)
a <- NND.hotdeck(data.rec=iris.rec, data.don=iris.don, match.vars=c("Sepal.Length", "Sepal.Width"))
set.seed(1234)
b <- NND.hotdeck(data.rec=iris.rec, data.don=iris.don, match.vars=c("Sepal.Length", "Sepal.Width"))

您可以检查两个输出是否相同:

all.equal(a, b) 

这可能不是一个非常优雅的解决方案,它并没有真正关闭随机化,但它确实有效。

干杯,

亚历