샘플 크기가 상당히 다양한 여러(22?) 샘플의 데이터가 있습니다. 나는 매개변수가 더 큰 샘플에서 더 잘 추정된다는 것을 이해하지만, 여기서 다루려는 문제는 아닙니다. 표본 크기가 그룹/표본 간에 다르지 않은 것처럼 분포를 그래프로 표시하고 매개변수를 추정하고 싶습니다. 즉, 큰 샘플은 가중치를 줄이고 작은 샘플은 가중치를 높여야 합니다.
저는 "Fit Y by X"에서 다음과 같이 이 작업을 수행하려고 했습니다. 그룹의 샘플 크기를 총 샘플 크기로 나눈 새로운 변수인 WEIGHT를 계산했습니다. 네 그룹이 있다고 가정해 보겠습니다.
그룹 1: N1=100
그룹 2: N1=500
그룹 3: N1=200
그룹 4: N1=400
또한 그룹 1과 2는 유형 1이고 그룹 3과 4는 유형 2입니다.
무게:
그룹 1: 100/1200
그룹 2: 500/1200
그룹 3: 200/1200
그룹 4: 400/1200
Y가 DV이고 X가 "유형"이고 가중치가 WEIGHT인 "Fit Y by X"를 수행한 다음 "Compare Densities"를 사용하여 겹치는 밀도 플롯을 얻으면 올바르게 보입니다. 그러나 계속해서 DV에 대한 표준 편차를 얻으면 이는 모든 그룹의 표준 편차보다 훨씬 큽니다. 이것은 내가 하는 일을 이해하지 못한다는 생각을 하게 만듭니다.
돕다?
내가 원래 게시물에 실수를 했는데 방법을 안다면 삭제할 것입니다. 올바른 버전은 다음과 같습니다.
샘플 크기가 상당히 다양한 여러(22?) 샘플의 데이터가 있습니다. 나는 매개변수가 더 큰 샘플에서 더 잘 추정된다는 것을 이해하지만, 여기서 다루려는 문제는 아닙니다. 표본 크기가 그룹/표본 간에 다르지 않은 것처럼 분포를 그래프로 표시하고 매개변수를 추정하고 싶습니다. 즉, 큰 샘플은 가중치를 줄이고 작은 샘플은 가중치를 높여야 합니다.
저는 "Fit Y by X"에서 다음과 같이 이 작업을 수행하려고 했습니다. 그룹의 샘플 크기를 총 샘플 크기로 나눈 새로운 변수인 WEIGHT를 계산했습니다. 네 그룹이 있다고 가정해 보겠습니다.
그룹 1: N1=100
그룹 2: N1=500
그룹 3: N1=200
그룹 4: N1=400
또한 그룹 1과 2는 유형 1이고 그룹 3과 4는 유형 2입니다.
무게:
그룹 1: 1200/100
그룹 2: 1200/500
그룹 3: 1200/200
그룹 4: 1200/400
Y가 DV이고 X가 "유형"이고 가중치가 WEIGHT인 "Fit Y by X"를 수행한 다음 "Compare Densities"를 사용하여 겹치는 밀도 플롯을 얻으면 올바르게 보입니다. 그러나 계속해서 DV에 대한 표준 편차를 얻으면 이는 모든 그룹의 표준 편차보다 훨씬 큽니다. 이것은 내가 하는 일을 이해하지 못한다는 생각을 하게 만듭니다.
돕다?
이 게시물이 도움이 될 수 있다고 생각합니다.
해결: 가중 표준 편차 - JMP 사용자 커뮤니티
그리고 아마도 다음 스크립트는 무슨 일이 일어날 수 있는지 이해하는 데 도움이 될 것입니다.
따라서 접근 방식에서 평균을 계산할 때 어떤 방법을 사용하든(역할 가중치 또는 빈도) 작동합니다.
나는 당신의 것과 비교하여 무게의 다른 정의를 만들었습니다. 나는 무게의 총합이 1200이 되기를 원했습니다(당신은 4*1200을 가짐).
이것은 중요하지 않으며 주파수 역할의 가중치는 중요하지 않지만 역할 가중치의 가중치는 중요합니다. 스크립트를 참조하십시오.
불행히도 그 이유를 정확히 설명할 수는 없지만 작은 데이터 세트는 전체 평균에 비해 매우 큰 stddev를 얻습니다. 아마도 제곱과 루트 때문일 것입니다 ...
나는 개인적으로 당신의 접근 방식을 사용하지 않을 것입니다. 무슨 일이 일어나고 있는지 명확하지 않기 때문입니다. 그룹 요약을 수행한 다음 각 그룹에 대한 평균을 1로 가중했습니다. 그런 다음 그 결과를 그래프에 결합합니다.
Names Default To Here( 1 );
// about the role of weight and frequency for calculation of mean and stddev
//
// web("https://www.jmp.com/support/help/en/16.1/?os=win&source=application&utm_source=helpmenu&utm_medium=application#page/jmp/summary-statistics.shtml");
//
nelem_lst = {100, 500, 200, 400};
table_lst = {};
For Each( {value, index}, nelem_lst,
Eval(
Eval Expr(
table_lst[index] = New Table( "Table " || Char( index ),
add rows( nelem_lst[index] ),
New Column( "Group", "Character", set each value( "Group " || Char( index ) ) ),
New Column( "Type", "Character", set each value( If( index <= 2, "Type 1", "Type 2" ) ) ),
New Column( "DV", "Continuous", formula( Random Normal( Expr( Mod( index, 2 ) ), Expr( Mod( index, 2 ) + 1 ) ) ) )
)
)
);
Wait( 0.1 );
table_lst[index]:DV << delete formula;
);
Wait( 0 );
dt = table_lst[1] << concatenate( Table Name( "All" ), table_lst[2 :: 4] );
For Each( {value}, table_lst, Close( value, "NoSave" ) );
Summarize( dt, group_lst = by( :group ) );
ngroups = N Items( group_lst );
dt << New Column( "ColMean[Group]", formula( Col Mean( :DV, :group ) ) );
dt << New Column( "ColStd[Group]", formula( Col Std Dev( :DV, :group ) ) );
Eval( Eval Expr( dt << New Column( "weight[Group]", formula( Col Number( :DV ) / Expr( ngroups ) / Col Number( :DV, :group ) ) ) ) );
nw = New Window( "oneway comparison",
H List Box(
Panel Box( "w/o weight",
dt << Oneway( Y( :DV ), X( :Group ), Means and Std Dev( 1 ), Mean Error Bars( 1 ), Std Dev Lines( 1 ) );
),
Panel Box( "weight in role frequency",
dt << dt << Oneway(
Y( :DV ),
X( :Group ),
Freq( :"weight[Group]"n ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
),
Panel Box( "weight in role weight",
dt << dt << Oneway(
Y( :DV ),
X( :Group ),
Weight( :"weight[Group]"n ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
)
)
);
nw = New Window( "Tabulate comparison",
H List Box(
Panel Box( "w/o weight",
dt << Tabulate(
Change Item Label( Grouping Columns( :Type( "All" ), "All" ) ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N ) ),
Column Table( Analysis Columns( :"weight[Group]"n ), Statistics( Sum ) ),
Column Table( Analysis Columns( :DV ), Statistics( Mean ) ),
Column Table( Statistics( Std Dev ), Analysis Columns( :DV ) ),
Row Table( Grouping Columns( :Type, :Group ), Add Aggregate Statistics( :Type, :Group ) )
)
)
),
Panel Box( "weight in role frequency",
dt << Tabulate(
Change Item Label( Grouping Columns( :Type( "All" ), "All" ) ),
Freq( :"weight[Group]"n ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N ) ),
Column Table( Analysis Columns( :"weight[Group]"n ), Statistics( Sum ) ),
Column Table( Analysis Columns( :DV ), Statistics( Mean ) ),
Column Table( Statistics( Std Dev ), Analysis Columns( :DV ) ),
Row Table( Grouping Columns( :Type, :Group ), Add Aggregate Statistics( :Type, :Group ) )
)
)
),
Panel Box( "weight in role weight",
dt << Tabulate(
Change Item Label( Grouping Columns( :Type( "All" ), "All" ) ),
weight( :"weight[Group]"n ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N ) ),
Column Table( Analysis Columns( :"weight[Group]"n ), Statistics( Sum ) ),
Column Table( Analysis Columns( :DV ), Statistics( Mean ) ),
Column Table( Statistics( Std Dev ), Analysis Columns( :DV ) ),
Row Table( Grouping Columns( :Type, :Group ), Add Aggregate Statistics( :Type, :Group ) )
)
)
)
)
);
dt << Summary( Group( :Group, :Type, :"ColMean[Group]"n, :"ColStd[Group]"n, :"weight[Group]"n ), Freq( "None" ), Weight( "None" ) );