检验int值在list中是否存在_R语言统计与绘图:卡方检验

fb9133a86d165713bca45ba25b3ce4f2.png

卡方检验在计数资料中的应用,包括推断两个总体率或构成比之间有无差别、多个总体率或构成比之间有无差别、多个样本率间的多重比较、两个分类变量之间有无关联性、多维列联表的分析和频数分布拟合优度的卡方检验。

30c1a6bac1a15805104af0546d1e371a.png
选自:周支瑞老师

下面分别介绍计数资料怎么进行卡方检验。


目  录

  • 1. 四格表资料的卡方检验

    • 1.1 数据集数据

    • 1.2 向量或矩阵数据

    • 1.3 chisq.test()函数

  • 2. Fisher确切概率法

  • 3. 配对四格表资料的卡方检验

    • 3.1 b+c < 40

    • 3.2 b+c ≥ 40

    • 3.3 mcnemar.test()函数

  • 4. Cochran-Mantel-Haenszel检验

    • 4.1 mantelhaen.test()函数

    • 4.2 数据集形式的数据

    • 4.3 向量或数组数据

    • 4.4 计算各层OR值

    • 4.5 Breslow-Day检验

    • 4.6 BreslowDayTest()函数

    • 4.7 WoolfTest()函数

  • 5. 计算列联系数

  • 6. 频数分布拟合优度的卡方检验


1. 四格表资料的卡方检验

1.1 数据集数据

选用survival包的colon数据集。

library(survival) #加载内置数据集的包
data(colon) # 加载数据集

mytable chisq.test(mytable)  # 进行连续性校正
chisq.test(mytable, correct = FALSE) # 不进行连续性校正
c71dd32e304c5364ed22cd4a23d02042.png

无论是否进行连续性校正,结果都显示p值>0.05,接受原假设,说明sexstatus无关。

还可以输出卡方检验摘要:

chisq.test(mytable)$observed   # 实际频数(和mytable一样)
chisq.test(mytable)$expected   # 期望频数
chisq.test(mytable)$residuals  # Pearson 残差
chisq.test(mytable)$stdres     # 标准化残差

1.2 向量或矩阵数据

compare706,792,184,176), nr = 2,
                dimnames = list(c("male", "female"),
                                c("Yes", "No")));compare
chisq.test(compare)
fc383f3a3685401997caa2c520327613.png

注意:在使用chisq.test()函数计算时,要注意单元格的期望频数。如果所有单元格频数都不为零,并且所有单元的期望频数≥5,那么Pearson卡方检验是合理的,否则会显示警告信息。

如果在计算时出现警告信息,表明表中单元格期望频数有<5的值,这可能会使卡方近似无效。

018c440938f05525efa0ecf999cf99e4.png

如果数据不满足卡方检验的条件时,应使用Fisher精确检验。

1.3 chisq.test()函数

chisq.test()函数可以进行卡方列联表检验和拟合优度检验。

chisq.test(x, y = NULL, # x是由数据构成的向量或矩阵,y是数据向量(当x为矩阵时,y忽略)
           correct = TRUE, # 逻辑词,默认为TRUE,在计算2x2列联表的检验统计量时是否使用连续性校正
           p = rep(1/length(x), length(x)), # p是原假设落在小区间的理论概率,默认值表示均匀分布. 
           # P是和x长度相同的概率向量,P值如果输入有负值,会返回错误信息。
           rescale.p = FALSE, # 逻辑词,为TRUE,则p将缩放成和为1的向量;为FALSE,如果p向量和≠1,则会返回错误信息
           simulate.p.value = FALSE, # 为TRUE则不进行连续性校正,根据蒙特卡洛检验计算p值
           B = 2000) # B为整数,在蒙特卡洛检验中使用的重复次数。

对于2x2的列联表,参数correct的默认值为TRUE,即使用Yate连续修正,目的是提高P值,避免"有显著差异"不可靠的情况发生;

2. Fisher确切概率法

在样本较小时(单元的期望频数<5),需要用Fisher精确检验来完成独立性检验。Fisher检验开始是针对2x2四格表提出的,当卡方检验的条件不满足时,可以使用精确检验。

