我正在尝试使用在Stata中用老鼠创建的推测数据。
我对这些步骤的理解是:
1)在R中将mids对象转换为mi
m=20
completed=lapply(1:20,function(i)complete(imp,i))
completed.mi=do.call(Zelig::mi,completed)2)制备小鼠R输出对象
(a) mi2stata
STATA=mi::mi2stata(completed.mi, m=20, file="C:\\Users\\STATA.csv",
missing.ind = FALSE)
Note: after loading the data into Stata, version 11 or later, type 'mi
import ice' to register the data as being multiply imputed.
For Stata 10 and earlier, install MIM by typing 'findit mim' and include
'mim:' as a prefix for any command using the MI data.
Error in lapply(X = X, FUN = FUN, ...) :
trying to get slot "data" from an object (class "mi") that is not an S4
object (b)按照下面的建议,在没有mi2stata的情况下编写一份csv:
data_out <- data.table::rbindlist(completed, idcol="m")
write.csv(data_out, "C:\\deleted\\STATA2.csv", row.names=FALSE)3)将原始数据的CSV文件导入Stata
**似乎运作良好。CSV文件中的所有变量都显示在右侧。
4)在Stata中使用mi导入冰命令。
(a)错误re: mi2stata (我实际上导入了非加密文件)
. mi import ice STATA
varlist not allowed
r(101);(b)读取计算数据的CSV版本时出错
mi import ice[stata2]
weights not allowed
r(101);我遇到了2,4,可能还有1的错误(因为2的错误指的是鼠标对象到mi类数据的转换)。我真的很感激一个用户友好的逐步指导。虽然mi2stata可能不能直接用于鼠标对象,但我仍然有兴趣学习一种解决方案。
发布于 2018-04-22 18:16:31
收集上面的注释:您不能将mi::mi2stata与来自Zelig::mi或mice::complete的数据一起使用。但是,如果您查看mi::mi2stata的代码,它似乎只是堆叠了原始数据和每个估算的数据集。然后,它添加索引来标记每个数据集和每个观察。
library(mice)
# don't really need data.table but makes adding the indices easier
library(data.table)
# Function to export mice imputed datasets
mice2stata <- function(imp, path="stata", type="dta"){
completed <- lapply(seq_len(imp$m),function(i) complete(imp,i))
data_out <- rbindlist(completed, idcol="_mj")
data_out <- rbind(imp$data, data_out, fill=TRUE)
data_out[, `_mj` := replace(`_mj`, is.na(`_mj`), 0L)]
data_out[, `_mi` := rowid(`_mj`)]
if(type=="dta") {
foreign::write.dta(data_out, file=paste(path, type, sep="."))
} else {
write.csv(data_out, file=paste(path, type, sep="."), na="", row.names=FALSE)
}
}一个例子
imp <- mice(nhanes, m=2, print=FALSE)
mice2stata(imp, type="dta")然后在Stata中使用
use path\to\stata.dta
mi import ice发布于 2018-04-22 11:08:12
Q4看起来很简单。该命令的语法(而不是函数)记录为
mi import ice [, options]因此,STATA看起来像是试图指定一个变量列表。那是从哪来的?
如果Q2失败了,Q3和Q4的重点是什么?
我希望一些R用户可以在Q2上添加一些评论。从表面上看,您得到了一个明确的错误消息,所以您认为这是错误的吗?
https://stackoverflow.com/questions/49965155
复制相似问题