首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在一个函数中返回多个对象-一个整洁的Chisq.Test Tibble和Ggplot

在统计学中,卡方检验(Chi-square test)是一种用于比较观察值与期望值之间的差异的方法。它适用于分类变量的分析,用于确定观察到的频数与期望频数之间是否存在显著差异。

Chisq.Test Tibble是一个整洁的数据框,用于存储卡方检验的结果。它通常包含以下列:

  1. 变量名(Variable):表示进行卡方检验的变量名称。
  2. 卡方统计量(Chi_square):表示观察频数与期望频数之间的差异程度。
  3. 自由度(Degrees_of_freedom):表示卡方检验中自由变动的独立信息的数量。
  4. P值(P_value):表示观察到的差异是否显著,即拒绝原假设的概率。

Ggplot是一个用于绘制数据可视化图形的R包。它提供了一种简洁而强大的语法,可以创建各种类型的图形,包括散点图、柱状图、线图等。使用Ggplot可以将卡方检验的结果可视化,以更直观地展示观察值与期望值之间的差异。

以下是一个示例函数,用于在R语言中返回一个整洁的Chisq.Test Tibble和Ggplot:

代码语言:txt
复制
library(ggplot2)
library(tidyr)
library(dplyr)

perform_chisq_test <- function(data, variable) {
  # 进行卡方检验
  chisq_result <- chisq.test(data[[variable]])
  
  # 构建整洁的Chisq.Test Tibble
  chisq_tibble <- tibble(
    Variable = variable,
    Chi_square = chisq_result$statistic,
    Degrees_of_freedom = chisq_result$parameter,
    P_value = chisq_result$p.value
  )
  
  # 绘制Ggplot图形
  ggplot_data <- data %>%
    count({{ variable }}) %>%
    mutate(Expected = chisq_result$expected) %>%
    pivot_longer(cols = c(n, Expected), names_to = "Type", values_to = "Value")
  
  ggplot_plot <- ggplot(ggplot_data, aes(x = Type, y = Value, fill = Type)) +
    geom_bar(stat = "identity", position = "dodge") +
    labs(title = "Chisq Test Result", x = "Variable", y = "Frequency") +
    theme_minimal()
  
  # 返回结果
  return(list(chisq_tibble, ggplot_plot))
}

使用该函数,可以传入数据和要进行卡方检验的变量,然后返回一个包含Chisq.Test Tibble和Ggplot的列表。你可以根据需要进一步处理和展示这些结果。

这是一个示例的调用方式:

代码语言:txt
复制
# 创建示例数据
data <- data.frame(
  Variable = c("A", "B", "C", "A", "B", "C"),
  Category = c("X", "X", "Y", "Y", "X", "Y")
)

# 调用函数进行卡方检验并获取结果
result <- perform_chisq_test(data, Variable)

# 访问Chisq.Test Tibble
chisq_tibble <- result[[1]]
print(chisq_tibble)

# 显示Ggplot图形
ggplot_plot <- result[[2]]
print(ggplot_plot)

这样,你就可以得到一个整洁的Chisq.Test Tibble和相应的Ggplot图形,用于分析和展示卡方检验的结果。请注意,这只是一个示例函数,你可以根据实际需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

生信代码:数据处理( tidyverse包)

大家在学习R语言时候,大多参考《R语言实战》这本书,但这本书年代过于久远(中文第二版是2016年),主要着力点也是R base上,R语言可视化ggplot2包也只是简要介绍,而对于tidyverse...Rstudio中加载tidyverse包,可以看到该包下有8个子包,著名ggplot2包即是其中一个子集,我们先着重讲一下数据处理有关包——dplyr包。...1 mutate() mutate()与基础函数transform()相似,都可以添加新一列,但是允许引用刚刚创建列: mydata <- tibble(x1=c(2,2,6,4),...) sd_english=sd(score) ) ##summarize返回一个数据框,如果后续要使用到,需要保存下来 5 arrange() R base...包涉及到排序包括 sort(),rank(),order(),而在dplyr包与排序相关是arrange()包,默认是从高到低进行排序,如果变换排序顺序则可以使用-(变量)或者desc(变量)。