fisher.test(x, y = NULL, # 参数x为二维列联表形式的矩阵,或者由因子构成的对象。y为因子构成的向量,当x为矩阵时,此值无效。
            workspace = 200000, # 正整数,表示用于网络算法工作空间的大小
            hybrid = FALSE,  # 逻辑词,仅用于2x2列联表,为FALSE时(默认值)表示精确计算概率,取TRUE表示用混合算法计算概率。
            hybridPars = c(expect = 5, percent = 80, Emin = 1),
            control = list(), or = 1, # 为列表,指定低水平算法的组成,or为优势比的原假设,默认值为1,仅用于2x2列联表。
            alternative = "two.sided", # 备择假设,默认值"two.sided",表示双侧检验(不独立),“less”表示单侧小于检验(负相关);“greater”表示单侧大于检验(正相关)。
            conf.int = TRUE, # 逻辑词,为TRUE则给出优势比的置信区间。
            conf.level = 0.95,  # 置信水平,默认0.95
            simulate.p.value = FALSE, B = 2000) # 逻辑词,为TRUE,表示用Monto Carlo方法计算P值,B为正整数,表示Monto Carlo重复的次数。

例:研究COPD与吸烟之间的关系,调查了52名COPD患者和33名非COPD患者吸烟的人数。

compare49,28,3,5),nr = 2, byrow = TRUE,
                dimnames = list(c("smoke", "Notsmoke"),
                                c("COPD", "normal")))
compare
chisq.test(compare)$expected  # 查看期望频数
fisher.test(compare) # 进行fisher精确检验
8972fd37a943eab1e2abac92bb8fc4fd.png

因为p-value=0.2518>0.05,并且优势比的置信区间包含1,故接受原假设, 认为吸烟与COPD无关。

3. 配对四格表资料的卡方检验

计数资料的配对设计常用于两种检验方法、培养方法、诊断方法的比较。特点是对样本中各观察单位分别用两种方法处理,然后观察两种处理方法的某两分类变量的计数结果。

假设检验为McNemar卡方检验,检验统计量有两种(分b+c ≥ 40b+c < 40的情况)。该法一般用于样本含量不太大的资料。

  • b+c < 40时,使用连续性校正,即correct=TRUE
  • b+c ≥ 40时,不使用连续性校正,即correct=FALSE

3.1 b+c < 40

例:某实验室分别用乳胶凝集法和免疫荧光法对58名可疑系统性红斑狼疮患者血清中抗核抗体进行测定,问这两种方法的检测结果有无差别?

X 11,2,12,33), 
            nrow = 2,
            byrow = FALSE,
            dimnames = list(免疫荧光法 = c("+","-"),乳胶凝集法 = c("+","-")));X
#           乳胶凝集法
# 免疫荧光法   +  -
#          + 11 12
#          -  2 33

mcnemar.test(X,correct=TRUE)
# McNemar's Chi-squared test with continuity correction
# data:  X
# McNemar's chi-squared = 5.7857, df = 1, p-value = 0.01616
结论:p-value = 0.01616 < 0.05,可以认为两种方法的检测结果不同,免疫荧光法的阳性检测率较高

3.2 b+c ≥ 40

例:某医院同时用A、B两种方法测定160份痰标本中的抗酸杆菌,问A、B两种方法的检出率有无显著性差异?

X 52,20,35,53), 
            nrow = 2,
            byrow = FALSE,
            dimnames = list(A方法 = c("+","-"),B方法 = c("+","-")));X
#       B方法
# A方法  +  -
#     + 52 35
#     - 20 53
mcnemar.test(X,correct=FALSE) 
# McNemar's Chi-squared test
# data:  X
# McNemar's chi-squared = 4.0909, df = 1, p-value = 0.04311
结论:p-value = 0.04311 < 0.05,可以认为两种方法的检测结果不同。

3.3 mcnemar.test()函数

使用mcnemar.test()函数进行McNemar检验。

mcnemar.test(x, y=NULL, #参数x为二维列联表形式的矩阵,或者由因子构成的对象。y为因子构成的向量,当x为矩阵时,此值无效。
             correct=TRUE)  #逻辑词,默认为TRUE,仅在2x2列联表下进行连续校正。

