基于 +/- 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 );