• t检验(连续变量)和卡方检验(分类变量)


    目录

    情形

    不同种类的萼片差异

    数据类型查看:

    差异分析:

    不同萼片的种类差异

    数据准备

    二分类卡方检验

    绘图


    情形

    :当有两列数据进行分析比较时,一列为连续变量,一列数据为分类变量。

    1. rm(list = ls())
    2. library(ggplot2)
    3. library(ggpubr)
    4. library(cowplot)
    5. data <- iris##鸢尾花数据集
    6. data1 <- data[,c(1,5)]
    7. data2 <- data1[data1$Species=="setosa"|data1$Species=="versicolor",]
    8. ##提取鸢尾花数据集的部分数据进行分析

    如下整理鸢尾花部分数据:“Sepal.Length”是连续变量,“Species”只选择了两种数据。

    分析两列数据:2种情况

    ①比较不同种类的萼片长度是否存在差异。

    ②比较不同萼片长度的种类是否存在差异。

    不同种类的萼片差异

    数据类型查看:

    数据分布检测:第六讲 R-数据正态分布检验 - 知乎 (zhihu.com)

    1. #①比较不同种类的萼片长度是否存在差异。
    2. #分析方法选择
    3. shapiro.test(data2$Sepal.Length)
    4. #W = 0.96964, p-value = 0.02076 不符合正太分布
    5. #密度图
    6. ggdensity(data2$Sepal.Length,
    7. main = "Density plot of sepal length",
    8. xlab = "sepal length")
    9. #正态性测试对样本量敏感。小样本最常通过正态性测试。
    10. #因此,重要的是将外观检查和显着性测试相结合以做出正确的决定
    11. #综合分析也可以采用t检验

    数据分布情况

    差异分析:
    1. #pdf("plot.pdf",width = 4,height = 4)##保存图片
    2. p <- ggplot(na.omit(data2),
    3. aes(x = Species, y = Sepal.Length, fill = Species)) +
    4. geom_boxplot(aes(col = Species)) +
    5. scale_fill_manual(values = alpha(c("#3C6FAC","grey50"),0.8)) +
    6. scale_color_manual(values = c("#3C6FAC","grey50")) +
    7. xlab("Species") + ##X轴名称
    8. ylab("") +
    9. theme_bw() +
    10. #主题设置
    11. theme(legend.position = "top",#添加图例
    12. #legend.title = "Species",
    13. #legend.key.size = unit(0.5, "cm"),#缩小图例大小
    14. axis.text.x = element_blank(),
    15. axis.text.y = element_blank(),
    16. axis.ticks = element_blank(),
    17. panel.border = element_blank(),
    18. panel.grid = element_blank(),
    19. panel.background = element_blank(),
    20. axis.title = element_text(size = 10),
    21. axis.text = element_text(size = 10)) +
    22. stat_compare_means(method = "t.test", #wilcox.test(检验方法选择)
    23. label = "p.signif",#展示星标**
    24. label.y = max(na.omit(data2$Sepal.Length)) * 0.95,
    25. label.x = 1.5, size = 8)
    26. p

    不同萼片的种类差异

    将萼片长度分为二分类变量(如:长短),然后分析不同萼片组的种类是否存在差异

    数据准备
    1. ##数据准备
    2. rm(list = ls())
    3. library(ggplot2)
    4. library(ggpubr)
    5. library(cowplot)
    6. data <- iris##鸢尾花数据集
    7. data1 <- data[,c(1,5)]
    8. data2 <- data1[data1$Species=="setosa"|data1$Species=="versicolor",]
    9. #②不同萼片长度的种类是否存在差异
    10. data3 <- data2[order(data2$Sepal.Length),]
    11. #计算分割点(进行二分类设置)
    12. point <- round(nrow(data3) / 2)##几分之几,自己设置
    13. data3$SepalLength[1:point] <-"Low"
    14. data3$SepalLength[point:nrow(data3)] <-"High"
    15. #详情
    16. table(data3$Species,data3$SepalLength)
    17. High Low
    18. setosa 6 44
    19. versicolor 45 5
    20. virginica 0 0

    二分类卡方检验

    R语言卡方检验最全总结_医学和生信笔记的博客-CSDN博客

    R语言—卡方检验 - 知乎 (zhihu.com)

    R=C=2时四格表卡方检验

    当 n(样本量)≥40 且所有的T(期望频数)≥5时,用χ2检验的基本公式或四格表资料之χ2检验的专用公式;当P ≈ α时,改用四格表资料的 Fisher 确切概率法;
    当 n≥40 但有 1≤T<5 时,用四格表资料χ2检验的校正公式,或改用四格表资料的 Fisher 确切概率法。
    当 n<40,或 T<1时,用四格表资料的 Fisher 确切概率法。

    1. #生成二维列联表
    2. mytable <- table(data3$Species,data3$SepalLength)
    3. mytable1 <-mytable[c(1,2),]##需要去除列联表中并没有的第三列(否则不能计算)
    4. chisq.test(mytable1,correct = F) # 和SPSS一样
    5. #结果:X-squared = 64, df = 1, p-value = 1.244e-15
    6. #data3$Species,data3$SepalLength顺序不影响结果
    绘图

    比例计算

    1. ##绘制堆砌图并展示结果
    2. #表格汇总结果(为了展示比例)
    3. result <- data3 %>%
    4. group_by(Species, SepalLength) %>%
    5. summarize(count = n()) %>%
    6. mutate(proportion = count / sum(count))
    7. print(result)# 输出结果
    8. result <- as.data.frame(result)
    9. result$proportion <- round(result$proportion*100,1)#保留1位小数
    10. dat01 <- result[c(3,4),]#提取需要展示的数值的行(需要匹配X轴)

    完整图

    1. #pdf("plot.pdf",width = 4,height = 4)##保存图片
    2. ggplot(data3,aes(x=SepalLength,#X轴
    3. fill=Species))+
    4. geom_bar(position = "fill")+
    5. scale_y_continuous(expand = expansion(mult=c(0.01,0.1)),##展示百分比
    6. labels = scales::percent_format())+
    7. scale_fill_manual(values = c("setosa"="#98d09d","versicolor"="#dadada"),##根据需求修改配色
    8. limits=c("setosa","versicolor"))+
    9. theme_set(theme_bw())+
    10. theme(panel.grid = element_blank())+#不展示网格线
    11. geom_text(data=dat01,##展示比例
    12. aes(x=SepalLength,y=0.05,#设置Y轴展示的位置
    13. label=paste0(dat01$proportion)),##展示的是比例
    14. inherit.aes = FALSE,
    15. vjust=-0.2)+
    16. geom_text(aes(x = 1.5, y = 1.1,#调整文本注释位置
    17. label = "p-value 1.244e-15"))+#添加P(前面计算)
    18. labs(title = "AAABBB",#标题
    19. x="SepalLength",
    20. y="Species")
    21. dev.off()

    更多绘图细节

    ggplot2作图最全教程(上) - 知乎 (zhihu.com)

    ggplot2作图最全教程(下) - 知乎 (zhihu.com)

  • 相关阅读:
    学习Cesium.js的必须要了解的工具CesiumLab
    【Java设计模式 SOLID设计原则】三 LSP里式替换原则
    C++Prime Plus(6)
    C#上位机调试经验
    如何进行资源同步(阁瑞钛伦特软件-九耶实训)
    第19章_瑞萨MCU零基础入门系列教程之RTC
    灵途科技荣获省级“专精特新”企业认定!
    uniapp 原生sqlite本地数据库管理 Ba-Sqlite
    自定义监控组件的配置
    IceRPC之多路复用传输>快乐的RPC
  • 原文地址:https://blog.csdn.net/hx2024/article/details/134548265