4. Cochran-Mantel-Haenszel检验

CMH检验可以理解为分层卡方检验,CMH检验用于高维列联表的分析,即在控制了某一个或几个混杂因素(分层变量)之后,检验二维RxC表中行变量与列变量之间是否存在统计学关联。

假设检验:
H0:为任一层的行变量X与列变量Y均不相关;  
H1:为至少有一层X与Y存在统计学关联。

当H0成立时,CMH统计量渐近卡方分布。需要注意的是,当各层间行变量与列变量相关的方向不一致时,CMH统计量的检验效能较低。

根据行变量X和列变量Y的类型不同,CMH卡方统计量包括:

1.相关统计量:适用于双向有序分类变量;  
2.方差分析统计量:也称行平均得分统计量,适用于列变量Y为有序分类变量;  
3.一般关联统计量:适用双向无序分类变量,目的是检验X和Y是否存在关联性。

4.1 mantelhaen.test()函数

mantelhaen.test()函数用来进行CMH卡方检验。其原假设是,两个分类变量在第三个变量的每一层中都是条件独立的。

mantelhaen.test(x, y = NULL, # x为数组形式的三维列联表,行与列的维度至少为2,最后一个维度为分层变量;
                # 或者x为至少有2个水平的因子,y也为至少有2个水平的因子,如果x为三维数组时,y忽略;
                z = NULL, # 至少有2个水平的因子,表示哪一层对应x中的元素,哪一层对应y的元素,如果x为三维数组,则z忽略;
                alternative = c("two.sided", "less", "greater"), # 备择假设,默认为"two.sided"双侧检验;
                correct = TRUE, # 逻辑词,计算检验统计量时使用连续性校正;
                exact = FALSE, # 逻辑词,是否计算精确检验;
                conf.level = 0.95) # 置信水平,默认0.95

注意:数组或向量不允许存在缺失值,x,y,z必须为长度相同的数字向量。

4.2 数据集形式的数据

选用survival包的colon数据集。xtabs()函数可以基于三个或多个分类变量生成多维列联表。

mytable mantelhaen.test(mytable)
646a41d896b53bbfd6be6342b0f039fa.png

结果中p-value = 2.921e-08,表明患者接受的治疗与结局状态在性别的每一水平下并不独立。

4.3 向量或数组数据

为研究心肌梗死与近期使用避孕药之间的关系,采用病例对照研究方法调查了234 名心肌梗死病人与1742名对照使用口服避孕药的状况。考虑到年龄是混杂因素,按照年龄分层后结果见下表。试分析排除了年龄因素的影响后,心肌梗死是否与近期使用口服避孕药有关。