2K10

R语言缺失值探索强大R包:naniar

简介 缺失值在数据无处不在,需要在分析初始阶段仔细探索处理。本次示例,会详细介绍naniar包探索缺失值方法理念,它ggplot2tidy系列使用方法非常相似,上手并不困难。...: gg_miss_upset(airquality) 一个更加复杂数据: gg_miss_upset(riskfactors) 使用NA替换缺失值 一个数据中有很多缺失值用NA来表示可能会更加方便...主要有: replace_with_na replace_with_na_all replace_with_na_at replace_with_na_if dplyrreplace_na()用法完全一样...整洁缺失数据:shadow matrix as_shadow()函数直接以数据框形式返回是否是缺失值,输入什么样子输出就是什么样子!...函数,还可以group_by连用探索缺失值!

1.3K40

《高效R语言编程》6--高效数据木匠

使用dplyr高效处理数据 这个包名意思是数据框钳,相比基础R优点是运行更快、与整洁数据和数据库配合好。函数部分灵感来自SQL。 ?...与基本R类似函数不同,变量无需使用 $ 操作符就可直接使用,设计与magrittr包%>%管道操作符一起使用,以允许每个数据阶段写成新一行。其是一个大型包,本身可以看成一门语言。...summarize是一个多面手,用于返回自定义范围汇总统计值。...非标准计算 代码没有引号包裹原始名字,这种方式叫做非标准计算(NSE),高效交互使用函数,减少键盘输入,允许Rstudio自动完成。还是函数多个_。...这里建议不要把数据库密码API密钥等放在命令,而要放大.Renviron文件。dbConnect()函数连接数据库,dbSendQuery()查询,dbFetch()加载到R

1.9K20

「R」ggplot2R包开发使用

尤其是R包编程改变了从ggplot2引用函数方式,以及aes()vars()中使用ggplot2非标准求值方式。...多个函数写入NAMESPACE文件。...常规任务最佳实践 使用ggplot2可视化一个对象 ggplot2通常用于可视化对象(例如,一个plot()-风格函数)。...然而,提供一个 plot()用于一个对象可视化总结帮助用户理解该对象是有帮助。为了满足你所有用户,我们建议写一个函数将这个对象转换为一个数据框(如果更加复杂,可以是包含数据框列表)。...这与ggplot()不同,除非交互使用或者显式地调用print(),否则是不是展示。因为这个原因,ggplot2定义了一个自己泛型函数autoplot(),调用它会返回一个ggplot()。

6.6K30

数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据模型诊断可视化

美国其他发达国家,一半死亡是由于心血管疾病(点击文末“阅读原文”获取完整代码数据)。 简介 心血管疾病早期预后可以帮助决定改变高危患者生活方式,从而减少并发症。...它包括超过 4,000 条记录 15 个属性。 变量 每个属性都是一个潜在风险因素。有人口、行为医疗风险因素。...(可以认为是连续,因为一个人可以拥有任意数量香烟,甚至半支香烟。)...糖尿病:患者是否患有糖尿病(标量) • Tot Chol:总胆固醇水平(连续) • Sys BP:收缩压(连续) • Dia BP:舒张压(连续) • BMI:体重指数(连续) • 心率:心率(连续 - 医学研究...aes,totChol,fill=TenYerCHD)) cometddata %>% fitr %>% ggplot 由图像知,glucosehearRate变量有不显着风险 table1

20810

逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据模型诊断可视化

