저는 분산 분석을 수행하고 있으며 제가 보고 있는 여러 하위 그룹에 대한 편향되지 않은 분산 추정치를 확인해야 합니다.내가 가지고 있는 d2 테이블을 사용하여 수동으로 계산할 수 있지만 공식에 넣을 수 있는 방법이 있기를 바랐습니다.카이 제곱 분포에서 파생될 수 있다는 것을 알고 있지만 그에 대한 수학 지식이 없습니다.
d2를 추출하는 직접적인 방법이나 이를 수동으로 구축하는 데 필요한 수학에 대한 도움이 있으면 도움이 될 것입니다.
감사해요
에반 모리스
JMP15 릴리스에서 제어 차트 상수/불편향 상수/편향 조정 상수가 이제 최대 50개의 샘플 크기에 대해 계산된다는 것을 알았습니다. JMP에 샘플 데이터, 학습 스크립트 또는 기타 항목 아래에 스크립트가 있는지 궁금했습니다. JMP가 있는 그대로 이 테이블을 만들 수 있는지 아는 사람이 있습니까? Ian의 함수를 기반으로 SPC 수업을 가르치는 테이블을 만들기 위해 다음과 같은 스크립트를 만들었습니다. 테이블은 소수점 이하 5자리이며 누구나 Col > Standardize Attributes를 사용하여 형식을 3 또는 4로 변경할 수 있습니다. 또한 SAS 소프트웨어 설명서에는 d2, d3 및 c4에 대한 함수가 있습니다. JMP16에서 스크립팅 기능을 추가하거나 테이블을 추가할 수 있습니까?
// from post by ian_jmp to question on
// "Accessing Control Chart constants/unbiasing constants"
// add the complete table up to 25
Names Default To Here( 1 );
calculateD2 = Function( {n},
{Default Local},
d2 = Round( Integrate( 1 - Power( 1 - Normal Distribution( x ), n ) - Power( Normal Distribution( x ), n ), x, ., . ), 5 )
);
calculateD3 = Function( {n, d2},
{Default Local},
d3 = Round(
sqrt(
2 * (Integrate(
Integrate(
1 - Power(Normal Distribution(y),n) - Power( 1 - Normal Distribution(x),n) + Power( (Normal Distribution(y) - Normal Distribution(x)), n )
, x, ., y)
, y, ., . )) - d2^2
)
, 5 )
);
calculateC4 = Function( {n},
{Default Local},
c4 = Round( gamma(n/2) * sqrt(2/(n-1)) / gamma((n-1)/2), 5 )
);
// create table following example tables showing x-bar constants first (A2, A3)
// then d2 sigma estimate, then the R chart and S chart constants
dt = New Table("Table of Control Chart Constants",
Add Rows(24),
New Column("Sample size", Numeric, Continuous),
New Column("A2", Numeric, Continuous, Format( "Fixed Dec", 8, 5 )),
New Column("A3", Numeric, Continuous, Format( "Fixed Dec", 8, 5 )),
New Column("d2", Numeric, Continuous, Format( "Fixed Dec", 8, 5 )),
New Column("d3", Numeric, Continuous, Format( "Fixed Dec", 8, 5 )),
New Column("D3", Numeric, Continuous, Format( "Fixed Dec", 8, 5 )),
New Column("D4", Numeric, Continuous, Format( "Fixed Dec", 8, 5 )),
New Column("c4", Numeric, Continuous, Format( "Fixed Dec", 8, 5 )),
New Column("B3", Numeric, Continuous, Format( "Fixed Dec", 8, 5 )),
New Column("B4", Numeric, Continuous, Format( "Fixed Dec", 8, 5 )),
); Wait(0);
For( n = 2, n <= 25, n++,
Column(dt,"Sample size")[n-1] = n;
Column(dt,"d2")[n-1] = d2 = calculateD2( n ); Wait(0);
Column(dt,"d3")[n-1] = d3 = calculateD3( n, d2 ); Wait(0);
D3temp = 1 - 3*d3/d2;
If(D3temp > 0,
Column(dt,"D3")[n-1] = D3temp,
Column(dt,"D3")[n-1] = 0 // for negative values
);
Column(dt,"D4")[n-1] = 1 + 3*d3/d2;
Column(dt,"A2")[n-1] = 3/(d2*sqrt(n));
Column(dt,"c4")[n-1] = c4 = calculateC4( n ); Wait(0);
Column(dt,"A3")[n-1] = 3/c4/sqrt(n);
B3temp = 1 - 3 * sqrt(1/c4^2 - 1);
If(B3temp > 0,
Column(dt,"B3")[n-1] = B3temp,
Column(dt,"B3")[n-1] = 0
);
Column(dt,"B4")[n-1] = 1 + 3 * sqrt(1/c4^2 - 1);
);
한동안 그 d2를 보지 못했습니다!
// https://v8doc.sas.com/sashtml/qc/chapc/sect9.htm
NamesDefaultToHere(1);
calculateD2 =
Function({n}, {Default Local},
d2 = Round(Integrate(1 - Power(1 - NormalDistribution(x), n) - Power(NormalDistribution(x), n), x, ., .), 5);
);
for(n=2, n<=25, n++, Print(n, calculateD2(n)));사실, 내 질문을 조금 업데이트하겠습니다.변동성 게이지의 분산 구성 요소 섹션에 보고된 값이 편향되지 않았습니까?그것은 내 작업에 충분할 수 있습니다 (여전히 상수에 대한 액세스를 선호하지만)
아니요, 모집단 표준 편차(sigma-hat)의 편향되지 않은 추정치를 찾고 있는데, 이는 하위 그룹 표본 표준 편차(s)와 불편 상수(샘플 크기 및 방법에 따라 d2 또는 c4)에서 계산할 수 있습니다. 사용하고 있습니다).
같은 크기(n=4)의 하위 그룹이 30개 있다고 가정해 보겠습니다.하위 그룹 내 표준 편차를 평균하여 S-bar를 계산할 수 있습니다.그런 다음 s-bar를 c4로 나누고 모집단 표준 편차의 편향되지 않은 추정치를 결정할 수 있습니다.
내 문제는 다양한 하위 그룹 크기가 있으므로 한 번만 찾아보고 테이블에 넣을 수 없다는 것입니다.나는 또한 d2 또는 c4가 필요한지 여부에 대해 약간 squirally입니다 (그러나 그것은 내 문제입니다. 정리할 것입니다).
어느 쪽이든, 저는 이러한 매개변수가 JSL의 함수로 쉽게 추출될 수 있기를 바랐습니다. 이러한 매개변수는 제어 차트 작성/SQC 작업에서 매우 일반적입니다.
하위 그룹의 분산을 찾고 있습니까?
https://en.wikipedia.org/wiki/Variance#Sample_variance
그것은 coumns 표준 편차의 제곱이 될 것입니다 공식은 (Col Std Dev( col, by1, by2, ...))^2입니다.
아래 스크립트를 실행합니다.표> 요약을 사용하여 찾을 수도 있습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "Standard Variance for Each Age and Sex Group",
Formula( (Col Std Dev( :height, :age, :sex ))^2 )
);