4f8add1dd67cee0a1b7be0041a2ef04a.png
mydata 17, 121, 47, 944,
                  12, 14, 158, 663),
                dim = c(2, 2, 2),
                dimnames = list(心肌梗死 = c("病例", "对照"),
                                    近期使用口服避孕药 = c("是", "否"), 
                                    年龄 = c(", "≥ 40岁")))
mydata
mantelhaen.test(mydata, correct = F) # 经典的2x2xk水平 CMH 检验
8cbe21a16baefa404fc3c82c06d2d5ba.png

结果显示P<0.001,按a=0.05的检验水准拒绝H0,接受H1,可认为控制了年龄的影响后,心肌梗死与近期服用口服避孕药有关。

4.4 计算各层OR值

apply(mydata, 3, function(x) (x[1,1]*x[2,2])/(x[1,2]*x[2,1]))
#  # 2.821874 3.596745 

4.5 Breslow-Day检验

对于分层病例对照研究或队列研究资料,通常应用Breslow-Day检验对各层的效应值(OR或RR)进行齐性检验。

若不拒绝齐性假设(p>0.05),才可依据CMH检验的结果推断出暴露因素是否与疾病相关。如果相关,可进一步用Mantel-Haenszel法估计OR或RR值及其可信区间。

若拒绝了齐性假设(p<0.05),则提示分层变量与暴露因素间存在交互作用,此时CMH检验的结果不能说明问题,可进行多元logistic回归分析。

4.6 BreslowDayTest()函数

BreslowDayTest(x, # 2x2xk列联表
               OR = NA, # 要检验的OR值,默认使用Mantel-Haenszel估算值。
               correct = FALSE) # 为TRUE,则使用Tarone调整的Breslow-Day检验
library(DescTools) # 加载包
BreslowDayTest(mydata)  # 进行Breslow-Day检验
# Breslow-Day test on Homogeneity of Odds Ratios
# data:  mydata
# X-squared = 0.23409, df = 1, p-value = 0.6285
BreslowDayTest(mydata, correct = TRUE)  # Tarone校正的Breslow-Day检验
# Breslow-Day Test on Homogeneity of Odds Ratios (with Tarone correction)
# data:  mydata
# X-squared = 0.23369, df = 1, p-value = 0.6288

结果为P=0.6285,可认为两年龄组口服避孕药对心肌梗死的总体OR值同质:用Mantel-Haenszel法估计OR值及其95%可信区间为3.09(1.93-4.93)

4.7 WoolfTest()函数

除了BreslowDayTest()函数外,WoolfTest()函数也可以对2x2xk列联表的同质性进行检验。

WoolfTest(x)  # x为2x2xk列联表,最后一个维度为分层变量
WoolfTest(mydata)
# Woolf Test on Homogeneity of Odds Ratios (no 3-Way assoc.)
# data:  mydata
# X-squared = 0.23358, df = 1, p-value = 0.6289

结论和BreslowDayTest检验一样。

5. 计算列联系数

若行x列表资料的两个分类变量都为无序分类变量,进行多个样本率的比较、样本构成比的比较都可以用卡方检验,也就是使用chisq.test()函数来计算。

若得知两个分类变量之间有关联性,需进一步分析关系的密切程度时,可计算Pearson列联系数。

列联系数C (Contingency Coeff) 取值为0-1之间,0表示完全独立, 1表示完全相关;愈接近于1,关系愈密切。

vcd包中的assocstats()函数可以用来计算二维列联表的phi系数、列联系数和Cramer’s V系数。

例:测得某地 5801 人的 ABO 血型和 MN 血型结果如下,问这两种血型之间是否有关联。

bdf713528bbc1a14d61e38588325e9c1.png
mytable 431, 388, 495, 137,
                    490, 410, 587, 179,
                    902, 800, 950, 32),
                  nrow = 4, byrow = FALSE,
                  dimnames = list(ABO血型 = c("O","A","B","AB"),
                                  MN血型 = c("M","N","MN")))
mytable
chisq.test(mytable) # 判断两分类变量有无关联性
8f11e86593e37b2e3b32af73cd03e42a.png

p-value < 2.2e-16,可以认为两种血型系统间有关联,可进一步计算Pearson列联系数,以分析其密切程度。

library(vcd)
assocstats(mytable) # 查看关联性的强弱
4372f3d7cb5acedf9c2b12450df6fbd6.png

从上面可以看出,列联系数为0.188,虽然有关联性,但列联系数比较小,虽然有统计学意义,但关系不太密切。

6. 频数分布拟合优度的卡方检验

频数分布拟合优度(goodness-of-fit)检验还是使用chisq.test()函数。

chisq.test(x, # x为向量或单行/单列矩阵,参数 x 必须全部是非负整数。
           p, # P是和x长度相同的概率向量,P值如果输入有负值,会返回错误信息。
              # p中向量的和应为1,p不给出则向量值全部相等。
           rescale.p = TRUE) # 逻辑词,为TRUE,则p将缩放成和为1的向量;为FALSE,如果和≠1,则会返回错误信息。
x 10,25,15) 
chisq.test(x)  # chisq.test(as.table(x))等效

x 82,47,20,18,22) # x为向量
p 45,25,25,18,15) # p为概率
chisq.test(x, p = p)  # 返回错误信息,概率总和必须为1
chisq.test(x, p = p, rescale.p = TRUE) # 运行正常

相关文章

R语言统计与绘图:ROC曲线上32种截断值的计算 2020-06-18 R语言统计与绘图:ROC曲线的统计计算 2020-06-17 R语言统计与绘图:绘制不同坐标轴置信区间的森林图 2020-06-05 R语言统计与绘图:方差分析 2020-06-01 R语言统计与绘图:pROC包绘制ROC曲线 2020-05-25