美国其他发达国家,一半死亡是由于心血管疾病。心血管疾病早期预后可以帮助决定改变高危患者生活方式,从而减少并发症。本研究旨在查明心脏病最相关/风险因素,并使用机器学习预测总体风险。...变量 每个属性都是一个潜在风险因素。有人口、行为医疗风险因素。...(可以认为是连续,因为一个人可以拥有任意数量香烟,甚至半支香烟。)...糖尿病:患者是否患有糖尿病(标量) • Tot Chol:总胆固醇水平(连续) • Sys BP:收缩压(连续) • Dia BP:舒张压(连续) • BMI:体重指数(连续) • 心率:心率(连续 - 医学研究...aes,totChol,fill=TenYerCHD)) cometddata %>% fitr %>% ggplot 由图像知,glucosehearRate变量有不显着风险 table1

2.2K30

R: ROCR包用于ROC分析

ROCR包与ROC 一个用于分析ROC数据是一组连续变量一组二分类变量,连续变量是预测变量,分类变量是响应变量。 ROCR包,这两组数据被称为“predictions“”labels“。...,结果返回一个S4对象,y.values就是AUC perf_auc <- performance(pred, "auc") ##S4对象,其内包括6个数据## slotNames(perf_auc)...S4对象,里面是返回x,y名字及数值,如果调用performance时只传入一个参数,如auc,auc就是这里面的y。...也可以使用ggplot2进行绘制: tibble(x=perf_roc@x.values[[1]], y=perf_roc@y.values[[1]]) %>% ggplot(aes(x=x, y=y...# ggplot2绘图有较大自由性,可以修改部分格式,如下 tibble(x=perf_roc@x.values[[1]], y=perf_roc@y.values[[1]]) %>% ggplot(aes

4.6K51

R海拾遗_naniar

,就显得有点费力了,visdat包,有两个函数vis_datvis_miss用于可视化缺失查看 vis_dat library(visdat) vis_dat(airquality) ?...vis_miss不仅提供缺失情况,还提供缺失数量百分比,同样一个函数有同样缺陷 ##缺失变量关系 查看airqualitySolar.ROzone缺失 通过ggplot对两个变量绘制散点图...NA ## # ... with 143 more rows bind_shadownabular可以将这个矩阵绑定在数据框,称为nabular结构 # 这两种方式生成内容是一样 #...# 返回一个三列tibble,分别为缺失行数、确实个数确实比例 miss_case_summary(airquality) ## # A tibble: 153 x 3 ## case...结束语 naniar包是一个较新包,记得去年我还是自己编码进行缺失值分析,有些函数还是比较有用,比如对变量个案分别进行缺失值分析,这个包还在不断完善,未来会变得越来越好。

90220

数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据模型诊断可视化|附代码数据

美国其他发达国家,一半死亡是由于心血管疾病 简介 心血管疾病早期预后可以帮助决定改变高危患者生活方式,从而减少并发症。本研究旨在查明心脏病最相关/风险因素,并使用机器学习预测总体风险。...它包括超过 4,000 条记录 15 个属性。 变量 每个属性都是一个潜在风险因素。有人口、行为医疗风险因素。...(可以认为是连续,因为一个人可以拥有任意数量香烟,甚至半支香烟。)...糖尿病:患者是否患有糖尿病(标量) • Tot Chol:总胆固醇水平(连续) • Sys BP:收缩压(连续) • Dia BP:舒张压(连续) • BMI:体重指数(连续) • 心率:心率(连续 - 医学研究...=table chisq.test table1 table2=table chisq.test table3=table chisq.test chisq.test ggpairs

63830

「R」用purrr实现迭代

因为R是一门函数式编程语言,我们可以先将for循环包装在函数,然后再调用函数,而不是使用for循环,因此for循环R不像在其他编程语言中那么重要。...)作为输入,并对向量每个元素应用一个函数,然后返回输入向量同样长度一个新向量。...safely()是一个修饰函数(副词),它接收一个函数(动词),对其进行修改并返回修改后函数。...这样,修改后函数就不会抛出错误,相反,它总是返回由下面两个元素组成列表: result - 原始结果。如果出现错误,那么它就是NULL error - 错误对象。...,但有时候我们需要多个相关输入同步迭代,这就是map2()pmap()函数用武之地。

