首页 > 其他分享 >[个人学习笔记]卫生统计学R语言代码总结

[个人学习笔记]卫生统计学R语言代码总结

时间:2022-12-06 14:23:37浏览次数:43  
标签:函数 data 检验 方差分析 统计学 笔记 test 卫生 mean

卫生统计学R语言代码总结


目录

  • 前言
  • 不同分布相关函数
  • 统计描述
    • 数值变量
      • 集中位置
      • 离散程度
      • 正态性检验
    • 分类变量
  • t检验
  • 方差分析
    • 假设检验
    • 两两比较
  • 秩和检验
    • 假设检验
    • 两两比较
  • 卡方检验
  • 回归分析

前言

这学期上了卫统,学R语言,姑且按自己的理解整理一下所有章节的R语言代码吧。(毕竟要考试了)
个人觉得最重要的部分是后面的假设检验和回归分析的部分,前面的东西,嘶,随便弄弄吧,反正应该不会没有自动补全吧...
整理的或许不是很全,有需要之后再补充一些吧。姑且先这样
各个函数的参数我只写出了比较常用的,其他的参数可以到R里面使用“?+函数名”来查看。


不同分布相关函数

本学期所有学到的分布有:正态分布、伯努利分布、二项分布、泊松分布、卡方分布、t分布、F分布等。下面以正态分布为例说明r、d、p、q的区别。

# r开头,返回生成n个随机数
rnorm(n, mean = 0, sd = 1)
# d开头,返回x处的概率密度
dnorm(x, mean = 0, sd = 1)
# p开头,返回q处的概率分布,即小于q的概率密度积分
pnorm(q, mean = 0, sd = 1)
# q开头,返回概率为p时对应的q,即上一个函数的反函数
qnorm(p, mean = 0, sd = 1)

上面是正态分布相关的函数,其它分布的函数名首字母含义意思差不多。下面以p开头演示不同分布的区别。

# 正态分布 mean 均值 sd 标准差
pnorm(q, mean = 0, sd = 1)
# 二项分布 size 实验次数 prob 成功概率
# 伯努利分布只需size = 1即可
pbinom(q, size, prob)
# 泊松分布 lamda λ值
ppois(q, lambda)
# 卡方分布 df 自由度
pchisq(q, df)
# t分布 df 自由度
pt(q, df)
# F分布 df1 df2 自由度
pf(q, df1, df2)

统计描述

数值变量

主要包含:集中位置,离散程度,正态性检验。

集中位置

# 以下数据均由data代替
mean(data) # 均数
exp(mean(log(data))) # 几何均数 R没有直接求几何均数的方法
median(data) # 中位数
quantile(data, prob) # 四分位数 prob向量为分位点
# 众数 R中没有直接求众数的方法
temp <- table(data) # table函数可以统计各个数值出现频次
temp[which.max(temp)] # which.max函数返回最大值的位置

离散程度

max(data) - min(data) # 极差
# 四分位数间距
quantile <- quantile(data, prob)
quantile[4] - quantile[2]

var(data) # 方差
sd(data) # 标准差
raster::cv(data) # 变异系数 R原版没有该函数
# 这种写法表示不用library就能使用raster包中的某个函数

正态性检验

boxplot(data) # 箱式图

hist(data, freq) # 直方图 freq = F则表示概率密度 否则为频数
# 在上图中添加数据的概率密度图线
# lines函数用于在图像上添加曲线 主要用法百度吧
lines(density(data)) # density函数可估计数据的概率密度
# 绘制正态曲线
xfit <- seq(min(data), max(data), by) # by为间隔
yfit <- dnorm(xfit, mean(data), sd(data))
lines(xfit, yfit)

# pp图 有点复杂 感觉不重要... 不过可以看一下plot函数的一些参数
plot((rank(data) - 0.5) / length(data),
     pnorm(data, mean(data), sd(data)),
     xlab = "实际累计概率", ylab = "期望累计概率", main = "P-P图")
