Lista de entrada del usuario para el informe de regresión con interaccionesTengo un cuadro de entrada donde los usuarios pueden seleccionar columnas para ejecutar en un informe de regresión. Esta parte funciona muy bien. Luego inserto la lista de columnas en una lista. Me gustaría tomar la lista de columnas y hacer diferentes interacciones que se pueden insertar en un informe de regresión. Específicamente, estoy interesado en interacciones un poco más complicadas (es decir, Columna 1 * Columna 2 ^ 2) Cuando trato de poner cualquier cosa que no sea solo la lista genérica en el informe de regresión, no ejecuta el informe. ¿Qué hago para crear estas interacciones en el informe?
La lectura de la lista de entrada del usuario se ve así: {"Columna 1", "Columna 2", "Columna 3"}
plataforma = dt << Ajustar modelo (
Y (: Char (variable)),
Efectos (
¿Qué debería ir aquí ?????
),
Personalidad ("Regresión generalizada"),
Distribución generalizada ("normal"),
Correr(
Ajuste (método de estimación (selección directa en dos etapas), método de validación (AICc), hacer cumplir la herencia)
)
);
GAMAScriptingRe: Lista de entrada del usuario para el informe de regresión con interaccionesEl índice de secuencias de comandos tiene un ejemplo de efectos, que se copia a continuación.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Dogs.jmp" );
obj = Fit Model(
Y( :LogHist0, :LogHist1, :LogHist3, :LogHist5 ),
Effects( :drug, :dep1, :drug * :dep1 ),
Personality( Manova ),
Run( Response Function( Sum ) )
);
Re: Lista de entrada del usuario para el informe de regresión con interaccionesAquí hay una forma de manejar esto
names default to here(1);
dt=data table("big class");
variable = "Age";
// If you build your list as expressions the code below works
effectsList = {height, weight, weight * height};
Fit Model(
Y( :char(variable) ),
Effects( eval(effectsList) ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" ),
Run(
:char(variable) << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 1 ), Plot Regression( 0 ),
Plot Residual by Predicted( 1 ), Plot Studentized Residuals( 0 ),
Plot Effect Leverage( 1 ), Plot Residual by Normal Quantiles( 0 ),
Box Cox Y Transformation( 0 )}
)
);
/*
// If you build your list using strings
effectsList = {"height", "weight", "weight * height"};
// You can convert the elements back to expressions by
// using the Parse() function
For( i = 1, i <= N Items( effectsList ), i++,
effectsList[i] = Parse( effectsList[i] );
);Re: Lista de entrada del usuario para el informe de regresión con interaccionesAquí hay otra forma de usar expresiones. Hay más soluciones basadas en expresiones que solo este ejemplo.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Dogs.jmp" );
predictor = { :drug, :dep1 };
n = N Items( predictor );
effectExpr = Expr( Effects() );
For( x1 = 1, x1 < n, x1++,
Insert Into( effectExpr, predictor[x1] );
For( x2 = 2, x2 <= n, x2++,
Eval(
Substitute(
Expr( Insert Into( effectExpr, Expr( xxx1 * xxx2 ) ) ),
Expr( xxx1 ), predictor[x1],
Expr( xxx2 ), predictor[x2]
)
)
);
);
Show( Name Expr( effectExpr) );
Eval(
Substitute(
Expr(
obj = dt << Fit Model(
Y( :LogHist0, :LogHist1, :LogHist3, :LogHist5 ),
eee,
Personality( Manova ),
Run( Response Function( Sum ) )
);
),
Expr( eee ), Name Expr( effectExpr )
)
);