4.8K20

「R」数据操作(七):dplyr 操作变量与汇总

使用mutate()添加新变量 除了选择已存在列,另一个常见操作是添加新列。这就是mutate()函数工作了。 mutate()函数通常将新增变量放在数据集最后面。...这些函数一个关键属性就是向量化:它必须使用一组向量值作为输入,然后返回相同长度数值作为输出。我们没有办法将所有的函数都列举出来,这里选择一些被频繁使用函数。...我们进一步学习之前,我们需要了解一个非常强大思想:管道。 使用管道整合多个操作 想象你要探索每个位置距离和平均航班延迟关系。...使用管道进行工作是属于tidyverse一个重要标准。唯一例外是ggplot2,它在管道开发之前就已经写好了。不幸是,ggplot2一个版本ggvis会使用管道,但还没有发布。...幸运是,所有的聚集函数都有na.rm参数,它可以计算之前移除缺失值。

2.5K20

R入门?从Tidyverse学起!

数据整理 tibble格式 R对多变量数据标准保存形式是 dataframe,而tibble是dataframe进化版,它有如下优点: 1....数据操作速度会更快 如下图,直接查看tibble格式数据,可以一目了然看清数据大小每列格式 ? 有两种方式来创建tibble格式数据 1. 直接创建 ? 2....管道函数 %>% tidyverse,管道符号是数据整理主力,它功能Linux上管道符“|”类似,可以把许多功能连在一起,而且简洁好看,比起R基本代码更加容易阅读!...这些函数允许长数据格式(long data)宽数据格式(wide data)之间进行转换(功能类似于reshape包,但是比reshape更好用,并且可以用于管道%>%连接)。...统计:broom broom是一个用于数学建模包,以回归分析为例,R各种回归分析往往不会返回一个整齐data frame结果,而broom 则帮助我们直接将统计结果转化为data frame格式直接将统计结果转化为

2.5K30

dpois函数_frequency函数

