Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 正态分布测试整数/离散数据_R_Integer_Normal Distribution_Anova - Fatal编程技术网

R 正态分布测试整数/离散数据

R 正态分布测试整数/离散数据,r,integer,normal-distribution,anova,R,Integer,Normal Distribution,Anova,我想在R中进行方差分析,之前必须检查正态分布。因此,我可以使用shapiro.test(y)或ad.test(y)。但是,这对于离散/整数值是不可能的。我测试了以下内容: y <- rnorm(100, 2.5, 1) ad.test(y) # p-value = 0.864 shapiro.test(y) # p-value = 0.9052 y在离散数据上使用正态性测试没有问题(尽管这样做可能从根本上被误导,特别是如果数据是分类的而不是真正的数字)。正如@Dason指出的,取整正态数

我想在R中进行方差分析,之前必须检查正态分布。因此,我可以使用
shapiro.test(y)
ad.test(y)
。但是,这对于离散/整数值是不可能的。我测试了以下内容:

y <- rnorm(100, 2.5, 1)
ad.test(y) # p-value = 0.864
shapiro.test(y) # p-value = 0.9052

y在离散数据上使用正态性测试没有问题(尽管这样做可能从根本上被误导,特别是如果数据是分类的而不是真正的数字)。正如@Dason指出的,取整正态数据会改变其分布,在标准偏差很小的情况下,这种变化尤其明显。要查看标准偏差的影响,请按以下方式重复您的实验:

y <- rnorm(100, 250, 10)
ad.test(y) # p-value = 0.7949
y <- round(y)
ad.test(y) # p-value = 0.6395

y您看到的结果正是您应该看到的结果。四舍五入的正常数据确实不正常。特别是当你的标准差很低的时候。如果你有
y是的,我知道“整数”的公式可能不精确。我指的是顺序标度(1-2-3-4)的离散值。据我所知,方差分析也是分析这类(有序标度)数据的合适方法。但是,对于R中给定的数据集,我如何检验方差分析假设?离散数据不是正态分布的。不需要测试。这些数据是什么?通常,disrete数据是计数数据,可以在不假设正态分布的情况下进行分析,例如,使用泊松回归或类似的GLM。请尽量避免将同一问题交叉发布到多个站点。选择最合适的一个。如果您选择错误,您可以随时标记迁移。首先,感谢您的回答。我认为如果R中有一个函数处理这个问题,那么这可能是一个与R相关的问题。我以前已经看过你的第一个链接了。我的印象是,很多研究人员只是忽略了假设,如果他们真的不符合。我会把我的具体问题贴在那里。非常感谢。@Agent49您提出的问题是合理的,而且显然与R有关。也许你应该问的问题与R无关,最好由统计学专家来回答。你是对的,很多研究人员忽视了假设。你不想成为这些研究人员中的一员,这很好。切题地说,《统计数据出错》一书是一本精彩的读物,它展示了当研究人员使用他们并不真正理解的方法时可能发生的一些问题。我完全同意,是的,我有时有点过于准确,无法快速解决问题。。。我肯定应该看看那本书。谢谢。:)@约翰:这些数据不是四舍五入的——它们只是离散的分类数据;这显然是不正常的。@Glen_b问题本身并没有给出数据的性质,尽管它出现在随后的评论中,而在我写这个答案时,这个评论并不存在。在任何情况下,测试这些数据的正态性都不存在内在问题,即使测试的结论是一个被放弃的结论。
y <- rnorm(100, 250, 10)
ad.test(y) # p-value = 0.7949
y <- round(y)
ad.test(y) # p-value = 0.6395