当前位置: 首页 > news >正文

R语言高效数据处理-变量批量统计检验

A:以下的4个检验都会自动判断数据里面的数据类型,然后选择对应的变量作统计检验;

B:检验结果中有的是捕获了检验警告信息的,帮助选择检验结果数据;

C:所有检验均只返回统计检验结果数据,不判断使用哪种检验结果作为最终需要的数据,有需要这一层判断自行添加逻辑

1、单样本检验

#date_base为需要检验变量的数据,虽然单样本检验为连续型变量,
#但这里不用去选择变量的数据类型,函数里面会去判断
one_independent_test <- function(data_base){data_base %>% select(where(is.double)) %>% imap(~ {shapiro_p <- shapiro.test(.x)$p.valuet_or_wil_test=if_else(shapiro.test(.x)$p.value > 0.05,t.test(.x) %>% tidy(),wilcox.test(.x) %>% tidy())bind_cols(tibble(shapiro_p,t_or_wil_test))}) %>% bind_rows( .id = "variable")
}

2、两独立样本检验

#date_base为需要检验变量的数据,group_var为分组的变量,
#虽然两独立样本检验为连续型变量,但这里不用去选择变量的数据类型,函数里面会去判断
two_independent_test <- function(data_base,group_var){group_vec <- data_base %>% pull({{group_var}})test_var_list=data_base %>% select(where(is.double))all_test_res=test_var_list %>% imap(~{shapiro_res=data_base %>%group_by({{group_var}}) %>%summarise(test_result = list(shapiro.test(!!sym(.y)))) %>%mutate(results = map(test_result, tidy)) %>%unnest(results)levene_res=leveneTest(.x~group_vec,data = data_base)%>% tidy() %>%mutate(method="Levene's Test for Homogeneity")t_res_vareaual=t.test(.x~group_vec,data = data_base,var.equal=TRUE) %>% tidy()t_res_varuneaual=t.test(.x~group_vec,data = data_base,var.equal=FALSE) %>% tidy()wilcox_res=wilcox.test(.x~group_vec,data = data_base)%>% tidy()per_test_res=bind_rows(shapiro_res,levene_res,t_res_vareaual,t_res_varuneaual,wilcox_res)})%>%bind_rows(.id = "variable")
}

3、配对样本检验

#date_base为需要检验变量的数据,
#配对样本检验为连续型变量,这里不用去选择变量的数据类型,函数里面会去判断,
#但需要配对检验的变量在判断完数据类型后是相邻的,否则得到结果不是预期的
two_paired_test <- function(data_base){test_var_list=data_base %>% select(where(is.double)) %>% names()var_pair_former=head(test_var_list,-1)var_pair_latter=tail(test_var_list,-1)names(var_pair_former) <- var_pair_formernames(var_pair_latter) <- var_pair_latterall_test_res=map2(var_pair_former,var_pair_latter,~{x <- data_base[[.x]]y <- data_base[[.y]]z <- x-yshapiro_res=bind_rows(shapiro.test(x) %>% tidy() %>% mutate(variable_format=.x),shapiro.test(y) %>% tidy() %>% mutate(variable_format=.y),shapiro.test(z) %>% tidy() %>% mutate(variable_format=str_c('diff',.x,'-',.y)))t_paired_res=t.test(x,y,data = data_base,paired=TRUE) %>%tidy() %>%  mutate(variable_format=paste0(.x,'~',.y))wilcox_paired_res=wilcox.test(x, y,data = data_base,paired=TRUE)%>% tidy() %>% mutate(variable_format=paste0(.x,'~',.y))per_test_paired_res=bind_rows(shapiro_res,t_paired_res,wilcox_paired_res)})%>%bind_rows( .id= "variable")
}

4、分类样本检验

