俺的学习笔记

Wednesday, January 16, 2019

各种控制图

XmR or ImR

Individual and Moving Range Chart.
有两个条件,1)数值是连续的。2)数值的subgroup=1
这种控制图的上下限是通过moving range计算得到的:
其中的d2=1.128,D4=3.267,是通过查这个表在subgroup=2时的值得到的。为了防止网页失联,俺在这里又复制了一个
例子:
用R在导入了qcc包以后也可以做XmR图(控制界限和手算的一致)
> library(qcc)
> my.xmr.raw=c(12.010,11.990,11.990,12.010,12.020,11.975,12.000,12.014,12.001,11.999,12.010,12.001,12.002,11.990,12.012)
> my.xmr.x = qcc(my.xmr.raw, type = "xbar.one", plot = TRUE)
> my.xmr.raw.r = matrix(cbind(my.xmr.raw[1:length(my.xmr.raw)-1], my.xmr.raw[2:length(my.xmr.raw)]), ncol=2)
> my.xmr.mr = qcc(my.xmr.raw.r, type="R", plot = TRUE)

X-Bar and Range Charts

这个跟刚才的那个x-individual的区别就在于subgroup的个数,这个的size=n,刚才的等于1。

X-bar:

平均值这么算:,这里面n是数据的个数
上限值这么算:
下限值不用说应该这么算:
这里的面A2需要查表,x两横是各个分组平均值的平均值,即,其中k是组数(group数)。

R:

R值:
平均值:,k是组数(group数)。
上限值:
下限值:,D3和D4还是要查表
这个网址后面有一个例子。可以参考一下如何计算上下限和平均值。

描述属性数据(attribute data)的控制图

C control charts

c charts用来监视计数的属性数据,在一个固定大小的subgroup。C charts的条件是属性数据发生的机会很大,但是实际发生的数量却很小。比如,工厂中发生伤害事故的数值。一个工厂中发生伤害事故的机会有很多很多,但是实际发生的情况却非常非常少。
C控制图一般用来监视某流程在某一固定时间间隔的缺陷数或非遵守事项(nonconformities)数,比如每小时,每天,每周,每月,每班等等。
一般来讲起初的单元系列用来估算控制值(上下限)。所以起始时期的process必须是稳定的。
上下限确定以后,就可以用来监视缺陷的个数,当某一值落到了界限外,就可以说process”失控“了,某些特殊原因(assignable cause)造成了这种情况。

U control charts

刚才的C charts是检查某一个单元发生的缺陷的个数,而U charts检查的是多个单元的缺陷个数,然后算出每个单元的发生的平均值。也就是说c charts要求是group的大小固定,而u charts是算出来多个单元的平均值。
关于c和u控制图,这里有篇文章说得很清楚。
简单来说,这两个控制图都是用来监视计数数据的波动情况的。区别仅仅在于subgroup的大小,如果固定就用c,变化就用u:If the subgroup size remains constant, the c control chart is used. If the subgroup size varies, the u control chart is used. 

np and p charts

这两种控制图用来监视只有两种可能性的数据,yes/no,成功/失败,通过/不通过等等。
np图用来监视当subgroup的大小相同,p图用来监视当subgroup的大小是可变的。

关于怎么使用控制图,这里有一个很好的总结

如何用控制图判断一个process是否稳定

这篇文章说得简单明了。
#

Control Chart Rule

West-gard
Nelson- Juran
AIAG
Mont-gomery
Western
Electric
IHI
1
n points above UCL or below LCL
1
1
1
1
1
1
2
Zone A: n of n+1 points above/below 2 sigma
2
2
2
2
2
2
3
Zone B: n of n+1 points above/below 1 sigma
4
4
4
4
4
n points in a row above/ below center line
8
9
7
8
8
8
5
Trends of n points in a row increasing or decreasing
7
6
6
6
6
6
Zone C: n points in a row inside Zone C (hugging)
15
15
15
15
7
n points in a row alternating up and down
14
14
14
8
Zone C:n points in a row outside Zone C
8
8
8
9
Zone B: n points above/ below 1 sigma; 2 points one above, one below 2 sigma
4
可以稍微简单点记,不用记那么多规则:
  1. 超过3σ的1个点
  2. 超过2σ的2/3个点 (3个中2个)
  3. 超过1σ的4/5个点 (5个中4个)
  4. 在中心线同一侧连续8个点
  5. 上升或下降趋势连续7个点。
这样就非常好记了!简单!!

Labels: ,

Monday, December 10, 2018

