將GrubbsOutlierTest2集成到多變量數據表中之前說過,我正在處理一組使用SQL腳本連接的複雜數據表。在這個社區的幫助下,我設法創建了一個基於“應用程序”的腳本,該腳本根據用戶選擇的條件創建繪圖和分佈。
問題的最後一部分是處理那些討厭的異常值。像往常一樣,我的問題在於循環遍歷標識異常值的測試條件,然後從數據集中刪除它們。我知道刪除它們可能會有風險,但鑑於我們的複雜測試,我們的部件分佈嚴密或災難性地失敗。如果g> g0去尋找異常值並刪除它們,我試圖恭維。
附:主表和主表中的3個子集。
我找到了這個線可以在一個列中完成它但是又如何循環通過一切?
我有很多腳本循環這些條件,但我無法弄清楚正確的組合。
再一次感謝你的幫助。
Re:將GrubbsOutlierTest2集成到多變量數據表中更新:我設法讓GrubbsOutlier完成工作。我可以採取一個測試條件,並得到我需要的東西。我抓住了一個For循環來捕獲兩個測試條件但是它掛了。
您可以針對示例數據_ 1晶圓(test_3).jmp運行此腳本,並查看我正在尋找的輸出。我很感激添加第二個Trmode的任何幫助,甚至在具有多個晶圓樣本數據的數據集上執行此操作_ 6個晶圓(test_3).jmp
解決此問題後,我將嘗試執行If(g> g0)Loc(<異常值>),然後從數據集中刪除它們。
謝謝
dt = Current Data Table();
dtsum = dt << Summary(
Group( :channel, :trmode ),
Interquartile Range( :Output ),
Freq( "None" ),
Weight( "None" ),
// invisible
);
Current Data Table( dt );<BR />
// <INSERT for="" loop="" here="">
dist = dt << Distribution(
Y( Column( "Output" )),
By( Column( "channel" ) ),
Normal Quantille Plot( 1 ),
Fit Distribution(
Normal(
Goodness of FIt( 1 )
)
),<BR />// Added a For() Loop located at the botton of the screen, the script hangs up<BR />// Where( dt :trmode == mode )
Where( dt :trmode == "Tx" )<BR /><BR /> );
distr = dist << Report;
bCol = Column( "channel ");
Summarize( group = By( bCol ));
yy = Column( "Output" ) << Get As Matrix;
exRows = dt << Get Excluded Rows();
yy[exRows] = .;
For( i = 1, i <= N Items( group ), i++,
groupName = Trim( Word( 2, distr[i][OutlineBox(1)] << Get Title, "=" ) );
getRows = dt << Get Rows Where( bCol[] == groupName );
yVal = yy[getRows];
yVal[Loc( Is Missing( yVal ) )] = [];
n = N Row( yVal );
a = 0.05;
t0Sqr = t Quantile( 1 - a/(2*n), n-2 )^2;
g = Maximum( Abs( yVal - Mean( yVal ) ) ) / Std Dev( yVal );
g0 = ((n-1)/Sqrt(n)) * Sqrt( t0Sqr / (n - 2 + t0Sqr) );
distr[i][Outline Box(2)] << Append(
Outline Box( "Grubbs' Outlier Test",
Table Box(
String Col Box( "Statistic", {"G", "G("||Char(a)||")"} ),
Number Col Box( "Estimate", Matrix( {g, g0} ) )
),
Text Box(
If( g>g0,
"Outlier detected",
"No outlier detected"
)
)
)
);
);
// For Loop I was trying to use
// For( i = 1, i <= N Rows( dtsum ), i++,
// mode = dtsum:trmode[i];
// < Insert Script From Above >
// );
</INSERT>
Re:將GrubbsOutlierTest2集成到多變量數據表中是的,先生,但我想以自動形式使用它來解決g> g0。然後使用每個測試的計算By:channel定位異常值,然後將它們從數據集中排除,而不是手動執行。
Re:將GrubbsOutlierTest2集成到多變量數據表中Grubb異常值測試的腳本可以在By分析角色中使用分組變量。
Re:將GrubbsOutlierTest2集成到多變量數據表中我很抱歉沒有清楚地傳達這一點。test_1包含3個不同的set_id {7000,7100,7200}。
set_id 7000有1個通道(開關)+ 2個電源= 2個測試輸出
set_id 7100有16個通道+2個電源= 32個測試輸出
set_id 7200有16個通道+2個電源= 32個測試輸出
總計= 66
我領先於自己並忘記了set_id:7000只是兩個條件。所有3項測試= 105
我也一直在考慮並需要重寫原帖。我認為將每個測試(_1,_2,_3)的子集更容易,然後執行我需要對distriubtions做的事情。主表對我的圖形圖很有用。子集將是我們篩選的測試和測試條件......
Re:將GrubbsOutlierTest2集成到多變量數據表中讓我們專注於你的桌子下面是#1,而且只是'test_1'。我想你是說你要考慮每個3 * 2 * 16 = 96'循環條件'來定義一個組,並在每個組中尋找異常值。這是對的嗎?但附表顯示#1有105個這樣的組,而不是96個?