草庐IT

统计检验

ytbao 2023-09-27 原文

参数检验和非参数检验的区别:

        期刊文献中常规数据的主流统计检验方法分为两种:
以T检验、方差分析等为代表的参数检验;以秩和检验、卡方检验为代表的非参数检验

    参数检验:假定数据服从某分布(一般为正态分布),通过样本参数的估计量(x±s)对总体参数(μ)进行检验,比如t检验、u检验、方差分析。

    非参数检验:不需要假定总体分布形式,直接对数据的分布进行检验。由于不涉及总体分布的参数,故名 非参数 检验。比如,卡方检验,秩和检验。

    参数检验的集中趋势的衡量为均值,而非参数检验为中位数。

    参数检验需要关于总体分布的信息;非参数检验不需要关于总体的信息。

    参数检验只适用于变量,而非参数检验同时适用于变量和属性。

    简而言之,若可以假定样本数据来自具有特定分布的总体,则使用参数检验。如果不能对数据集作出必要的假设,则使用非参数检验。


    利用ggstatsplot包进行数据统计检验分析和呈图,很舒服。要注意 type = "noparametric" 参数,自己判断是要非参数检验还是参数检验

    提取统计数据:ggbetweenstats(data, x, y) %>% extract_stats()

正态性检验,同方差性检验

    方差相同的两样本T检验,方差不同的两样本T检验

    其实T检验只需满足一个条件,那就是正态,方差不齐的情况也可以用T检验。两独立样本T检验就是方差相同的两样本T检验,满足两个条件,正态且方差齐性。如果F检验把方差齐性的零假设给reject了,即方差不同,那么可用Welch t检验。方差是否相同,可以计算两个样本的方差比值,方差相同,则比值应该在1左右,而方差不同,则比值会偏离1,这个比值称为F ratio,可以使用F检验来计算方差齐性的显著性。(https://guangchuangyu.github.io/statistics_notes/t.html)

    但好像论文中这种情况,一般直接用非参数检验,好像更为稳健。

出自 Pterosaur_Zero:【学习笔记】组间差异比较及相关问题总结 https://blog.csdn.net/qq_33924470/article/details/115068564?spm=1001.2014.3001.5502 | 世威:https://www.jianshu.com/p/a0f2ef207059
出自帅哥简书 https://www.jianshu.com/p/ed466c40c049

    正态性检验:R 的 shapiro.test 函数可检验数据是否服从整体分布, 若 p 大于0.05,表示与正态分布无显著差异,即样本服从正态分布。shapiro.test() 在 R 中有一个限制,它最多只能应用于大小为 5000 的样本,并且最小样本大小必须为 3。有一个假设检验,称为 Anderson Darling 正态性检验可替代shapiro.test 函数。加载 nortest 包并使用 ad.test() 函数即可。https://www.jianshu.com/p/0f6e6ba8b6b4

    同方差性检验:使用F检验,var.test() 函数检验两组样本方差是否具有显著差异, 若 p 大于0.05,即两组样本的方差没有显著差异,方差齐次。

    正态性检验和同方差性检验下面都有例子

    所谓双侧和单侧之别,是以做检验时拒绝域在数据分布的两侧还是单侧来区分的,若是双侧检验,代表研究者不确定数据均值是高于检验值还是低于检验值,比如你的数据,如果你不清楚后测数据是否高于前测数据,就想知道前后测的均值是否不同,那就用双侧检验;如果你仅仅想知道后测是不是高于前测,或者仅仅想知道前测是不是低于后测,那可以用单侧检验,因为此时你只关心某一侧的拒绝域,对另一侧不感兴趣。

    简单来说,双侧检验只能证明你比较的两个项目之间是有差异的,但是不能告诉你这两组中哪个高哪个低;单侧检验就可以告诉你是低于还是高于。从原假设来判断的话:双侧的原假设用的是a≠a0单侧检验的假设是a>a0或者a<a0。


R中常用的比较方法 https://zhuanlan.zhihu.com/p/339147396
https://www.jianshu.com/p/8210e4c1079d


参数检验:t检验    t.test()

    https://zhuanlan.zhihu.com/p/360185346

    当前各类期刊对于实验的生物学重复都有一定的要求,因此适用于两样本比较的卡方检验出现频率逐渐减少,T检验常用于两组数据比较,成为当前期刊文章中出现频率最高的检验类型,T检验根据检验的数据类型又可以分为3种:

1)单样本T检验 :较少被使用。检验单组样本的平均值是否等于目标值,如:某个班级学生的平均身高是否达到全国平均身高等。

    单样本均值t检验,用于判断样本均值与已知的标准是否具有显著差异,如判断一个球队队员的平均身高是否与 190cm 有显著差异