04cca79083d67a6f7b3a2167aaef4e42.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql in 多个字段_MySQL如何同时自增自减多个字段

“本文将带大家聊一下如何同时自增自减多个字段”前言最近小Q同学去面试了&#xff0c;然后就问了题目的问题&#xff0c;如何同时自增自减多个字段。小Q一时回答不出来&#xff0c;最终的结果就是回家等通知....关于这个问题咔咔来给小Q简单的进行解答一下。一、ThinkPHP框架实…

wxpython 调用子窗口_wxpython入门第一步(简单例子)

在这部分wxPython教程中&#xff0c;我们将创建一些简单的例子。简单的例子​ 我们从一个非常简单的例子开始。我们的第一个脚本将只显示一个小窗口。它不会做太多事情。我们将逐行分析这个脚本。# simple.pyimport wxapp wx.App()frame wx.Frame(None, )frame.Show()app.Mai…

orderd mysql_Oracle入门教程:leading vs ordered hint

odered hint 可以指示oracle 使用from 关键字后面的表的顺序进行join连接&#xff01;cbo会优先按照from 后面的表的顺序来进行join&#xff0c;当统计leading hint 可以指示Oracle使用leading 中指定的表作为驱动表,比如 正常的访问计划如下SCOTT> select e.ename, hiredat…

mysql标识列从一开始_mysql中标识列是什么意思有什么用

标识列是什么&#xff1f;标识列又称为自增长列。含义&#xff1a;可以不用手动的插入值&#xff0c;系统提供默认的序列值特点&#xff1a;1、标识列必须和主键搭配吗&#xff1f;不一定&#xff0c;但要求是一个key2、一个表可以有几个标识列&#xff1f;至多一个&#xff01…

mysql 及时点还原_mysqlbinglog基于即时点还原

mysqlbinlog介绍要想从二进制日志恢复数据&#xff0c;你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(即my.cnf or my.ini&#xff0c;取决于你的系统)中找到路径。(mysql5.7开启binglog 时需要同时设置server-id否则无法启动)要想确定当前的二进制日志文件…

python mysql查表_python进阶(十、mysql:单表查询)

3.mysql数据库3.10 单表查询3.10.1. 简单查询查询在数据库中使用的频率是最高的&#xff1a;十次查询&#xff0c;一次增删改。1)建表2)插入数据3.10.1.1. 选择字段&#xff1a;selectselect 字段名1,字段名2…… from 表名 where 条件;3.10.1.2. 字段重命名(别名)&#xff1a;…

python常见的数值运算符_第18 p,Python中各种常用的运算符,特别是增量运算符...

原标题&#xff1a;第18 p&#xff0c;Python中各种常用的运算符&#xff0c;特别是增量运算符大家好&#xff0c;我是杨数Tos&#xff0c;这是《从零基础到大神》系列课程的第18篇文章&#xff0c;第二阶段的课程&#xff1a;Python基础知识&#xff1a;Python中各种常用的运算…

python画害羞的表情_用Python把你的朋友变成表情包

一、项目说明在日常生活中&#xff0c;我们经常会存取一些朋友们的丑照&#xff0c;在这个项目中&#xff0c;我们以萌萌哒的熊猫头作为背景&#xff0c;然后试着在背景图上加入朋友们的照片。效果如下图所示&#xff1a;二、实现步骤导入朋友的照片(前景照片)&#xff1b;处理…

.net md5 java 偏移量_C# java MD5加密方不一致问题

说来惭愧&#xff0c;做开发几年了&#xff0c;一直在吸取&#xff0c;今天也写写自已关于技术的一点点理解&#xff0c;不正之处&#xff0c;请大家多多指点。由于之前开发的项目使用的是C#,用户信息使用的C#的MD5加密码方式&#xff0c;而现在需要切换到Java平台下&#xff0…

java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...

最近在复习java&#xff0c;下学期要用&#xff0c;写这个练手. 技术较粗糙&#xff0c;见谅.代码里用的是这幅地图&#xff0c;根据实际情况更改&#xff0c;在addNode方法中这个是运行结果&#xff0c;起点和终点在 运行wrap(String qidian, String zhongdian) 时定义代码&a…

