¿Cómo se puede calcular la media geométrica de algunas filas?La media geométrica se puede obtener fácilmente en Resumen.
Pero, ¿cómo calcular la media mediante la columna de fórmula, verdad?
Busqué en la documentación de ayuda y en la comunidad y todavía no pude encontrar la manera.


Quiero calcularlo de esta manera:
dt=Current Data Table();
dt<<NEW column=""></NEW>
¡Gracias!
Re: ¿Cómo se puede calcular la media geométrica de algunas filas?Además, estoy volviendo a vincular una publicación de blog aquí sobre la media geométrica de la documentación de SAS que es muy informativa:
https://blogs.sas.com/content/iml/2019/10/02/geometric-mean-deviation-cv-sas.html
Re: ¿Cómo se puede calcular la media geométrica de algunas filas?Creo que una estrategia útil aquí es usar la función "NRows()" en JMP para indicar la indexación del número de fila si está interesado en el cálculo de la media geométrica general que normalmente se informa en las estadísticas resumidas (y es el que que JMP informa en Personalizar estadísticas resumidas).


Pude resumir (reproducir) dos de los enfoques utilizados en este hilo e incluyo la tabla de datos en un conjunto de datos genérico para referencia futura de cualquiera. salud, @PatrickGiuliano
Re: ¿Cómo se puede calcular la media geométrica de algunas filas?gracias @Julian
Estaba intentando hacerlo todo de una vez pero no logré que funcionara como en esta imagen:

Re: ¿Cómo se puede calcular la media geométrica de algunas filas?Hola @ron_horne ,
A su pregunta: "¿hay alguna manera de incrustar la primera transformación ln en la segunda fórmula y así guardar el procedimiento de 2 columnas?".
Al principio, pensé que podríamos hacer algo con Transform Column(), como lo haríamos en el scripting para el lanzamiento de una plataforma, por ejemplo:
Transform Column( "Log[height]", Formula( Log( :height ) ) )
Pero incorporar eso en una fórmula de columna no me llevó a ninguna parte. Sin embargo, :altura[ Índice ( Fila () - 10 , Fila () )] devolverá una matriz y envolverla en Ln() evaluará cada elemento, por lo que lo siguiente debería proporcionar una versión de una sola columna de su solución:
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())]))))) );

@Julian
Re: ¿Cómo se puede calcular la media geométrica de algunas filas?Hola @lwx228 ,
Su pregunta es buena y debe haber algunas formas de obtener la respuesta. Intentaré seguir usando la fórmula de columna.
cree dos nuevas columnas.
1 simplemente transformo la altura a su tronco natural.
2 obtenga el exponente de la media móvil de la primera columna.
Esta segunda columna debería proporcionarle la media geométrica en movimiento que está buscando.
puedes tomar las fórmulas de este fragmento de guión:
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() )] ) )
)
)
);
por favor háganos saber si funciona para usted.
También me gustaría preguntar a otros miembros del foro si hay alguna manera de incrustar la primera transformación ln en la segunda fórmula y así guardar el procedimiento de 2 columnas.
Re: ¿Cómo se puede calcular la media geométrica de algunas filas?Utilicé el método original y los resultados fueron consistentes.

¡Gracias Jim!
Re: ¿Cómo se puede calcular la media geométrica de algunas filas?No conozco una función de media geométrica en JMP.Debería agregarse uno, y le sugiero que lo agregue a la lista de deseos de JMP.Sin embargo, eso no significa que uno no pueda hacer lo que quiera.Se me ocurrieron 2 soluciones diferentes.El primero es simplemente la codificación sin formato de la media geométrica en JSL.En la tabla de datos adjunta, la columna llamada GeoMean usa esa fórmula.Utiliza su solicitud para calcular la media geométrica de la fila actual: 10 filas, hasta la fila actual.
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;
El segundo formulario, la columna denominada Geomedia de la plataforma Dist, extrae la media geométrica de la salida de la plataforma de distribución, se ejecuta en un subconjunto de datos, subconjunto de 11 filas a la vez.
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;
La primera fórmula debería ser la más rápida, ya que no calcula la Geomedia desde cero para cada fila.