例子:https://mp.weixin.qq.com/s/4q9eHe48eljHPq0KeloVvw

2)独立样本T检验:最常被使用,检验两组独立样本的平均值之差是否等于目标值,如:疾病组与健康组的某项指标是否存在显著差异等。

    两个相互独立的样本,如果均服从正态分布,且方差无显著差异(方差齐次),可以使用 t 检验,比较两样本的均值是否具有显著差异

例子:https://mp.weixin.qq.com/s/37Y90UsoXWpNfGfLoYt-jQ

3)配对T检验:偶尔被使用,检验相关或配对观测之差的平均值是否等于目标值,例如:检验一款减肥药效果,同一个人服药前后的体重数据就是配对的数值,检验若干个配对的体重数值是否存在显著差异。


参数检验:方差分析    aov()或anova()

    方差分析(Analysis of Variance,简称ANOVA),又称“变异数分析”,F检验,是R.A.Fisher费舍尔发明的,用于两个及两个以上样本均值差别的显著性检验。

    当因变量的分布不满足方差齐性的要求时,也可采用FWelch检验。但论文中一般直接用非参数检验,更为稳健。

    概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。

方差的计算方法


非参数检验:Wilcoxon 秩和检验    wilcox.test()

    单样本wilcoxon test:在对单样本进行 t 检验时,如果样本的分布未能通过正态性检验,通常需要采用非参数的 wilcoxon signed rank test检验样本的中位数与预设指标间的差异是否具有显著性。

单样本wilcoxon test 例子:https://mp.weixin.qq.com/s/x9cg8MiJFcZlpoyRLEc1oQ

    Wilcoxon test (Mann-Whitney U test) 检验两独立 非正态样本中位数差异的显著性

两独立非正态样本wilcoxon test 例子:https://mp.weixin.qq.com/s/Bj2M4zD3U4WGaGV9IbBYYw

    正态性检验:R 的 shapiro.test() 或者 nortest 包 ad.test() 函数分别检验两组数据是否服从整体分布, 若均小于0.05, 即两组样本均不服从正态分布。

    wilcoxon test:数据不满足正态性假设,因此不能使用 t test, 应该使用非参数的wilcoxon test。 p 值小于0.05,则两组样本间具有显著差异。

   * 代表p值小于0.05,**代表p值小于0.01,*** 代表p值小于0.001。ns代表组间无差异


非参数检验:Kruskal-Wallis 检验,KW秩和检验    kruskal.test()

    克鲁斯卡尔-沃利斯检验(Kruskal-Wallis test)亦称“K-W检验”、“H检验”等。用以检验两个以上样本是否来自同一个概率分布的一种非参数方法。被检验的几个样本必须是独立的或不相关的。与此检验对等的参数检验是单因素方差分析,但与之不同的是,K-W检验不假设样本来自正态分布。它的原假设是各样本服从的概率分布具有相同的中位数,原假设被拒绝意味着至少一个样本的概率分布的中位数不同于其他样本。此检验并未识别出这些差异发生在哪些样本之间以及差异的大小

多组数据非参数检验kruskal test 例子:https://mp.weixin.qq.com/s/FujhL2tYwJaiZZ2C3_dE-Q

    分别对n组数据(n应该是大于2)进行正态性检验,p 值均小于 0.05,即均不服从正态分布。接着使用 Kruskal-Wallis test 进行方差分析,结果显示 p<0.05,说明至少有一组数据与其他组数据存在显著差异。

    可以接着使用 pairwise.wilcox.test() 函数(图基(Tukey)检验),进行组间两两之间分别比较,结果可显示任意两组间的 p 值是否小于0.05,若小于说明两组数据间具有显著差异。(三组以上数据比较(KW秩和检验时),配合使用多重比较检验,获得两两分组间的差异结果)


非参数检验:卡方分布

https://www.jianshu.com/p/8e8ab8b47c7d

    文献中如此描述卡方检验的应用:”卡方检验用来比较试验组和控制组在A、B中的分布差异“。其中:A将定性变量分为性别(男性、女性)、年龄段(18-35、35-55、55以上)、是否吸烟(吸烟、不吸烟、以前吸烟)。B将定性变量分为移植物长度(6毫米、8毫米、9毫米)

    以上性别、年龄段、移植物长度变量均可视为分类变量,根据这些变量进行分类。p值大于0.05,反映出变量在试验组和控制组间无显著差异。即变量的分布与是否分在试验组还是控制组无关、相互独立。卡方统计量的值越大,对应的P值越小。


