使用 R 中的二项分布估算缺失值
impute missing values using binomial distribution in R
我有一列包含一些缺失值 (q1 = 9) ,我想根据 q1=1(=yes) 和 q1 =2(=no) 二项分布来估算它,就像下面的 SPSS 脚本一样。我找不到 R 等效函数
SPSS代码:
SPSS version :IF q_1 = 9 x=RV.BINOM(1,0.976) .
if q_1 = 9 & x=1 q_1 = 1.
if q_d1 = 9 & x=0 q_1 = 2.
专栏总结是这样的
q_1 n percent
1 5868 97.56%
2 142 2.36%
9 5 0.08%
您可以使用 sample
生成估算值。
Missing = which(q1 == 9)
q1[Missing] = sample(2, length(Missing), prob=c(0.976, 0.024))
这个怎么样:
library(tidyverse)
vect1 <- runif(10000, 0, 1)
vect1a <- case_when(
vect1 < 0.9756 ~ 1,
vect1 < 0.9756 + 0.0236 ~ 2,
TRUE ~ 9)
df1 <- tibble(q1 = vect1a)
pct1 <- 0.9756 / (1 - 0.008)
df1a <- df1 %>%
mutate(rand_id = runif(nrow(.), 0, 1),
q1a = case_when(q1 < 9 ~ q1,
rand_id < pct1 ~ 1,
TRUE ~ 2))
Mice 包也可以处理估算缺失值,但不确定它是否使用二项分布。
我有一列包含一些缺失值 (q1 = 9) ,我想根据 q1=1(=yes) 和 q1 =2(=no) 二项分布来估算它,就像下面的 SPSS 脚本一样。我找不到 R 等效函数
SPSS代码:
SPSS version :IF q_1 = 9 x=RV.BINOM(1,0.976) .
if q_1 = 9 & x=1 q_1 = 1.
if q_d1 = 9 & x=0 q_1 = 2.
专栏总结是这样的
q_1 n percent
1 5868 97.56%
2 142 2.36%
9 5 0.08%
您可以使用 sample
生成估算值。
Missing = which(q1 == 9)
q1[Missing] = sample(2, length(Missing), prob=c(0.976, 0.024))
这个怎么样:
library(tidyverse)
vect1 <- runif(10000, 0, 1)
vect1a <- case_when(
vect1 < 0.9756 ~ 1,
vect1 < 0.9756 + 0.0236 ~ 2,
TRUE ~ 9)
df1 <- tibble(q1 = vect1a)
pct1 <- 0.9756 / (1 - 0.008)
df1a <- df1 %>%
mutate(rand_id = runif(nrow(.), 0, 1),
q1a = case_when(q1 < 9 ~ q1,
rand_id < pct1 ~ 1,
TRUE ~ 2))
Mice 包也可以处理估算缺失值,但不确定它是否使用二项分布。