查看数据是否在R中正常分布

Cod*_*Guy 56 r normal-distribution

有人可以帮我填写R中的以下功能:

#data is a single vector of decimal values
normally.distributed <- function(data) {
if(data is normal)
return(TRUE)
else
return(NO)
}
Run Code Online (Sandbox Code Playgroud)

Ian*_*ows 181

正态性测试并不像大多数人认为的那样做.夏皮罗的测试,安德森达林和其他人都是零假设检验,反对正常假设.这些不应该用于确定是否使用正常的理论统计程序.事实上,它们对数据分析师几乎没有任何价值.在什么条件下我们有兴趣拒绝数据正态分布的零假设?我从来没有遇到过正常测试是正确的事情.当样本量很小时,甚至没有检测到与正常性的偏差,当样本量很大时,即使与正常性的最小偏差也会导致被拒绝的空值.

例如:

> set.seed(100)
> x <- rbinom(15,5,.6)
> shapiro.test(x)

    Shapiro-Wilk normality test

data:  x 
W = 0.8816, p-value = 0.0502

> x <- rlnorm(20,0,.4)
> shapiro.test(x)

    Shapiro-Wilk normality test

data:  x 
W = 0.9405, p-value = 0.2453
Run Code Online (Sandbox Code Playgroud)

因此,在这两种情况下(二项式和对数正态变量),p值> 0.05导致无法拒绝空(数据是正常的).这是否意味着我们得出结论数据是正常的?(提示:答案是否定的).不拒绝与接受不是一回事.这是假设测试101.

但是更大的样本量呢?让我们那里分布的情况非常接近正常.

> library(nortest)
> x <- rt(500000,200)
> ad.test(x)

    Anderson-Darling normality test

data:  x 
A = 1.1003, p-value = 0.006975

> qqnorm(x)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 在此输入图像描述

在这里,我们使用具有200个自由度的t分布.qq图显示分布比您在现实世界中可能看到的任何分布更接近正常,但是测试以非常高的置信度拒绝正态性.

对正态性的重大检验是否意味着在这种情况下我们不应该使用正态理论统计量?(另一个提示:答案是否:))

  • 对于线性回归... 1.不要太在意正常性.CLT快速接管,如果您拥有除最小样本之外的所有样本以及甚至是远程合理的直方图,您都可以.2.担心不平等的差异(异方差性).我担心这个(几乎)默认使用HCCM测试.比例位置图将给出一些关于这是否被打破的想法,但并非总是如此.此外,在大多数情况下,没有先验理由假设相等的方差.3.异常值.烹饪距离> 1是合理的原因.这些是我的想法(FWIW). (18认同)
  • @ stackoverflowuser2010,这很可爱.我特别喜欢个人拍摄.你可能想在尝试之前尝试使用谷歌搜索我. (14认同)
  • 非常好.大的后续问题(我还没有找到一个满意的答案,并希望得到一个简单的答案给我的学生,但我怀疑有一个)是:如果一个人正在使用回归的图形诊断,如何(**其他**比拟合模型/遵循一个强大的程序对某一类违规行为[例如稳健模型,广义最小二乘],并显示其结果没有有趣的差异)是否决定是否担心关于特定类型的违规行为? (9认同)
  • @ stackoverflowuser2010,以下是对您的简单问题的两个明确答案:(1)无论收集多少数据,您都无法确定它是从完全正态分布生成的.(2)您的数据不是从完全正态分布生成的(没有真实数据). (5认同)
  • @IanFellows:你确实写了很多,但你没有回答OP的问题.对于数据是否正常,是否有单个函数返回TRUE或FALSE? (3认同)
  • 我已多次阅读并重新阅读此帖子.写作清楚吗?(提示:答案是"不").我想简单回答一个关于数据是否正常分布的简单问题.这篇文章是否提供了解决方案?(提示:答案是"不"). (3认同)
  • 我想知道为什么你使用"Anderson-Darling"测试来证明这些测试的不足."夏皮罗威尔克"测试怎么样?在多少个案例中,主观测试就像用于接受真正非正态分布式样本集的qq-plot一样正常分布? (3认同)

Bri*_*ggs 23

我也强烈推荐SnowsPenultimateNormalityTestTeachingDemos包中.但是,对于您来说,函数文档比测试本身更有用.使用测试前请仔细阅读.


42-*_*42- 12

SnowsPenultimateNormalityTest当然有其优点,但你可能也想看看qqnorm.

X <- rlnorm(100)
qqnorm(X)
qqnorm(rnorm(100))
Run Code Online (Sandbox Code Playgroud)


Kar*_*arl 5

考虑使用函数shapiro.test,该函数执行 Shapiro-Wilks 正态性检验。我对此很满意。

  • 这通常保留给小样本(n &lt; 50),但可以用于高达 ~ 2000 的样本 - 我认为这是一个相对较小的样本量。 (3认同)