如何让R在我的输入数据上运行svyglm?

t1qtbnec  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(120)

(第一次贴海报,对R很陌生,所以如果我的解释不是很清楚,请耐心等待)
我有一个数据集,在两个时间点(21个月和7岁)收集了一个结果指标。用小鼠插补第二个时间点的结果测量的缺失数据。我现在想使用svyglm对两个时间点运行一些线性回归模型,但我认为没有使用插补数据,因为第二个时间点的df远低于第一个时间点。两个时间点的总样本量应为2591。
我还调整了家庭内的聚类,因为我在数据集中使用FamID变量使用双胞胎数据。
我的代码是:

  1. #run imputation itself
  2. df1_imp<- mice(imp, max=50, m=20, pred=predM, seed=5)
  3. #adjust for family clustering
  4. imp_list <- lapply( 1:20 , function( n ) complete(df1_imp , action = n ) )
  5. df1_imp_data <- svydesign(ids=~famID, probs=~1, data=imputationList(imp_list), nest=TRUE)
  6. ## 21 months SES and UPF
  7. #Model 1
  8. SES21m <- with(df1_imp_data, svyglm(UPF_21m ~ SES_compositeWeighted, design = df1_imp_data))
  9. summary(pool(SES21m))
  10. ## 7 years SES and UPF
  11. #Model 1
  12. SES7y <- with(df1_imp_data, svyglm(UPF_7y ~ SES_compositeWeighted, design = df1_imp_data))
  13. summary(pool(SES7y))

我的21个月模型的输出是:

  1. term estimate std.error statistic df p.value
  2. 1 (Intercept) 58.5069 1.52126 38.4595 1284.0 6.3124e-216
  3. 2 SES_compositeWeighted -2.5414 0.31247 -8.1333 1282.7 9.7675e-16

7年模型的输出是:

  1. term estimate std.error statistic df p.value
  2. 1 (Intercept) 67.4022 1.53660 43.8644 62.349 1.4021e-48
  3. 2 SES_compositeWeighted -1.3201 0.29022 -4.5486 100.121 1.5178e-05
zi8p0yeb

zi8p0yeb1#

报告的df不仅仅基于样本量(这就是为什么它不是整数)。它更低,因为方差估计的一部分来自插补间比较,其df仅与插补一样多。
查看是否使用了所有数据的最简单方法是在池化SES7y对象之前查看svyglm中的单个svyglm对象。

相关问题