多重比较(多重检验)

    当总体检验有统计学意义后,接下来我们会想知道哪两个组间会存在差异,就涉及到两两比较(或者叫多重比较)。参数检验和非参数检验都有多重比较。以参数检验为例,多重比较(multiple comparisons)是指方差分析后对各样本平均数间是否有显著差异的假设检验的统称。方差分析只能判断各总体平均数间是否有差异,多重比较可用来进一步确定哪两个平均数间有差异,哪两个平均数间没有差异。

    比较方法有 N-K(Newman-Keuls)检验、邓肯(DunCan)检验、图基(Tukey)检验、邓尼特(Dunnett)检验、Dunn 检验、最小显著差检验以及谢费(Scheffé)检验等它们的理论依据和应用条件都有所不同。R包PMCMR(The Pairwise Multiple Comparison of Mean Ranks Package) 提供了大量的秩和检验(包括Kruskal Wallis、Friedman)后的多重比较方法。直接利用ggstatsplot包进行数据统计检验分析和呈图更爽的。

    与Wilcoxon检验相比,Dunn检验考虑了Kruskal-Wallis测试所使用的rank。还对tie(数据中存在相同的数值)进行了校正。


统计学学习优秀博主笔记

http://rvdsd.top/categories/%E7%94%9F%E7%89%A9%E7%BB%9F%E8%AE%A1/


Pearson 和 Spearman 相关系数

https://mp.weixin.qq.com/s/0nwiXEHgXUXbEMtZZ4xq7w

    pearson spearman 相关系数,用于分析两连续变量之间的相关性。

    pearson 相关系数是基于原始数据的,用于衡量两变量之间的线性关系;spearman 相关系数基于排序,用于衡量单调关系。

    pearson 相关系数    正态分布

    pearson 相关系数相关系数的取值范围为 [-1,1],1 表示强正相关,0 表示没有相关性,-1 表示强负相关。变量服从正态分布是应用pearson相关系数的前提,p 值大于0.05,则变量的分布与正态分布无显著差异,可以计算pearson 相关系数。

    cor() 函数用于计算相关系数,参数 x 和 y 分别指定两个变量,method 用于指定相关系数的类型;cor.test() 函数不仅能够计算相关系数,还能够显示相关系数结果的显著性,如算出为负值且p<0.05,即呈显著负相关。

    Spearman 相关系数    非正态分布

    当数据不能通过正态性检验时,可以考虑使用spearman相关系数,spearman 相关系数的取值范围为 [-1,1],1 表示强正相关,0 表示没有相关性,-1 表示强负相关。

