基於 +/- 1.5 sigma 的標準偏差腳本你好,
我喜歡根據查看值範圍(+/- 1.5 sigma)的數據來計算標準差。 JMP 中有人可以實現這一目標嗎?
我感謝您的幫助。 謝謝
回复:基於 +/- 1.5 sigma 的標準差腳本謝謝吉姆。 這非常有幫助。
回复:基於 +/- 1.5 sigma 的標準差腳本謝謝戴夫。
回复:基於 +/- 1.5 sigma 的標準差腳本您遇到的問題是,您在公式中放入的不是列名稱(如 NPN1),而是“NPN”的文字字符串。替換功能允許將“NPN1”替換為:NPN1。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Current Data Table();
lstNames = dt << Get Column Names( string, Numeric );
For( i = 1, i <= N Items( lstNames ), i++,
If( Contains( lstNames[i], "NP" ) == 1,
sigma = Col Std Dev( Column( dt, lstNames[i] ) );
Eval(
Substitute(
Expr(
special std dev = Col Std Dev(
If( (Col Mean( __col__ ) - 1.5 * sigma) <= __col__ | __col__ >= (Col Mean( __col__ ) + 1.5 * sigma),
.,
__col__
)
)
),
Expr( __col__ ), Parse( ":" || lstNames[i] )
)
);
Show( sigma, special std dev );
)
);
這是指定將文字字符串視為列名的另一種方法
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Current Data Table();
lstNames = dt << Get Column Names( string, Numeric );
For( i = 1, i <= N Items( lstNames ), i++,
If( Contains( lstNames[i], "NP" ) == 1,
sigma = Col Std Dev( Column( dt, lstNames[i] ) );
special std dev = Col Std Dev(
If(
(Col Mean( As Column( lstNames[i] ) ) - 1.5 * sigma) <= As Column( lstNames[i] ) | As Column( lstNames[i] ) >= (
Col Mean( As Column( lstNames[i] ) ) + 1.5 * sigma),
.,
As Column( lstNames[i] )
)
);
);
Show( sigma, special std dev );
);回复:基於 +/- 1.5 sigma 的標準差腳本Col Std Dev 的參數必須是列引用而不是字符串名稱。您可以使用 Column 函數從字符串名稱生成列引用:
sigma = Col Std Dev( Column( lstNames[i]) );
回复:基於 +/- 1.5 sigma 的標準差腳本嗨吉姆,
我按照您的腳本添加了列列表來計算這個特殊的西格瑪。 當我運行腳本時,我得到
西格瑪 = .;
特殊 std dev = .;
西格瑪 = .;
特殊 std dev = .;
西格瑪 = .;
這是腳本:
名稱默認為此處( 1 );
dt =打開( “$SAMPLE_DATA/半導體能力.jmp” );
當前數據表();
lstNames = dt <<獲取列名稱(字符串,數字);
為了(我= 1 , 我 <= N 項(lstNames), i++,
如果(包含(lstNames[i], “NP” ) == 1 ,
西格瑪=上校標準差(lstNames[i]);
特殊標準差 =上校標準差(如果((科爾平均值( lstNames[i] ) - 1.5 *sigma) <= lstNames[i] | | *sigma) <= lstNames[i] | lstNames[i] >= (科爾平均值( lstNames[i] ) + 1.5 *西格瑪), 。 ,lstNames[i] ) );
展示(西格瑪,特殊標準差);
)
);
我感謝您的幫助。 謝謝
@在寫道:
感謝吉姆的快速反饋和解決方案。 這就是我想要的。 我也會
@tx尼爾森寫道:
這就是你想要的>
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
sigma = Col Std Dev( :npn1 );
special std dev = Col Std Dev( If( (Col Mean( :npn1 ) - 1.5*sigma) <= :npn1 | :npn1 >= (Col Mean( :npn1 ) + 1.5*sigma), ., :npn1 ) );
Show( sigma, special std dev );
例如對數據表中的許多列執行此操作,然後創建一個包含“通過”或“失敗”值的新列。 我認為可以從數據表中讀取每列的規格限制,然後根據控制限制讀取帶有“通過”或“失敗”的新列。
如果有人做過此類工作,我將有興趣從中學習。 謝謝
回复:基於 +/- 1.5 sigma 的標準差腳本感謝吉姆的快速反饋和解決方案。 這就是我想要的。 我也會
@tx尼爾森寫道:
這就是你想要的>
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
sigma = Col Std Dev( :npn1 );
special std dev = Col Std Dev( If( (Col Mean( :npn1 ) - 1.5*sigma) <= :npn1 | :npn1 >= (Col Mean( :npn1 ) + 1.5*sigma), ., :npn1 ) );
Show( sigma, special std dev );
例如對數據表中的許多列執行此操作,然後創建一個包含“通過”或“失敗”值的新列。 我認為可以從數據表中讀取每列的規格限制,然後根據控制限制讀取帶有“通過”或“失敗”的新列。
如果有人做過此類工作,我將有興趣從中學習。 謝謝
回复:基於 +/- 1.5 sigma 的標準差腳本這就是你想要的>
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
sigma = Col Std Dev( :npn1 );
special std dev = Col Std Dev( If( (Col Mean( :npn1 ) - 1.5*sigma) <= :npn1 | :npn1 >= (Col Mean( :npn1 ) + 1.5*sigma), ., :npn1 ) );
Show( sigma, special std dev );