使用 R 计算标准差

Calculate standard deviation using R

使用 R 脚本解决以下问题: 一位过程控制专家表示,他有 95% 的信心认为新的生产过程每单位将节省 26 到 38 美元,更有可能节省大约 32 美元。
如果您要使用正态分布(通过应用经验规则)为这位专家的意见建模,您将对正态分布使用什么标准差? (将您的答案四舍五入到小数点后一位。

看来写这个问题的人很困惑,不知道他们问的是样本平均置信区间问题“95% 置信度”还是简单的总体正态分布问题。

让我们尝试合理化我们如何解决这个问题,我们会发现这个问题的措辞有一些问题:

他说他有 95% 的信心......[暂时忽略其他所有内容并假设这是均值问题的置信区间......我们将看到为什么这是错误的]......首先让我们计算正态分布 table 上的 z 分数,它对应于 0.95% 的累积概率。你说你想在 R 中做这个,所以使用 qnorm()

> qnorm(.95)

[1] 1.644854

现在我们知道节省的钱在:26 美元到 38 美元之间。如果他的 95% 置信度暗示这是一个样本均值,我们现在知道的 26 美元比样本均值低 1.644854 个标准误差,而我们现在知道的 38 美元比样本均值的估计均值高 1.644854 个标准误差...(如果这是一个置信度区间问题)。他们的样本平均值大概是 32 美元。

假设我们尝试解决 st dev。标准错误是:

StDev / sqrt(样本大小) 置信区间为:.

下限:32 - 1.644854 * StDev / sqrt(样本大小);

上限:32 + 1.644854 * StDev / sqrt(sample size) # 我们将在下面使用它

我们可以尝试通过将上限公式放在 = 符号的左侧并将上限公式 38 放在右侧来尝试代数求解 StDev:

32 + (1.644854 * StDev / sqrt(sample size)) = $38 ...现在求解 StDev

StDev = (sqrt(sample size)* (38-32))/1.644854) ...如果我没有在没有纸的情况下在午夜搞砸我的心算...

这里有一个问题,这个修辞练习是为了指出:我们仍然有 2 个变量。您发布的问题根本没有告诉我们足够的信息来解决这个问题,假设这是样本的置信区间。如果这是他们的目标,我们就有点不走运了。

看起来 95% 的置信度条款(并且没有提及样本均值)是为了让你失望,但实际上,它只是让问你这个问题的人看起来对他们问你什么问题。

如果你 re-frame 这个问题并假设 1. 95% 置信度子句是垃圾信息 2. 我们谈论的是给定观察值落在或低于给定值的个体概率,而不是我们对平均观察有 95% 的置信度,并且 3. 写问题的人不理解短语 95% 置信度的正确用法,或者当他们写它时已经筋疲力尽……或者你 mis-transcribed 问题。 .. 那么问题应该这样表述:“我们知道,在所有情况下,95% 的客户节省的费用不超过 38 美元,而 5% 的客户节省的费用为 26 美元或更少。”在这种情况下,我们可以完全放弃标准误差项,然后我们只需要担心总体的标准差和均值:

人口均值为 32

均值 + 1.644854 标准差为 38(95% 的客户节省的钱不超过这个)

38 - 32 = 6(这等于 1.644854 StDev):代数上是这样写的:

6 = 1.644854 * 标准偏差

两边除以 1.644854:

6/1.644854 = 标准差

标准差 = 3.64774

让我们验证一下我们做对了:

> qnorm(.95,mean=32,sd=3.64774) # Verify in R that the stdev we calculated is correct: .95 cumulative probability, mean is 32 and we assert that the StDev is 3.64774. We got:

[1] 38

38 美元或更少是 95% 的人会得到的。这似乎是正确的。

> qnorm(.05,mean=32,sd=3.64774)

[1] 26

26 或更少是储蓄最少的 5% 的客户得到的。这个好像也对。

总结:

  1. 您发布的问题没有任何意义。要么不完整mis-transcribed,要么写的人好像有点糊涂
  2. 如果您忽略 95% 置信度子句并重新设计问题以进行猜测以弥补其模糊性,则答案为:标准差为 3.6。

我将此代码用于下限 =2 和上限 =3,并且对于较低的限制值它工作正常,但它不适用于较大的数字,除非我将 0.5 添加到 sd

> f <- function(lwr, upr){
>   c("mean"= (upr+lwr)/2, 
>     "stddev" =  (upr-lwr)/4, 
>      "sdRound" =round((upr-lwr)/4,1)) } 
> f(2,3)

有了这个,我得到的答案是:

mean stddev sdRound
2.50 0.25 0.20

我不能在 R 中使用四舍五入的值。正确答案是 0.3,因为四舍五入为 0.3 时 0.25。 当我在下面插入这个 sd=0.3 时,我得到了正确的上限(以及下限)

> upperlimit = round(qnorm(0.95, mean=2.5, sd=0.3),0) 
> lowerlimit = round(qnorm(0.05, mean=2.5, sd=0.3)) 

上限=3 下限=2

这也适用于 f(6,9)

根据正态分布的经验法则:

68% 的数据在一个标准差内,95% 在两个标准差内,99.7% 在三个标准差内。

正如数据所说的 95% 置信度,数据将落在 2 个标准差范围内。

所以,min_value:26=mean-2standard_deviation 或者,max_value:38=平均值+2standard_deviation

给定,均值=32,求解以上两个方程之一,standard_deviation=3.0