假设检验的总结/Summary of Hypothesis Test

到这里终于把下面的Hypothesis test都学完了。
不过,其实具体的做法不太重要,关键是要记住在什么情况下用什么方法就可以了(适用于什么样的数据,测试的是均值还是方差,要不要求是正规分布等等)。这个可以从网上找找其应用的例子即可。
※点下面的链接即可跳转到相应的文章。
《Rで統計学を学ぶ》有很好的参考资料。

Labels: , ,

ANalysis Of Means (ANOM)

ANOM=analysis of means这个是用来测试3个以上的样本的均值的。教材里面说是检测3个以上的样本的proportion(比例)。
在R里面没有相应的函数(似乎可以通过package追加)。在minitab中有分析方法。下面是从minitab资料里引用的。
ANOM其实是用控制图的ANOVA。其目的也是来检测多个样本的均值。但是其区别在于,ANOVA检测的是各个样本之间的统计学差异,而ANOM检测的是各个样本与总体平均的统计学差异。
Analysis of means is a graphical alternative to ANOVA that tests the equality of population means. The graph displays each factor level mean, the overall mean, and the decision limits. If a point falls outside the decision limits, then evidence exists that the factor level mean represented by that point is significantly different from the overall mean.
For example, you are investigating how temperature and additive settings affect the rating of your product. After your experiment, you use analysis of means to generate the following graph.
The top plot shows that the interaction effects are well within the decision limits, signifying no evidence of interaction. The lower two plots show the means for the levels of the two factors, with the main effect being the difference between the mean and the center line. In the lower left plot, the point representing the third mean of the factor Temperature is displayed by a red symbol, indicating that there is evidence that the Temperature 200 mean is significantly different from the overall mean at α = 0.05. The main effects for levels 1 and 3 of the Additive factor are well outside the decision limits of the lower right plot, signifying that there is evidence that these means are different from the overall mean.
Comparison of ANOM and ANOVA
ANOVA tests whether the treatment means differ from each other. ANOM tests whether the treatment means differ from the overall mean (also called the grand mean).

Often, both analyses yield similar results. However, there are some scenarios in which the results can differ:
If one group of means is above the overall mean and a different group of means is below the overall mean, ANOVA might indicate evidence for differences where ANOM might not.
If the mean of one group is separated from the other means, the ANOVA F-test might not indicate evidence for differences whereas ANOM might flag this group as being different from the overall mean.
One more important difference is that ANOVA assumes that your data follow a normal distribution, while ANOM can be used with data that follows a normal, binomial, or Poisson distribution.

Labels: , ,

Friday, December 7, 2018

Van der Waerden Normal scores test

这个Van der Waerden test是用来测试k个样本的分布是否相等。
Van der Waerden测试用来Ordinal数据,它把排序数据(rank data)转换成标准正太分布的分位数(quantile)后做测试,因此也叫normal score test。
这个R里没有对应的函数(需另外安装软件包),所以也就不必深究它的具体做法,只要记住这个是测试3个以上样本Ordinal数据分布情况的即可。

Labels: , ,

Wednesday, December 5, 2018

Kruskal-Wallis test/Friedman test

对于Ordinal Data的多群检测。可以用Kruskal-Wallis test或Friedman test来测中间值(median)的同一性。
※注意,多群检验,重复做两-两之间的两群检验是不行的,原因在学习ANOVA的时候解释过了。
如果多群是独立的数据,就用Kruskal-Wallis test
如果是相关的(paired),就用Friedman test

这里的第12.5章,有个pdf文件说的比较清楚,还有例子。
The Mann-Whitney Test looks for differences in median values between two samples.
Both the Kruskal-Wallis and Friedman Tests look for differences in median values between more than two samples.
The Kruskal-Wallis Test is used to analyse the effects of more than two levels of just one factor on the experimental result. It is the non-parametric equivalent of the One Way ANOVA.
The Friedman Test analyses the effect of two factors, and is the nonparametric
equivalent of the Two Way ANOVA.
也就是说,Kruskal-Wallis Test是测试受1个因素影响的,多个样本的median的差异(独立多群)。而Friedman Test则是2个因素(paired多群?)。
这两个检测方法都是针对Ordinal Data的,比如排序啊,满足度啊之类的顺序尺度而不是实际的数值。
例子:
对医院的12名新护士的技术水准打分,得到的结果如下:
※注意,各个组的人数完全可以不等
内科50805881
外科67697288
眼科54627577
请问这三个科室的护士技术水平有差异吗?
这个因为是受一个因素影响的,多群的平均值判定,而且是ordinal data,所以用Kruskal-Wallis Test。
因为是Ordinal data,所以计算方法如下:
1.先俺上述得分从小到大排列好,并列出其排名
科室
得分505458626769727577808188
名次123456789101112
※注:得分相同的名次按平均值计算,比如如果第3和第4得分相同,则第三第四名次都是(3+4)/2=3.5。
2.然后把各个科室的名次列出来,并计算其名次的和以及平均值

