You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于条件概率及已有模拟数据生成0/1变量A3的问题咨询

解决方案:根据条件生成A3变量

方法1:Base R实现

直接用嵌套ifelse定义概率,再通过rbinom生成0/1变量:

set.seed(47)
df <- data.frame(A1 = rnorm(1000, mean=0.7, sd=0.1), A2 = rnorm(1000, mean=4, sd=1))

# 计算每个观测对应的A3取1的概率
df$p_A3 <- ifelse(df$A1 >= 0.7 & df$A2 >= 0.8, 0.7,
                  ifelse(df$A1 >= 0.7 & df$A2 < 0.8, 0.3,
                         ifelse(df$A1 < 0.7 & df$A2 >= 0.8, 0.9, 0.1)))

# 生成A3变量(0=失败,1=通过)
df$A3 <- rbinom(nrow(df), size=1, prob=df$p_A3)

方法2:dplyr实现(代码更易读)

用case_when清晰定义多条件逻辑,适合复杂规则场景:

library(dplyr)

set.seed(47)
df <- data.frame(A1 = rnorm(1000, mean=0.7, sd=0.1), A2 = rnorm(1000, mean=4, sd=1))

df <- df %>%
  mutate(
    # 定义每个观测的A3取1概率
    p_A3 = case_when(
      A1 >= 0.7 & A2 >= 0.8 ~ 0.7,
      A1 >= 0.7 & A2 < 0.8 ~ 0.3,
      A1 < 0.7 & A2 >= 0.8 ~ 0.9,
      TRUE ~ 0.1  # 匹配剩余的A1<0.7且A2<0.8的情况
    ),
    # 生成A3变量
    A3 = rbinom(n(), size=1, prob=p_A3)
  )

验证结果(可选)

可以通过分组统计验证A3的比例是否符合设定概率:

df %>%
  mutate(
    A1_status = ifelse(A1 >= 0.7, "通过", "失败"),
    A2_status = ifelse(A2 >= 0.8, "通过", "失败")
  ) %>%
  group_by(A1_status, A2_status) %>%
  summarise(
    样本量 = n(),
    A3通过比例 = mean(A3)
  )

内容的提问来源于stack exchange,提问作者Language. Do you believe in it

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:01:18