有关统计检验的更多相关文章

  1. ruby - 如何获取我的 Sinatra 应用程序的代码覆盖率统计信息? - 2

    我编写了一个Sinatra应用程序(网站),我想收集网站代码的代码覆盖率信息。我是Ruby的新手,但Google告诉我rcov是一个很好的代码覆盖工具。不幸的是,我在网上可以找到的所有信息只显示了如何获取有关测试用例的代码覆盖率信息-我想要有关我的站点本身的代码覆盖率信息。我想要分析的特定站点文件位于“sdk”和“sdk/vendor”目录中,因此我通常使用“rubysite.rb”运行我的站点的地方我改为尝试以下操作:rcov-Isdk-Isdk/vendorsite.rb它显示了Sinatra启动文本,但随后立即退出,而不是像我的Sinatra应用程序通常那样等待网络请求。有人能告

  2. ruby-on-rails - 收集 Rails 应用程序使用统计信息的最佳方式 - 2

    我有一个Rails应用程序,用户可以在其中设置他们的域并在其中发布内容。我需要收集公共(public)流量统计信息,例如网页浏览量等。此功能的一个很好的例子是我作为客户可以看到的flickr使用统计信息。问题是收集使用信息的最佳方式是什么。应该通过解析日志文件来完成还是应该在运行时收集并存储在数据库中?是否有任何工具或Rails插件已经提供了此功能?此解决方案应该可以很好地扩展,即使每月有数千个域和数百万次网页浏览。 最佳答案 GoogleAnalytics可能是您最好的选择... 关于

  3. ruby-on-rails - 检验 gem 的正确方法 - 2

    如果gem具有rails依赖项,您认为以可以独立运行或在rails项目下运行的方式编写gem测试更好吗? 最佳答案 gem应该是一段独立运行的代码。否则它是应用程序的一部分,因此测试也应该独立创建。通过这种方式,其他人(假设)也可以执行测试。如果测试依赖于您的应用程序,则其他人无法测试您的gem。此外,当您想要测试您的gem时,它不应该因为您的应用程序失败而失败。在您的gem通过测试后,您可以测试应用程序,知道您的gem运行良好(假设您测试了所有内容)。gem是否依赖于Rails不是问题,因为Rails也已经过测试(您可以假设它工作

  4. ruby - 计算数组的统计信息 - 2

    我正在构建一个需要计算数据集统计信息的网络应用程序。我需要计算数组的百分位数、平均值、众数和其他统计函数。通常在Python中,我只会使用scipy、numpy或nltk,它们有一个巨大的stat数组函数库。我可以利用任何ruby​​gem或库来执行此操作吗?在没有任何现有库的情况下,是否有一种简单的方法可以在Python中进行数据处理,同时将我的应用程序保留在Ruby/Rails中? 最佳答案 如果你真的需要一个完整的统计库,看看statsample.否则你可能会发现descriptive_statistics成为一个不错的、轻量

  5. ruby - 从我的胰岛素泵 Controller 逆向工程统计数据文件 - 2

    这可能是也可能不是灰色地带主题,尽管我的意图肯定不是,所以我的意图不是激起关于逆向工程主题的道德辩论。我是1型糖尿病患者,目前正在接受泵治疗。我是OmniPod用户,这是一个一次性胶囊,可以粘在我的身上并分配胰岛素3天。它由个人糖尿病管理器[PDM](见下文)控制,该管理器控制进餐期间分配的胰岛素量、血糖读数,并且包含一个用于计算碳水化合物的食物指数。(来源:myomnipod.com)新的PDM有一个用于下载数据的USB端口。该软件对Windows用户免费(名为CoPilot的软件包),但不支持Mac。将PDM插入我的Mac后,它像任何其他USB设备一样安装,并为我提供了一个可读卷,

  6. Ruby 统计 gem - 2

    有哪些Rubygem可以执行数据处理? 最佳答案 我知道有3种从Ruby访问R的方法:RinRubyRSRuby通过Rserve-Ruby-Client预约RinRuby最慢,RSRuby最快,Rserve在性能上更接近RSRuby。然而,RSRuby是非常特定于平台的,您需要使用sharelib选项编译R。Rserve-Ruby-Client在这方面更容易,因为Rserve提供了一个TCP套接字服务器,您可以将命令发送到R解释器。AFAIK不幸的是,对于初学者来说,所有3个文档都没有很好的记录。Rserve-Ruby-Client

  7. ruby - Rails 中的字数统计? - 2

    假设我有一个带有标题和正文的博客模型。如何显示正文中的字数和标题中的字符数?我希望输出是这样的标题:洛伦正文:LoremLoremLorem这篇文章的字数是3。 最佳答案 "LoremLoremLorem".scan(/\w+/).size=>3更新:如果你需要将rock-and-roll作为一个词来匹配,你可以这样做"LoremLoremLoremrock-and-roll".scan(/[\w-]+/).size=>4 关于ruby-Rails中的字数统计?,我们在StackOver

  8. ruby-on-rails - 如何统计代码行数? - 2

    我试过rakestats但这似乎非常不准确。也许它忽略了几个目录? 最佳答案 我使用免费的Perl脚本cloc。示例用法:phrogz$cloc.180textfiles.180uniquefiles.77filesignored.http://cloc.sourceforge.netv1.56T=1.0s(104.0files/s,19619.0lines/s)-------------------------------------------------------------------------------Languag

  9. javascript - 使用Vue按秒统计 - 2

    我正在创建一个小型计时器Vue组件。用户需要能够启动和停止该计时器。到目前为止,这是我的组件:{{time}}exportdefault{props:['order'],data(){return{time:this.order.time_to_complete,isRunning:false,}},methods:{toggleTimer(){varinterval=setInterval(this.incrementTime,1000);if(this.isRunning){//debuggerclearInterval(interval);console.log('timerst

  10. javascript - Youtube api 未知部分统计 - 2

    我正在尝试获取统计数据的一部分,但出于某种原因我遇到了错误,我确实喜欢文档所说的。这是我要发送的内容:https://www.googleapis.com/youtube/v3/search?key=AIzaSyBsobUXzJvjjuHZsMiv7SZAkzVcSgc8F2c&maxResults=5&part=id,snippet,statistics&q=test没有统计部分,这是可行的。{"error":{"errors":[{"domain":"youtube.part","reason":"unknownPart","message":"statistics","locat

随机推荐