平均
内科110311256.25
外科56712307.5
眼科2489235.75
然后用如下公式计算出其H值:
其中N是数据的总个数,k是群数,Ri是各个群组的名次和。上式计算得到H=0.500。
由于有3个群组,因此自由度=(3-1)=2。
计算出H值以后,在于样本数较小的情况,Hcrit可以通过查表得到。
对于样本数较大的情况(一说大于5),Hcrit可以用Χ平方代替。
当然了,这些都很麻烦,其实用R就可以简单地计算出来了。
> vx=c(50,80,58,81)
> vy=c(67,69,72,88)
> vz=c(54,62,75,77)
> kruskal.test(x=list(vx,vy,vz))

  Kruskal-Wallis rank sum test

data: list(vx, vy, vz)
Kruskal-Wallis chi-squared = 0.5, df = 2, p-value = 0.7788
上面是直接输入数据。当然了,输入名次也可以得到相同的结果
> vx=c(1,10,3,11)
> vy=c(5,6,7,12)
> vz=c(2,4,8,9)
> kruskal.test(x=list(vx,vy,vz))

  Kruskal-Wallis rank sum test

data: list(vx, vy, vz)
Kruskal-Wallis chi-squared = 0.5, df = 2, p-value = 0.7788

下面看看Friedman test
这篇文章说的似乎比较清楚,而且和Kruskal-Wallis test进行了比较。
它说Friedman test检测的是两个要素的影响。
比如:药物的浓度和时间对细菌数量的影响。
0(h)
1(h)
2(h)
3(h)
濃度a(%)
100
90
80
73
濃度b(%)
100
80
70
60
濃度c(%)
100
60
45
34
这种情况就可以用Friedman test来做。
具体做法略过,可以用R的friedman.test来做。
> va=c(1.00, 0.90, 0.80, 0.73)
> vb=c(1.00, 0.80, 0.70, 0.60)
> vc=c(1.00, 0.60, 0.45, 0.34)
> friedman.test(y=matrix(c(va,vb,vc),ncol=3))

    Friedman rank sum test

data: matrix(c(va, vb, vc), ncol = 3)
Friedman chi-squared = 6, df = 2, p-value = 0.04979
※当然了,直接输入数字而不是百分比也是同样的结果。
> va=c(100.0, 90.0, 80.0, 73.0)
> vb=c(100.0, 80.0, 70.0, 60.0)
> vc=c(100.0, 60.0, 45.0, 34.0)
> friedman.test(y=matrix(c(va,vb,vc),ncol=3))

    Friedman rank sum test

data: matrix(c(va, vb, vc), ncol = 3)
Friedman chi-squared = 6, df = 2, p-value = 0.04979
再进一步,直接输入排序,也可以得到同样的结果。
0(h)
1(h)
2(h)
3(h)
濃度a(%)
100
90
80
73
2
35.56
濃度b(%)
100
80
70
60
2
5.579.5
濃度c(%)
100
60
45
34
2
9.51011
> va=c(2,3,5.5,6)
> vb=c(2,5.5,7,9.5)
> vc=c(2,9.5,10,11)
> friedman.test(y=matrix(c(va,vb,vc),ncol=3))

    Friedman rank sum test

data: matrix(c(va, vb, vc), ncol = 3)
Friedman chi-squared = 6, df = 2, p-value = 0.04979

https://plaza.umin.ac.jp/~health-stat/wpsystem/wp-content/uploads/2017/01/chapter8_slide.pdf
https://data-science.gr.jp/implementation/ist_r_kruskal_wallis_test.html
https://towardsdatascience.com/what-is-a-p-value-b9e6c207247f
https://towardsdatascience.com/statistical-significance-hypothesis-testing-the-normal-curve-and-p-values-93274fa32687

Labels: , ,

Levene Test

Levene Testは日本語でLeveneの等分散性検定といいます。
Leveneの等分散性検定はBartlett検定の代わりによく用いられるが、正規分布あるいはそれに近い分布の標本の等分散性検定にはBartlett検定を使った方が感度がよいと言われています。
Levene検定の帰無仮説と対立仮説は:


也就是说,Levene Test是检验多个样本的方差是否相同的检验方法,和Bartlett test一样。但是在样本不是正规分布的情况下使用。
1.Bartlett検定
母集団の分布が正規分布もしくは、正規分布に近い分布をしているときに有効な検定です。
2.Levene検定
正規分布を満たさない母集団がある場合に適用することがあります。
具体不是学统计学的,就不深究了,在R里,安装了lawstat软件包即可使用 levene.test()函数做Levene Test。这篇《Rによるルビーン検定》里介绍的相当清楚。
只要记住Levene Test是用来测多个样本之间的方差是否相同的测试即可

Labels: , ,

Tuesday, December 4, 2018

Bartlett Test

刚才的ANOVA Test是用来测试3个以上的组的平均值有无差异,现在这个Bartlett Test是用来测试3个以上的组的方差有无差异
A组301, 311, 325, 291, 388, 402, 325, 361, 287, 261, 238, 362
B组197, 180, 178, 260, 247, 199, 179, 134, 163, 200
C组209, 331, 192, 155, 234, 290, 175, 116, 285, 216, 237, 301
D组343, 247, 316, 395, 324, 138, 245, 228, 214, 374, 235
这个可以用R的bartlett.test函数来计算:
vx=c(301311325291388402325361287261238362,
 197, 180178260247199179134163200209331192155,
 234, 290175116285216237301343247316395324138,
 245, 228214374235)
> fx=factor(rep(c("A", "B", "C", "D"), c(12, 10, 12, 11)))
> bartlett.test(formula=vx~fx)

  Bartlett test of homogeneity of variances

data: vx by fx
Bartlett's K-squared = 5.2629, df = 3, p-value = 0.1535
(from here)

Labels: , ,

Sunday, December 2, 2018

ANalysis Of VAriance (ANOVA) 分散分析

注意,虽然ANOVA叫analysis of variance(分散分析)但它其实比较的是平均值
     2つの平均値の相違を検討するにはt検定を用いるが、 3つ以上の平均値の相違を検討する場合にはANOVAを用いる
    分散分析には2つ以上の変数間の相違を、全体的または同時に、さらに変数を組み合わせて検討する。
    全体的な相違が認められた場合、どこに相違があるのかも検討する。
 すべての群を比較するのではなく、要因による効果を検定する。
 従って、どの群とどの群の平均値が有意差があるかはわからない。→多重比較検定
 ↓分散を分析するのではなく、分散を用いて、多群の平均値を分析する検定法である。
 分散分析には、要因分散分析反復測定分散分析とがある。
 要因が2つ以上ある場合は、主効果だけではなく、複数の要因による交互作用を検定する。
 個々のデータを変動させている要因を分解し、分散分析表を作成して検定する。
 要因変動誤差変動から、F値をもとめる。
 ↓F値は、フィッシャーのイニシャルである。
(from here)
根据教材,ANOVA用来分析interval/ratio数据的,3个以上样本平均值有无差异。
那么为什么比较3个以上的样本,不用t-test两两比较,而要用ANOVA方法来比较呢?
比如A,B,C三个样本,彼此之间的t-test的p-value都是0.05,那么3个样本之间至少有一对之间存在有统计意义的差的概率(p-value)为:1-(1-0.05)*(1-0.05)*(1-0.05)=0.142625。

在R里有函数aov、anova和oneway.test三个函数,这篇文章这篇文章说的都比较清楚。
比如,有下面4组数据,分析他们的平均值有无差异:
A组56, 48, 72, 60, 55
B组60, 62, 76, 84
C组78, 53, 62, 44, 90, 57
D组77, 72, 83, 81, 91, 83
vx=c(56, 48, 72, 60, 55, 60, 62, 76, 84, 78, 53, 62, 44, 90, 57, 77, 72, 83, 81, 91, 83)
fx=factor(rep(c("A", "B", "C", "D"), c(5, 4, 6, 6)))
anova(aov(vx~fx))
Analysis of Variance Table

Response: vx
          Df Sum Sq Mean Sq F value Pr(>F)
fx        3  1629.2 543.06 3.9141 0.02708 *
Residuals 17 2358.6 138.74
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>
Pr(>F)=0.02708,小于0.05说明有统计学意义上的差异。
用oneway.test来做可以得到同样的结果
oneway.test(vx~fx, var.equal=T)

  One-way analysis of means

data: vx and fx
F = 3.9141, num df = 3, denom df = 17, p-value =0.02708

Labels: , ,