質問
の一環として、データ解析のワークフローしたいテスト、外れ値として自分のものに更なる計算となくその異常値.
がその場で発音を確認することがでのアウトライヤーパッケージには、様々な試験が必要な場合はこちらからその使用方法のための私のワークフロー.
解決 2
いDirkです。詳細最初に、なぜか外れ値.門外漢では数人の考える不審なコンクリート"悪い"価値のない限りが見えてきた理由をもってアウトライヤーは、共に暮らしている不透明です。
ひとつだろんどのようなアウトライヤーだけます。においてデータの周囲にいて、特定の分布やはり一部の関係データです。
こちらは一部の例
まデータを作成し、その汚れなアウトライヤー;
> testout<-data.frame(X1=rnorm(50,mean=50,sd=10),X2=rnorm(50,mean=5,sd=1.5),Y=rnorm(50,mean=200,sd=25))
> #Taint the Data
> testout$X1[10]<-5
> testout$X2[10]<-5
> testout$Y[10]<-530
> testout
X1 X2 Y
1 44.20043 1.5259458 169.3296
2 40.46721 5.8437076 200.9038
3 48.20571 3.8243373 189.4652
4 60.09808 4.6609190 177.5159
5 50.23627 2.6193455 210.4360
6 43.50972 5.8212863 203.8361
7 44.95626 7.8368405 236.5821
8 66.14391 3.6828843 171.9624
9 45.53040 4.8311616 187.0553
10 5.00000 5.0000000 530.0000
11 64.71719 6.4007245 164.8052
12 54.43665 7.8695891 192.8824
13 45.78278 4.9921489 182.2957
14 49.59998 4.7716099 146.3090
<snip>
48 26.55487 5.8082497 189.7901
49 45.28317 5.0219647 208.1318
50 44.84145 3.6252663 251.5620
それは多くの場合、最置検討のためにデータグラフィカル(い脳がりでスポッティングの異常値以上の数字)
> #Use Boxplot to Review the Data
> boxplot(testout$X1, ylab="X1")
> boxplot(testout$X2, ylab="X2")
> boxplot(testout$Y, ylab="Y")
を利用することができます。の場合は試験を返しますカットオフ値、または値が、中国の対米輸出がアウトライヤを使用できifelse取り付けられています。
> #Use Outlier test to remove individual values
> testout$newX1<-ifelse(testout$X1==outlier(testout$X1),NA,testout$X1)
> testout
X1 X2 Y newX1
1 44.20043 1.5259458 169.3296 44.20043
2 40.46721 5.8437076 200.9038 40.46721
3 48.20571 3.8243373 189.4652 48.20571
4 60.09808 4.6609190 177.5159 60.09808
5 50.23627 2.6193455 210.4360 50.23627
6 43.50972 5.8212863 203.8361 43.50972
7 44.95626 7.8368405 236.5821 44.95626
8 66.14391 3.6828843 171.9624 66.14391
9 45.53040 4.8311616 187.0553 45.53040
10 5.00000 5.0000000 530.0000 NA
11 64.71719 6.4007245 164.8052 64.71719
12 54.43665 7.8695891 192.8824 54.43665
13 45.78278 4.9921489 182.2957 45.78278
14 49.59998 4.7716099 146.3090 49.59998
15 45.07720 4.2355525 192.9041 45.07720
16 62.27717 7.1518606 186.6482 62.27717
17 48.50446 3.0712422 228.3253 48.50446
18 65.49983 5.4609713 184.8983 65.49983
19 44.38387 4.9305222 213.9378 44.38387
20 43.52883 8.3777627 203.5657 43.52883
<snip>
49 45.28317 5.0219647 208.1318 45.28317
50 44.84145 3.6252663 251.5620 44.84145
またはより複雑な例できる利用統計算重要な切り値が、こちらのルンド試験Lund,R.E.1975年に"テーブルの値試験のためのオプションに設定された値線形モデル",Technometrics,vol.17,no.4,pp.473-476.やプレスコット、P.1975年、"近似試験のためのオプションに設定された値線形モデル",Technometrics,vol.17,no.1,pp.129-132.)
> #Alternative approach using Lund Test
> lundcrit<-function(a, n, q) {
+ # Calculates a Critical value for Outlier Test according to Lund
+ # See Lund, R. E. 1975, "Tables for An Approximate Test for Outliers in Linear Models", Technometrics, vol. 17, no. 4, pp. 473-476.
+ # and Prescott, P. 1975, "An Approximate Test for Outliers in Linear Models", Technometrics, vol. 17, no. 1, pp. 129-132.
+ # a = alpha
+ # n = Number of data elements
+ # q = Number of independent Variables (including intercept)
+ F<-qf(c(1-(a/n)),df1=1,df2=n-q-1,lower.tail=TRUE)
+ crit<-((n-q)*F/(n-q-1+F))^0.5
+ crit
+ }
> testoutlm<-lm(Y~X1+X2,data=testout)
> testout$fitted<-fitted(testoutlm)
> testout$residual<-residuals(testoutlm)
> testout$standardresid<-rstandard(testoutlm)
> n<-nrow(testout)
> q<-length(testoutlm$coefficients)
> crit<-lundcrit(0.1,n,q)
> testout$Ynew<-ifelse(abs(testout$standardresid)>crit,NA,testout$Y)
> testout
X1 X2 Y newX1 fitted residual standardresid
1 44.20043 1.5259458 169.3296 44.20043 209.8467 -40.5171222 -1.009507695
2 40.46721 5.8437076 200.9038 40.46721 231.9221 -31.0183107 -0.747624895
3 48.20571 3.8243373 189.4652 48.20571 203.4786 -14.0134646 -0.335955648
4 60.09808 4.6609190 177.5159 60.09808 169.6108 7.9050960 0.190908291
5 50.23627 2.6193455 210.4360 50.23627 194.3285 16.1075799 0.391537883
6 43.50972 5.8212863 203.8361 43.50972 222.6667 -18.8306252 -0.452070155
7 44.95626 7.8368405 236.5821 44.95626 223.3287 13.2534226 0.326339981
8 66.14391 3.6828843 171.9624 66.14391 148.8870 23.0754677 0.568829360
9 45.53040 4.8311616 187.0553 45.53040 214.0832 -27.0279262 -0.646090667
10 5.00000 5.0000000 530.0000 NA 337.0535 192.9465135 5.714275585
11 64.71719 6.4007245 164.8052 64.71719 159.9911 4.8141018 0.118618011
12 54.43665 7.8695891 192.8824 54.43665 194.7454 -1.8630426 -0.046004311
13 45.78278 4.9921489 182.2957 45.78278 213.7223 -31.4266180 -0.751115595
14 49.59998 4.7716099 146.3090 49.59998 201.6296 -55.3205552 -1.321042392
15 45.07720 4.2355525 192.9041 45.07720 213.9655 -21.0613819 -0.504406009
16 62.27717 7.1518606 186.6482 62.27717 169.2455 17.4027250 0.430262983
17 48.50446 3.0712422 228.3253 48.50446 200.6938 27.6314695 0.667366651
18 65.49983 5.4609713 184.8983 65.49983 155.2768 29.6214506 0.726319931
19 44.38387 4.9305222 213.9378 44.38387 217.7981 -3.8603382 -0.092354925
20 43.52883 8.3777627 203.5657 43.52883 228.9961 -25.4303732 -0.634725264
<snip>
49 45.28317 5.0219647 208.1318 45.28317 215.3075 -7.1756966 -0.171560291
50 44.84145 3.6252663 251.5620 44.84145 213.1535 38.4084869 0.923804784
Ynew
1 169.3296
2 200.9038
3 189.4652
4 177.5159
5 210.4360
6 203.8361
7 236.5821
8 171.9624
9 187.0553
10 NA
11 164.8052
12 192.8824
13 182.2957
14 146.3090
15 192.9041
16 186.6482
17 228.3253
18 184.8983
19 213.9378
20 203.5657
<snip>
49 208.1318
50 251.5620
編集:私が行った。のルンド試験生重要な価値が比較される値の絶対値のstudantized残留(サテライ)
他のヒント
外れ値が心配な場合は、それらを捨てる代わりに、堅牢な方法を使用します。たとえば、lmの代わりにrlmを使用します。
&quot;それは難しいです&quot;。これの多くはコンテキスト依存であり、アプリケーションにこれを埋め込む必要がある場合があります。
- データはドリフト、トレンド、またはサイクルしますか?
- 変動は固定されていますか、それ自体が可変ですか?
- 「ベンチマーク」に使用できる他のシリーズはありますか?
外れ値パッケージ以外にも、 qcc パッケージは、品質管理の文献でこの領域をカバーしています。
他にも多くの分野があります。 堅牢な統計タスクビュー 。
outliers :: score
関数を試してください。いわゆる異常値を削除することはお勧めしませんが、極端な観察結果を知ることは良いことです。
library(outliers)
set.seed(1234)
x = rnorm(10)
[1] -1.2070657 0.2774292 1.0844412 -2.3456977 0.4291247 0.5060559 -0.5747400 -0.5466319
[9] -0.5644520 -0.8900378
outs <- scores(x, type="chisq", prob=0.9) # beyond 90th %ile based on chi-sq
#> [1] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
x[outs] # most extreme
#> [1] -2.345698