java xml opencv_Java中使用opencv

零、前言作为图像处理出身&#xff0c;不仅仅要会C图像处理、matlab图像处理、python图像处理、最起码也得会java图像处理&#xff0c;当然我最终还都用的是opencv这个机器视觉库了。今天简单介绍一下java中如何使用opencv。一、配置库(1)官网下载opencv&#xff0c;在opencv\b…

java实现table可编辑_动态渲染可编辑单元格的Table

一、问题描述问题是这样的&#xff0c;后台传了xArr [x1, x2,...,xn]和yArr [y1, y2, ..yn]两个数组&#xff0c;前端要渲染出表格并且可以填写每个单元格的值&#xff0c;然后按照一定数据结构保存并传给后台&#xff0c;并且再次获取这个数据结构和数组xArr、yArr可以自己渲…

java包裹邮费计算_GitHub - honghailiang/FreightSystem: 基于Java Swing编写的简易运费计算工具...

FreightSystem基于java Swing编写的运费计算系统初始化数据从excel中读取数据&#xff0c;转化为对象(只保存基础数据&#xff1a;序列号、始发站、目的站、省份、100kg以下(元/kg)、100kg以上(元/kg)、到货(元/kg)、自提(元/kg)、补贴里程、公路里程、单价(元/吨公里))并保存到…

java需求设计_JavaWeb期末设计---需求分析文档. stage1

影院活动管理系统—需求分析文档目录第2章 需求分析2.1 用户需求2.1.1 业务需求2.1.2 商业需求2.1.3 特殊需求2.2 可行性分析2.2.1 技术可行性2.2.2 经济可行性2.3 系统功能2.3.1 功能概述2.3.2 E-R图2.3.4 Domian logic2.3.5 系统框架图-------------------------------------…

selenium java po模式_selenium + java po模式

po模式大概介绍&#xff0c;大家也可以自己百度看看Page Object模式主要是将每个页面设计为一个类class&#xff0c;这个类包含页面中需要测试的元素(按钮、输入框、URL、标题等)和实际操作方法&#xff0c;这样在写测试用例时可以通过调用页面类的方法和属性来获取页面元素和操…

java基础语法实例教程_Java 基础语法

一个 Java 程序可以认为是一系列对象的集合&#xff0c;而这些对象通过调用彼此的方法来协同工作面向对象中的一些概念下表列出了 面向对象 编程中的一些概念名词说明对象对象是类的一个实例&#xff0c;有状态和行为。例如&#xff0c;一条狗是一个对象&#xff0c;它的状态有…

python3软件怎么使用_python3怎么使用pip

pip 是 Python 包管理工具&#xff0c;该工具提供了对Python 包的查找、下载、安装、卸载的功能。目前如果你在 python.org 下载最新版本的安装包&#xff0c;则是已经自带了该工具。Python 2.7.9 或 Python 3.4 以上版本都自带 pip 工具。pip 官网&#xff1a;https://pypi.o…

深度学习图像融合_基于深度学习的图像超分辨率最新进展与趋势【附PDF】

因PDF资源在微信公众号关注公众号&#xff1a;人工智能前沿讲习回复“超分辨”获取文章PDF1、主题简介图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题&#xff0c;在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。随着深度学习技术的…

高通cpu排行_安卓手机芯片排行:麒麟990 5G仅排第三,980还输给了765G?

众所周知&#xff0c;在移动端芯片行业&#xff0c;高通多年来都保持着一种舍我其谁的劲头&#xff0c;但随着科技的不断发展&#xff0c;其他厂商也开辟了自己的新天地&#xff0c;截至目前&#xff0c;全球主流的智能手机搭载的处理器主要来自于华为海思、高通骁龙、三星、联…

keil4怎么移植其他人的程序_简单和你聊聊造血干细胞移植!

造血干细胞是个什么“鸟”&#xff1f;造血干细胞&#xff0c;人体血细胞的老祖宗。它的分裂方式也十分独特&#xff0c;由一个细胞分裂为两个细胞时&#xff0c;其中一个细胞会慢慢长大&#xff0c;增殖分化为红细胞、白细胞和血小板等等&#xff1b;另一个细胞仍然保持干细胞…