일부 행의 기하 평균을 어떻게 계산할 수 있습니까?요약에서 기하 평균을 쉽게 얻을 수 있습니다.
하지만 수식 열로 평균을 계산하는 방법은 무엇입니까?
도움말 문서와 커뮤니티를 검색했지만 여전히 방법을 찾지 못했습니다.


이렇게 계산하고 싶습니다.
dt=Current Data Table();
dt<<NEW column=""></NEW>
감사!
Re: 일부 행의 기하평균은 어떻게 계산하나요?또한 매우 유익한 SAS 설명서의 기하 평균에 대한 블로그 게시물을 여기에서 다시 링크하고 있습니다.
https://blogs.sas.com/content/iml/2019/10/02/geometric-mean-deviation-cv-sas.html
Re: 일부 행의 기하평균은 어떻게 계산하나요?요약 통계에서 일반적으로 보고되는 일반적인 기하 평균 계산에 관심이 있는 경우 여기서 유용한 전략은 JMP의 "NRows()" 함수를 사용하여 행 번호에 대한 인덱싱을 호출하는 것입니다. JMP가 요약 통계 사용자 정의에서 보고함).


이 스레드에서 사용된 두 가지 접근 방식을 요약(복제)할 수 있었고 나중에 누구나 참조할 수 있도록 일반 데이터 세트에 데이터 테이블을 포함하고 있습니다. 건배, @패트릭줄리아노
Re: 일부 행의 기하평균은 어떻게 계산하나요?감사합니다 @줄리안
나는 한 번에 모든 것을 시도했지만 다음 그림과 같이 작동하지 않았습니다.

Re: 일부 행의 기하평균은 어떻게 계산하나요?안녕 @ron_horne ,
질문: "첫 번째 ln 변환을 두 번째 수식에 포함하여 2열 절차를 저장하는 방법이 있습니까?"
처음에는 플랫폼 출시를 위한 스크립팅에서와 같이 Transform Column()을 사용하여 무언가를 할 수 있다고 생각했습니다. 예를 들면 다음과 같습니다.
Transform Column( "Log[height]", Formula( Log( :height ) ) )
그러나 그것을 열 수식에 포함하면 아무 소용이 없습니다. 그러나 :높이[ 색인 ( 열 () - 10 , 열 () )]는 행렬을 반환하고 Ln()에서 래핑하면 각 항목이 평가되므로 다음은 솔루션의 단일 열 버전을 제공해야 합니다.
New Column("Geometric mean height (single column)", Numeric, "Continuous", Format("Best", 12), Formula(If(Row() < 10, Empty(), Exp(Mean(Ln(:height[Index(Row() - 10, Row())]))))) );

@줄리안
Re: 일부 행의 기하평균은 어떻게 계산하나요?안녕 @lwx228 ,
귀하의 질문은 좋은 질문이며 답을 얻을 수 있는 몇 가지 방법이 있어야 합니다. 나는 열 수식을 사용하려고 노력할 것입니다.
두 개의 새 열을 만듭니다.
1 높이를 자연 로그로 변환합니다.
2 첫 번째 열의 이동 평균 지수를 구합니다.
이 두 번째 열은 찾고 있는 이동 기하 평균을 제공해야 합니다.
이 스크립트에서 공식을 사용할 수 있습니다.
New Column( "log height",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Ln( :height ) )
);
New Column( "Geometric mean height",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() < 10,
Empty(),
Exp( Mean( :log height[Index( Row() - 10, Row() )] ) )
)
)
);
그것이 당신을 위해 작동하는지 알려주십시오.
또한 두 번째 수식에 첫 번째 ln 변환을 포함하여 2열 절차를 저장하는 방법이 있는지 포럼의 다른 회원들에게 묻고 싶습니다.
Re: 일부 행의 기하평균은 어떻게 계산하나요?나는 원래 방법을 사용했고 결과는 일관되었습니다.

고마워요!
Re: 일부 행의 기하평균은 어떻게 계산하나요?JMP의 기하 평균 기능을 잘 모릅니다.하나를 추가해야 하며 JMP 위시리스트에 추가하는 것이 좋습니다.그러나 그것이 당신이 원하는 것을 할 수 없다는 것을 의미하지는 않습니다.두 가지 다른 솔루션을 생각해 냈습니다.첫 번째는 JSL에서 기하 평균의 원시 코딩입니다.첨부된 데이터 테이블에서 GeoMean이라는 열은 해당 공식을 사용합니다.요청을 사용하여 현재 행을 통해 현재 행(10개 행)에 대한 기하 평균을 계산합니다.
If( Row() == 1,
Product = 1;
Range = 11;
);
If( Row() <= 11,
Product = Product * :height;
If( Row() == Range,
Returned = Product ^ (1 / Range),
Returned = .
);
,
Product = Product / :height[Row() - Range];
Product = Product * :height[Row()];
Returned = Product ^ (1 / Range);
);
Returned;
두 번째 형식인 Geomean from Dist Platform은 Distribution Platform의 출력에서 기하 평균을 추출하고 데이터의 하위 집합에서 실행하여 한 번에 11개 행을 부분 집합화합니다.
If( Row() < 11,
returned = .,
theValues = :height[Index( Row(), Row() - 10 )];
_d = New Table( "sub", invisible, New Column( "height", values( theValues ) ) );
dis = _d << Distribution(
invisible,
Continuous Distribution(
Column( :height ),
Quantiles( 0 ),
Histogram( 0 ),
Vertical( 0 ),
Outlier Box Plot( 0 ),
Customize Summary Statistics(
Mean( 0 ),
Std Dev( 0 ),
Std Err Mean( 0 ),
Upper Mean Confidence Interval( 0 ),
Lower Mean Confidence Interval( 0 ),
N( 0 ),
Geometric Mean( 1 )
)
)
);
Returned = (Report( dis )[Number Col Box( 1 )] << get)[1];
Close( _d, nosave );
);
Returned;
첫 번째 수식은 각 행에 대한 Geomean을 처음부터 계산하지 않기 때문에 가장 빠릅니다.