【问题标题】:Simulate null distribution for multiple variables using infer package使用 infer 包模拟多个变量的空分布
【发布时间】:2020-11-23 12:24:56
【问题描述】:

使用数据框

df <- data.frame(user_id = seq(50),
                 var_1 = rnorm(50),
                 var_2 = rnorm(50),
                 var_3 = rnorm(50)
)

例如,我可以使用 infer 包模拟变量 var_1 的空分布

null_dist <- df %>%
        
        specify(response = var_1) %>% 
        
        hypothesize(null = "point", mu = 0) %>% 
        
        generate(reps = 10000, type = "bootstrap") %>% 
        
        calculate(stat = "mean")

然后将其可视化

null_dist %>% visualize() 

如何将这个过程同时应用于所有 3 个变量,例如在将 df 转换为 df_2 之后?

df_2 <- df %>%
        
        pivot_longer(starts_with("var_"), "variable", values_to = "values")

感谢您的支持!

【问题讨论】:

    标签: r simulation distribution


    【解决方案1】:

    一种解决方案可能是:

    1. 初始数据帧的转换
    df_2 <- df %>%
            
            pivot_longer(starts_with("var_"), "variable", values_to = "values")
    
    1. 定义函数
    null_dist_func <- function(df){
            
            df %>% specify(response = values) %>%
                    hypothesize(null = "point", mu = 0) %>%
                    generate(reps = 1000, type = "bootstrap") %>%
                    calculate(stat = "mean")
    }
    
    1. 拆分-应用-组合方法
    null_dist <- df_2 %>% select(-user_id) %>%
            
            split(list(.$variable)) %>%
            
            map(null_dist_func) %>% 
            
            bind_rows(.id = "variable")
    

    所选空分布的可视化

    null_dist %>% filter(variable == "var_2") %>% visualize()
    

    【讨论】:

      猜你喜欢
      • 2016-12-07
      • 2020-06-23
      • 2017-10-24
      • 1970-01-01
      • 2019-04-25
      • 2016-02-03
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      相关资源
      最近更新 更多