#date_base为需要检验变量的数据,group_var为分组变量
#分类样本检验为分类变量,这里不用去选择变量的数据类型,函数里面会去判断
multi_category_test <- function(data_base,group_var){test_var_list=data_base %>% select(where(is.character)) %>%select(-{{group_var}}) %>% names()names(test_var_list) <- test_var_listall_test_res=test_var_list %>% imap(~{var_distinct=data_base %>% select(.x) %>% distinct()var_distinct_mum=data_base %>% select(.x) %>%n_distinct()data_base_nomiss=if(str_detect(var_distinct,"missing")&var_distinct_mum==2){data_base %>%filter(is.na(!!sym(.x))==FALSE)}else{data_base %>%filter(!!sym(.x)!='missing') %>%filter(is.na(!!sym(.x))==FALSE)}chisq_base_table=data_base_nomiss %>%tabyl(!!sym(.x),{{group_var}})var_distinct_mum_deal=data_base_nomiss %>% select(.x) %>%n_distinct()warn_msg <- NA_character_chisq_not_correct_res=if(var_distinct_mum_deal==1){return(tibble(test_tag = NA_character_,method = NA_character_,p.value = NA_real_,statistic = NA_real_,warning_message = "Only one unique value"))}else{withCallingHandlers({test_res <- chisq.test(chisq_base_table, correct = F) %>% tidy()%>% remove_rownames()},warning = function(w) {warn_msg <<- conditionMessage(w)invokeRestart("muffleWarning")  # 阻止警告打印})}chisq_not_correct_res$warning_message <- warn_msgchisq_not_correct=chisq.test(chisq_base_table,correct=F)chisq_not_correct_observed=chisq_not_correct$observed %>%mutate(test_tag='observed')%>% select(-.x)print(chisq_not_correct_observed)chisq_not_correct_expected=chisq_not_correct$expected %>%mutate(test_tag='expected')%>% select(-.x)chisq_correct_res=chisq.test(chisq_base_table,correct=T) %>%tidy()%>% remove_rownames()fisher_test_res=fisher.test(chisq_base_table) %>% tidy()%>% remove_rownames()per_test_res=bind_rows(chisq_not_correct_res,chisq_not_correct_observed,chisq_not_correct_expected,chisq_correct_res,fisher_test_res)}) %>% bind_rows(.id = "variable") %>% remove_rownames()
}

http://www.dtcms.com/a/524170.html

相关文章:

  • 云图-地基云图
  • R语言基于selenium模拟浏览器抓取ASCO数据-连载NO.03
  • 多分组火山图绘制-Rscript_version1.0
  • 【开题答辩全过程】以基于Hadoop的电商数据分析系统为例,包含答辩的问题和答案
  • 申威服务器安装Java11(swjdk-11u-9.ky10.sw_64.rpm)详细操作步骤(附安装包)
  • UVa 1596 Bug Hunt
  • 企业数据仓库
  • 如何用 HTML 生成 PC 端软件
  • Apache Spark算法开发指导-特征转换Normalizer
  • 泗洪网站建设变化型网页网站有哪些
  • 渭南哪家公司可以做网站小程序开发制作价格
  • 广州城市建设规划局网站我想给网站网站做代理
  • 蓝蜂 MQTT 网关打通 120 台设备数据,助汽车零部件厂降本 40%​
  • C++异常详细介绍
  • AKKO 3180键盘插到联想笔记本无法使用问题
  • 打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第六天)
  • 从项目中学习CAN和CANFD报文结构(新手入门)
  • SpreadJS 赋能在线 Excel:协同编辑与精细化权限管控的技术实现
  • RabbitMQ 持久性详解
  • cms网站栏目介绍html免费模板下载
  • 太原网站建设培训班wordpress购买按钮插件
  • 北斗导航 | 接收机自主完好性监测(RAIM)在列车中的应用:原理、现状、挑战与案例
  • 前端Sass完全指南:从入门到精通
  • 网站建设地域名高校网站建设 网站群
  • 破局制造业数据孤岛,大腾智能PDM实现产研协同
  • 小程序文件在线显示(支持word,图片,视频等)
  • 记录自己写项目的第三天,springbot+redis+rabbitma高并发项目
  • Linux下查看系统启动时间、运行时间
  • Linux中子系统注册subsystem_register等函数的实现
  • MFC应用程序,工作线程学习记录