lines(x = c(0, 100), y = c(0, 100))
# qq图
qqnorm(data)
qqline(data)
# 偏度和峰度 两个函数都在moments包里面 看起来不重要
skewness(data)
kurtosis(data)
# Shapiro-Wilk检验 用于小样本
shapiro.test(data)
# Kolmogorov-Smirnov检验 用于大样本
# 这我抄的 不想看了 谁爱看谁看
ks.test(data + runif(length(data$value), -0.05, 0.05),
        "pnorm", value_Mean, value_Sd)

分类变量

看了一下感觉没什么可能考的东西...干脆摸了


t检验

接下来的四种假设检验多半才是重点吧,索性不算多,有自动补全代码的话几乎就不用记了。
t检验一共三种嘛:单样本t检验,配对t检验,成组t检验。

# 单样本 mu是你要检验的总体均数 懂得都懂
t.test(data, mu)
# 配对
t.test(data1, data2, paird = T)
# 成组 g是你的分组变量 var.equal是方差齐性
t.test(data~g, var.equal)
# 检验方差齐性 毕竟t检验只有两组 直接用这个就行
var.test(data~g)

方差分析

方差分析也就两种嘛:完全随机设计方差分析、随机区组设计方差分析。主要是还有一个Levene方差齐性检验和两两比较。

假设检验

# 完全随机设计方差分析 有两种写法 g为分组变量
anova(lm(data~g))
summary(aov(data~g))

# 随机区组设计方差分析 treat为处理因素分组 block为区组因素分组
anova(lm(data~treat+block))

# Levene方差齐性检验
# 这玩意其实就是先算一个z统计量 再对他方差分析 就完事了
m <- aggregate(data, by = list(g), FUN = 'mean')$x
m <- rep(m, c(...)) # 这里这个向量写每组个数
z <- abs(data - m)
summary(aov(z~g))

两两比较

两两比较主要有三种方法:LSD法、Bonferroni法、SNK法。其中Bonferroni法应该只是一种矫正的思想吧。

# LSD
pairwise.t.test(data, g, p.adjust.method = 'none')

# Bonferroni 就是改一个参数而已
pairwise.t.test(data, g, p.adjust.method = 'bonf')

# SNK
snk <- SNK.test(aov(data~g), "g", group = FALSE)
snk$comparison
# 哦对这函数在agricolae包里面来着

秩和检验

非参数检验这边东西就麻烦起来了,秩和检验四种:Wilcoxon符号秩和、Wilcoxon秩和、Kruskal-Wallis检验(H检验)、Friedman检验(M检验)。

假设检验

# Wilcoxon符号秩和检验
# alternative是双侧检验 你也可以选择greater或less的单侧检验
# correct是是否进行连续性矫正 默认是T
wilcox.test(data1, data2, paired = T, alternative = "two.sided", correct = F)

# Wilcoxon秩和检验
wilcox.test(data~g, correct = F)

# Kruskal-Wallis检验
kruskal.test(data~g)

# Friedman检验
# treat 处理因素分组 block 区组因素分组
friedman.test(data ~ treat|block)

# 值得一提的是所有的函数都不会输出你需要的秩、秩和
# 我们可以使用rank函数返回秩
rank(data) # 返回data中每个数据的秩次
sum(rank(data)) # 秩和

两两比较

实际上秩和检验的两两比较,一般Nemenyi就足够了,H检验的话Bonf也行。

# 下面是H检验的两两比较 这一大段都是我复制的 老师的代码已经足够优秀了
## 法1-pairwise.wilcox.test(Bonferroni)
with(data=data3, 
     pairwise.wilcox.test(
       x=time, g=group, p.adjust.method = "bonferroni"))
