我希望在使用以下方法生成一组随机数后找到极值(任何大于或小于平均值的三倍标准偏差):
num = rnorm(1000)
我的代码如下所示:
extreme = function(varname) {
for(i in varname) {
count = 0
m = mean(varname)
sd = 3*sd(varname)
if(i<(m-sd) || i>(m+sd)) {
count = count + 1
}
}
if(count>0) {
print(paste("There are ", count, " extreme values found.", sep = ""))
} else print("There are no extreme values.")
}
我总是得到&#34;没有极端的价值观。&#34;我是R中的初学者,所以在正态分布后,任何随机生成的数字组中是否真的没有极值?
答案 0 :(得分:2)
抛开编程问题,这个问题也提出了一个统计问题。
如果您的样本量很大,那么根据您的值计算的样本SD将接近人口SD,并且从平均值询问超过3SD的值可能是有意义的。
但是如果您的样本很小,任何异常值都会使您计算的值增加为样本SD。这意味着您可能永远无法获得3个SD。
将Z定义为。
对N个观测值的样本,Z永远不会大于 。因此,n必须是11或更大,因为异常值可能超过平均值3 SD。 Grubbs异常值测试基于这个想法,所以有自己的表格,表明平均值中有多少Sds为alpha的设定值定义了一个异常值。
Grubbs,F。E. Procedures for detecting outlying observations in samples。 Technometrics 11,1-21(1969)。
答案 1 :(得分:0)
你首先需要一个异常值。所有测量都表现良好,并从相同的分布中正确绘制。他们都是正常分配的合法子女。异常值正在寻找突变体/半裸/外星人。你需要有一个外星人。
让我们说,为了便于讨论,您正在测量芯片上焊球的共面性(在混凝土中将其接地)。可以说每个部件有1000个焊球。让我们说制造技术人员将焊球放入料斗,溢出一些错误尺寸(太小),并没有告诉任何人。让我们说有10%的坏球。
从物理上讲,这意味着,有两个集群。较小的球将具有更靠近基板的中心位置,并且它们将具有更小的自然发生的变化。
让我们说POR(记录过程)焊球是12毫克+/- 1.2毫克,而错误尺寸的焊球是10毫克+/- 1.0毫克。您可以将其模拟为两个正常组件。
N <- 1000 #solderballs
n1 <- N *0.90 # good solderballs
n2 <- N * 0.10 # bad solderballs
mu1 <- -(12-10) *0.10 #weighted impact to the center of this cluster
mu2 <- (12-10) *0.90 #weighted impact to the center of this cluster
sig1 <- 1.2
sig2 <- 1.0
num = c(rnorm(n1,mean=mu1,sd=sig1),rnorm(n2,mean=mu2,sd=sig2))
是的代码。
您不希望开始针对您不确定的公式投掷它。就像斗牛斗士一样,当你将它们从传球者传递给传球手时,你想要在水桶中保留尽可能多的水。将数据放入摘要统计意味着您保留一个数字并丢失999.这可能是一个信息损失操作。
人类大脑是已知最好的计算机。它使深蓝色或天河看起来像算盘。先使用它。让它看看你拥有的一切。使用最适合工作的工具来打败您的数据。站在巨人的肩膀上。
我的建议:EDA(又称探索性数据分析)。 NIST是美国国家标准与技术研究院,在这里提供了很好的工具。他们的爱因斯坦很聪明,并且制造了工具来帮助人们 - 你和我。区区凡人。所以这是EDA链接。 http://www.itl.nist.gov/div898/handbook/eda/eda.htm
制作一些情节。好的情节告诉你你的数据。教科书是4-plot。如果你没有4个绘图数据,那么你就不知道了。在你做了一些人类可读和可理解的情节之前,不要制作方程式。它会保护你,让你的结果变好。
除此之外:我不认为R有一个很好的图书馆来制作这些情节,我希望有。去“4plot(mydata)”并得到4-plot.
会很高兴因此,我们制作趋势图,滞后图,直方图和正态概率图。这些是将数据输入大脑进行训练的方法。
在这里,你可以用这个来制作图表:
plot(num, type="l")
lines(lowess(num,f=1/10),col="Red")
lag.plot(num)
hist(num,probability=TRUE, breaks=20)
qqnorm(num)
grid()
鉴于问题的性质,JEDEC说“计算范围”或“计算从平均值到尾部的最大距离”。这是两个不同的指标,当您查找“Tiffanies”时,它们开始能够检测到大约2.8到3.0标准差的异常值。如果您正在寻找1个异常值或100个(甚至2个),这是一个根本不同的主张。
就个人而言,对于“蒂芙尼问题”,我的指标可以在1.55标准偏差的情况下可靠地触发。不过,你最好的开始是使用JEDEC及其2.8-3.0的检测开始。
祝你好运。