幸运是,所有聚合函数都有一个na.rm参数,该参数计算之前删除缺失值: flights %>% group_by(year, month, day) %>% summarise(mean...查看此类图时,过滤掉具有最少观察数组通常很有用,因此可以看到更多模式,而不是最小组极端变化。这就是下面的代码所做,并向您展示了将ggplot2集成到dplyr流便捷模式。...过滤提供所有变量,每个观察一个单独: not_cancelled %>% group_by(year, month, day) %>% mutate(r = min_rank(desc...当与数字函数一起使用时,TRUE转换为1,FALSE转换为0。这使得sum()mean()非常有用:sum(x)给出xTRUE数,而mean(x)给出比例。...当您按多个变量分组时,每个概括都会剥离一个分组级别。

1.8K10

基于 mlr 包 K 最近邻算法介绍与实践(上)

KNN 算法基本要素 KNN 算法,所选择邻近实例都是已经正确分类对象,该算法只依赖于最邻近一个或者几个实例类别来决定待分样本所属类别,分类器不需要使用训练集进行训练,训练时间复杂度为 0,... mlr 定义任务 因为要构建一个分类模型,故使用 makeClassifTask() 函数来定义一个分类任务,当构建回归聚类模型时,将分别使用 makeRegrTask() makeClusterTask...makeLearner() 函数一个参数是用来训练模型算法,本例,是使用 KNN 算法,因此指定参数为 "classif.knn"。... mlr 训练模型 这个过程通过 train() 函数实现,它将 learner 作为第一个参数,而任务作为第二个参数。...该函数将模型预测类与真实类进行比较,并返回预测值与真实值之间匹配程度性能指标。

2.1K21

使用 ncov 包获取并分析疫情数据

昨天推文里,我介绍了开发一个最简单 R 包工作流程,相信不少同学已经对 R 包开发流程有所了解了,今天我们就用这个 ncov 包获取疫情数据然后分析分析吧!...ncov 对象,初始化过程中所有的数据都会准备好存储 df : df <- ncov$new() # 可以查看 df 所属类 class(df) #> [1] "ncov" "R6" 可以看到...df 是一个 ncov 类,而这个类是基于 R6 类进行封装,下面再看下这个对象存储数据,首先是一些字符串: # 当前时间: df$times #> [1] "截至2月8日12时08分"# 确诊人数...df$confirm #> [1] "34598"# 疑似人数 df$suspect #> [1] "27657"# 治愈人数 df$cure #> [1] "2052" plot() 函数 ncov...类里封装了一个 plot 函数,这个函数封装了 hchinamap 包 hchinamap 函数,因此可以直接使用 plot() 作用 ncov 对象进行绘图: # 确诊人数省份分布: plot(

1.3K20

R包基础实操—tidyverse包

tidyverse包,分享整洁数据基础设计理念、语法和数据结构。...核心软件包是ggplot2、dplyr、tidyr、readr、purrr、tibble、stringrforcats,它们提供了建模、转换可视化数据功能。...其中,readr包用于读取数据,tidyr包用于整理数据,dplyr包用于数据转换,ggplot2包用于数据可视化,purrr包用于函数式编程。...1 readr包:快速读写 1-1 readr包提供了几个新函数,能够更快读取文件 readr包主要函数有: read_csv,read_tsv,read_table,read_delim, write_csv...map_dfr(.x, .f): 返回数据框列表,再 bind_rows 按行合并为一个数据框 map_dfc(.x, .f): 返回数据框列表,再 bind_cols 按列合并为一个数据框 library

3.3K30

新书《R语言编程—基于tidyverse》信息汇总

同样是讲 R 基本语法,本书不同之处在于,用tidyverse更一致、更好用相应包加以代替:用tibble代替data.frame、用forcats包处理因子,用stringr讲字符串 (及正则表达式...第三章:可视化与建模技术 可视化只介绍最流行可视化包ggplot2,先从 ggplot2图层化绘图语法开始,依次介绍ggplot2九大部件:数据、映射、几何对象、标度、统计变换、坐标系、分面、主题...建模技术包括三个内容: (1) 用broom包提取统计模型结果为整洁数据框,方便后续访问使用; (2) modelr包中一些有用辅助建模函数; (3) 批量建模技术,比如要对全世界 170 多个国家数据分别建立模型...附录 部分是正文内容补充扩展,将分别介绍R6类面向对象编程、实现ExcelVLOOKUP与透视表、R网络爬虫、R高性能计算、R最新机器学习框架:mlr3verse, tidymodels....大家可以根据自己需求选择阅读侧重点,不过我还是希望您能够按照顺序完整地阅读,这样才能让您彻底地更新一遍您 R 知识,避免R base与tidyverse 混着用,因为二者写 R 代码上不是一个思维

2.3K21

R语言学习--R for Data Science - 2.1 ggplot2

mpg data frame,这个数据框是ggplot2包自带,数据框是R一种数据结构,其每一列是一个变量,每一行是一个观测。...这个数据框具体信息可以通过console输入?mpg查看,R函数自带数据包都可以通过在其名字前加?来查看帮助信息,注意?也必须是英文字符。...在上面这张图代码,首先使用了ggplot()这个函数,它功能是创建一个空白坐标系,其xy轴可以通过后续图层添加,它一个参数是作图用数据,用ggplot(data = mpg)就会生成如下图片...参数,需要使用函数aes()来传递参数给mapping,aes()需指定xy参数代表了数据哪个变量,如mapping = aes(x = displ, y = hwy),geom函数会继承ggplot...函数传入数据,并在这个数据集中寻找指定xy变量。

46420
领券