¿Cómo automatizo la generación de muestreo aleatorio a partir de diferentes tipos de distribución?Digamos que tengo una tabla con 5 filas y 2 columnas. La primera columna es para los tipos de distribución (por ejemplo, Normal, Lognormal, Weibull, etc.) y la segunda columna es para los parámetros respectivos. Me gustaría hacer un bucle for que creará una nueva tabla de datos para cada una de las 5 filas, donde en esa nueva tabla de datos, se agregará una nueva columna con una función de muestreo aleatorio basada en los parámetros de la fila.
por ejemplo, fila 1 -> Normal, (0.1,0.02); Cree una nueva tabla de datos con una columna que tenga una fórmula de
randomnormal(0.1,0.02)
Mi desafío actual es que los diferentes tipos de distribución requieren un número variable de parámetros. Aprecio algunas ideas sobre cómo debería abordar esto.
ScriptingRe: ¿Cómo automatizo la generación de muestreo aleatorio de diferentes tipos de distribución?Hola,
Un par de pensamientos:
1) Si es posible, dividiría los parámetros en columnas para facilitar la creación de scripts de la fórmula
2) Usaría la fórmula COINCIDIR para buscar el nombre de la distribución y llamar específicamente a la función Aleatoria para la distribución correspondiente
Match( :Distribution,
"Normal", Random Normal( :Parameter 1, :Parameter 2 ),
"LogNormal", Random Lognormal( :Parameter 1, :Parameter 2 ),
.
)
Re: ¿Cómo automatizo la generación de muestreo aleatorio de diferentes tipos de distribución?A continuación se muestra un ejemplo sencillo de cómo hacer lo que solicitó
Names Default To Here( 1 );
dt = New Table( "Sample",
Add Rows( 5 ),
New Column( "Types",
Character,
Set Values(
{"Normal", "Lognormal", "Weibull", "Uniform", "Johnson Su"}
),
Set Display Width( 79 )
),
New Column( "Parameters",
Character,
Set Values(
{"(0.1,0.02)", "(0.2,.005)", "(0.3,0.005)", "(0.1,0.5)",
"(0.5, 1, 1, 1)"}
),
Set Display Width( 101 )
)
);
For( i = 1, i <= N Rows( dt ), i++,
Eval(
Substitute(
Expr(
New Table( dt:Types[i],
add rows( 20 ),
New Column( "Random " || dt:Types[i],
set each value( __formula__ )
)
)
),
Expr( __formula__ ),
Parse( "Random " || dt:Types[i] || dt:Parameters[i] )
)
)
);
Tómese el tiempo para comprender completamente cómo funciona el script y, si no lo comprende, responda para que la comunidad pueda brindarle la información adicional que pueda necesitar.