本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。

医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。

文章目录

  • 前言
  • 重复测量数据两因素两水平的方差分析
  • 重复测量数据两因素多水平的分析

前言

这是R语言和医学统计学的第6篇内容。

主要是用R语言复现课本中的例子。我使用的课本是孙振球主编的《医学统计学》第4版,封面如下:

重复测量数据两因素两水平的方差分析

使用课本例12-1的数据,直接读取:

df12_1 <- foreign::read.spss("E:/各科资料/医学统计学/研究生课程/析因设计重复测量/9重复测量18-9研/12-1.sav", to.data.frame = T)str(df12_1)
## 'data.frame':  20 obs. of  5 variables:
##  $ n    : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ x1   : num  130 124 136 128 122 118 116 138 126 124 ...
##  $ x2   : num  114 110 126 116 102 100 98 122 108 106 ...
##  $ group: Factor w/ 2 levels "处理组","对照组": 1 1 1 1 1 1 1 1 1 1 ...
##  $ d    : num  16 14 10 12 20 18 18 16 18 18 ...
##  - attr(*, "variable.labels")= Named chr [1:5] "编号" "治疗前血压" "治疗后血压" "组别" ...
##   ..- attr(*, "names")= chr [1:5] "n" "x1" "x2" "group" ...
##  - attr(*, "codepage")= int 936

数据一共5列(第5列是自己算出来的,其实原始数据只有4列),第1 列是编号,第2列是治疗前血压,第3例是治疗后血压,第4列是分组,第5列是血压前后差值。

进行重复测量数据两因素两水平的方差分析前,先把数据转换一下格式:

library(tidyverse)
## -- Attaching packages ----------------------------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.3     v dplyr   1.0.7
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   2.0.1     v forcats 0.5.1
## -- Conflicts -------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
df12_11 <- df12_1[,1:4] %>% pivot_longer(cols = 2:3,names_to = "time",values_to = "hp") %>% mutate_if(is.character, as.factor)df12_11$n <- factor(df12_11$n)str(df12_11)
## tibble [40 x 4] (S3: tbl_df/tbl/data.frame)
##  $ n    : Factor w/ 20 levels "1","2","3","4",..: 1 1 2 2 3 3 4 4 5 5 ...
##  $ group: Factor w/ 2 levels "处理组","对照组": 1 1 1 1 1 1 1 1 1 1 ...
##  $ time : Factor w/ 2 levels "x1","x2": 1 2 1 2 1 2 1 2 1 2 ...
##  $ hp   : num [1:40] 130 114 124 110 136 126 128 116 122 102 ...

转换后的数据格式如上,只截取了一部分。

进行重复测量数据两因素两水平的方差分析:

hp是因变量,time是测量时间(治疗前和治疗后各测量一次),group是分组因素(两种治疗方法),n是受试者编号。

f1 <- aov(hp ~ time * group + Error(n/(time)), data = df12_11)summary(f1)
##
## Error: n
##           Df Sum Sq Mean Sq F value Pr(>F)
## group      1  202.5   202.5   1.574  0.226
## Residuals 18 2315.4   128.6
##
## Error: n:time
##            Df Sum Sq Mean Sq F value   Pr(>F)
## time        1 1020.1  1020.1   55.01 7.08e-07 ***
## time:group  1  348.1   348.1   18.77 0.000401 ***
## Residuals  18  333.8    18.5
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

结果输出了两张表,第二个是测量前后比较与交互作用的方差分析表,第一个是处理组与对照组比较的方差分析表,可以看到结果和课本是一样的!

用图形方式展示重复测量的结果:

with(df12_11,interaction.plot(time, group, hp, type = "b", col = c("red","blue"), pch = c(12,16), main = "两因素两水平重复测量方差分析"))

或者用箱线图展示结果:

boxplot(hp ~ group*time, data = df12_11, col = c("gold","green"),main = "两因素两水平重复测量方差分析")

重复测量数据两因素多水平的分析

使用课本例12-3的数据,直接读取:

df12_3 <- foreign::read.spss("E:/各科资料/医学统计学/研究生课程/析因设计重复测量/9重复测量18-9研/例12-03.sav",to.data.frame = T)str(df12_3)
## 'data.frame':  15 obs. of  7 variables:
##  $ No   : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ group: Factor w/ 3 levels "A","B","C": 1 1 1 1 1 2 2 2 2 2 ...
##  $ t0   : num  120 118 119 121 127 121 122 128 117 118 ...
##  $ t1   : num  108 109 112 112 121 120 121 129 115 114 ...
##  $ t2   : num  112 115 119 119 127 118 119 126 111 116 ...
##  $ t3   : num  120 126 124 126 133 131 129 135 123 123 ...
##  $ t4   : num  117 123 118 120 126 137 133 142 131 133 ...
##  - attr(*, "variable.labels")= Named chr [1:7] "序号" "组别" "" "" ...
##   ..- attr(*, "names")= chr [1:7] "No" "group" "t0" "t1" ...

数据一共7列,第1列是患者编号,第2列是诱导方法(3种),第3-7列是5个时间点的血压。

首先转换数据格式:

library(tidyverse)df12_31 <- df12_3 %>% pivot_longer(cols = 3:7, names_to = "times", values_to = "hp")df12_31$No <- factor(df12_31$No)
df12_31$times <- factor(df12_31$times)str(df12_31)
## tibble [75 x 4] (S3: tbl_df/tbl/data.frame)
##  $ No   : Factor w/ 15 levels "1","2","3","4",..: 1 1 1 1 1 2 2 2 2 2 ...
##  $ group: Factor w/ 3 levels "A","B","C": 1 1 1 1 1 1 1 1 1 1 ...
##  $ times: Factor w/ 5 levels "t0","t1","t2",..: 1 2 3 4 5 1 2 3 4 5 ...
##  $ hp   : num [1:75] 120 108 112 120 117 118 109 115 126 123 ...

转换后的格式见上图,只截取了部分。

进行方差分析:

f2 <- aov(hp ~ times * group + Error(No/(times)), data = df12_31)summary(f2)
##
## Error: No
##           Df Sum Sq Mean Sq F value Pr(>F)
## group      2  912.2   456.1   5.783 0.0174 *
## Residuals 12  946.5    78.9
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Error: No:times
##             Df Sum Sq Mean Sq F value   Pr(>F)
## times        4 2336.5   584.1   106.6  < 2e-16 ***
## times:group  8  837.6   104.7    19.1 1.62e-12 ***
## Residuals   48  263.1     5.5
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

输出结果是两张表格,第1个是不同诱导方法患者血压比较的方差分析表,第2个是麻醉诱导时相及其与诱导方法交互作用的方差分析表。

结果和课本是一样的哟!具体意义解读请认真学习医学统计学相关知识。

用图形方式展示重复测量的结果:

with(df12_31,interaction.plot(times, group, hp, type = "b", col = c("red","blue","green"), pch = c(12,16,20), main = "两因素多水平重复测量方差分析"))

或者用箱线图展示结果:

boxplot(hp ~ group*times, data = df12_31, col = c("gold","green","black"),main = "两因素多水平重复测量方差分析")

本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。

医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。

R语言和医学统计学(6):重复测量方差分析相关推荐

  1. R语言和医学统计学(5):多因素方差分析

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文. 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化. 文章目录 前言 2 x 2 两因素析因设计资料的方差分析 I ...

  2. R语言和医学统计学(2):方差分析

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文. 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化. 前言 这是R语言和医学统计学的第2篇内容. 主要是用R语言复 ...

  3. R语言和医学统计学(9):多重检验

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文. 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化. 文章目录 前言 多个样本均数间的多重比较 LSD-t检验 T ...

  4. R语言和医学统计学(10):正态性和方差齐性检验

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文. 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化. 文章目录 前言 正态性检验 shapiro wilk检验 k ...

  5. R语言和医学统计学(7):多元线性回归

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文. 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化. 文章目录 前言 多元线性回归 回归诊断 可以通过看图来判断 ...

  6. R语言和医学统计学(3):卡方检验

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文. 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化. 前言 这是R语言和医学统计学的第3篇内容. 主要是用R语言复 ...

  7. R语言和医学统计学(8):logistic回归

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文. 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化. 文章目录 前言 logistic回归 前言 这是R语言和医学 ...

  8. R语言和医学统计学系列(1):t检验

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文. 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化. 前言 本期开始将推送使用R语言进行医学统计学的相关内容. 使 ...

  9. R语言和医学统计学:非参数检验的补充

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文. 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化. 文章目录 探索发现 解决问题 探索发现 前段时间有小伙伴问到 ...

最新文章

  1. 解决Sqlite UTF-8中文数据格式在DOS窗口下中文乱码
  2. 【Kotlin】属性 与 幕后字段 ( 属性声明 | 属性初始化器 | 属性访问器 | field 属性幕后字段 | lateinit 延迟初始化属性 )
  3. c语言中return的作用_C语言简介
  4. 常用的 Java 工具类之 Apache 全家桶使用
  5. 对单片机C语言的一些误用和总结
  6. java基本数据类型的标识符_java基础(一)-标识符、变量、基本数据类型及转换、运算符及表达式...
  7. Java面向对象练习题之学生信息
  8. 欢迎使用CSDN-markdown编辑器-入门
  9. listview中有checkbox 滑动后状态改变
  10. “scikit-learn(sklearn) 官方文档中文版”
  11. 16进制转base64_《蹲坑学K8S》之19-5:二进制部署Calico网络
  12. 记录一次es写入操作
  13. 人工智能智能制作PPT构想---论文与PPT介绍
  14. HDU 6232 Confliction
  15. 补天漏洞平台:让更多的白帽子脱离黑产
  16. 分享一波前端开发也需要知道的关于 Centos、Docker、Nginx、Node、Jenkins的相关知识...
  17. 新电脑Linux反应慢怎么回事,电脑反应慢怎么处理 教你几招解决电脑卡慢问题
  18. SAP系统接口对接历险记
  19. 第九届大唐杯直播整理
  20. python画图软件是哪个_Python实现画图软件功能方法详解

热门文章

  1. Y400双硬盘安装WIN10和Ubuntu
  2. 情到深处人孤独 爱至穷时尽沧桑
  3. 业界最快的高转速马达,追觅科技V12无线吸尘器
  4. 队列Q_via牛客网
  5. 网站外链和反向链接的区别(怎么区分外链与反向链接)
  6. python爬虫微信_搜狗微信采集 —— python爬虫系列一
  7. cinder(cinderella怎么读英语)
  8. wcom少彐x片_大数据实战之千万量级小说网站项目开发(存储、复杂搜索、推荐、分析)...
  9. 搜索引擎的检索模型-查询与文档的相关度计算
  10. 《图像处理与计算机视觉算法及应用》读后感