# 法2~4均基于PMCMRplus包实现
install.packages("PMCMRplus")
library(PMCMRplus)
## 法2-Nemenyi's all-pairs comparison test
res <- kwAllPairsNemenyiTest(time~group, data=data3, dist ="Tukey")
summary(res)
## 在法2-Nemenyi中,Only for method = "Chisq" a tie correction is employed.
res <- kwAllPairsNemenyiTest(time~group, data=data3, dist ="Chisquare")
summary(res)
## 法3-Dunn's all-pairs comparison test
res <- kwAllPairsDunnTest(time~group, data=data3, p.adjust.method = "bonferroni")
summary(res)
## 法4-single-step means Tukey's p-adjustment
res <- kwAllPairsConoverTest(time~group, data=data3, p.adjust.method = "single-step")
summary(res)
# 其实法二非常足够用了

# 下面是Friedman检验的多重比较 同样是直接复制抄过来的
# 多重比较-Nemenyi法
res <- frdAllPairsNemenyiTest(score~group|block, data=data4)
summary(res)

卡方检验

卡方检验三种:独立四格表、配对四格表、行x列表

# 独立四格表
chisq.test(data)
fisher.test(data) # fisher精确概率

# 配对四格表 correct参数表示是否连续性矫正 默认是T
mcnemar.test(data, correct = T)
# 这俩是确切概率法 需要exact2x2和exactci包
exact2x2::exact2x2(data, paired = TRUE)
mcnemar.exact(data)

# 行x列表
chisq.test(data)

回归分析

你先别急,我还没复习

标签:函数,data,检验,方差分析,统计学,笔记,test,卫生,mean
From: https://www.cnblogs.com/BlueNine9/p/16954957.html

相关文章

  • krping学习笔记 (1)
    krpingKriping是一个内核态的rdmaping-pong程序,其使用rdma读写的方式实现了数据在server-client间的ping-pong式传递.如下图所示,在开始数据传输前,client会先将......
  • 刷题笔记——2997.梯形面积
    题目2997.梯形面积代码h=(2*150)/15s=((15+25)*h)/2print('%.2f'%s)笔记使用占位符方法保留小数%g,科学计数法输出小数,会舍弃无效的部分print(......
  • HTML-学习笔记02
    HTML13、样式器+标签选择器内部样式表<html> <head> <metacharset="utf-8"> <title></title> <!--内部样式表--> <style> /*标签选择器*/ h1{ ......
  • ES6笔记 - 函数参数扩展 与 箭头函数
    函数的扩展目录函数的扩展1.函数的默认值1.1解构赋值默认值与函数默认值1.2参数默认值的位置2.rest参数3.箭头函数3.1基础用法3.2箭头函数中的this3.3用途1.函......
  • C语言第二课学习笔记--运算符,流程控制和函数
    <7>运算符1)分类:一些基本的运算符分类有:算术、关系、逻辑、赋值算术运算符有:+,-,*,/,%;    对于/被除数和除数都是int则结果是int,有一个是float结果就是float;对于%,被......
  • Kubernetes学习笔记(四十二):CKA已通过2022.12.04
    考试版本:1.25.2注意点:使用PSI内远程浏览器,可以多开tab,但不能导入书签,需要自己搜索,所以请熟悉完整命令和yaml格式考前请仔细阅读考试手册(预约考试页面有链接),特别是熟悉......
  • 刷题笔记——1267.A+B Problem
    题目1267.A+BProblem代码whileTrue: try: a,b=map(int,input().strip().split()) print(a+b) except: break笔记map()函数语法map(function,iterable,.......
  • k8s笔记9(集群外beat->kafka集群:OK)
    1、helmupgrade后kibana采集不到数据,需要删除后重新INSTALL然后测试。这里打开了externalAccess参数。#helmupgradekafka-nlogging.#helm-nloggingdeletekafka......
  • 重构:改善既有代码的设计 第九章 读书笔记
    第9章重新组织数据9.1拆分变量(SplitVariable)动机:每个变量只承担一个责任。9.2字段改名(RenameField)9.3以查询取代派生变量(ReplaceDeri......
  • opencv笔记(一)
    opencv笔记(一)目录opencv笔记(一)环境搭建基础用法常用对象色彩空间Numpy基础创建矩阵矩阵取值与赋值ROIMat结构拷贝属性访问通道的分离与合并图形绘制基本图像运算与处理加......