Cómo iterar a través de variables en una regresión en SAS / JMPHola amigos,
Soy muy nuevo y recientemente entrenado en Programación SAS . Estoy intentando tomar un conjunto de variables independientes y probar si están (estadísticamente significativamente) correlacionadas de manera diferente con dos grupos de datos.
Me han informado que la forma de hacer esto en JMP es hacer una serie de regresiones lineales como las siguientes,
result = group + varA + group*varA
y luego examine la importancia del efecto de interacción, por ejemplo, la columna "Prob> F" en este ejemplo de "País * Desplazamiento":
(No tengo la reputación de publicar una imagen.)
Ahora, necesito poder cambiar una de estas variables; es decir, para una lista de ~ 350 variables, digamos varA , varB , etc., necesito ejecutar las siguientes regresiones,
result = group + varA + group*varA
result = group + varB + group*varB
result = group + varC + group*varC
...
y obtener el significado de ese efecto de interacción. Los intentos anteriores de creación de scripts han generado ~ 350 ventanas de resultados o ~ 350 diálogos de modelo. . . Cualquier consejo sería apreciado.
Editar:
Por ejemplo, al utilizar el conjunto de datos de muestra JMP de Retrasos de la línea aérea, este es el resultado de uno de los pasos:

Necesito extraer la importancia del efecto de interacción (el 0.1397 en Pruebas de efecto) para cada conjunto de variables; por ejemplo, intercambiando la variable "Distancia" con "Tiempo transcurrido". Pero necesito intercambiar esta variable para cada uno en un conjunto de ~ 350.
Re: Cómo iterar a través de variables en una regresión en SAS / JMPGracias @txnelson .
Re: Cómo iterar a través de variables en una regresión en SAS / JMPAquí hay un pequeño ejemplo de lo que @ gzmorgan0 previsto. este ejemplo recorre varias ejecuciones
names default to here(1);
dt=open("$SAMPLE_DATA/Diamonds Data.jmp");
charColNamesList = dt << get column names(string,character);
effectNameList = {};
effectProbList = {};
For(i=2,i<=nitems(charColNamesList),i++,
Eval(Substitute(Expr(
fm = Fit Model(invisible,
Y( :Price ),
Effects( __VarA__, __VarB__, __VarA__ * __VarB__ ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Screening" ),
Run(
)
);),
Expr(__VarA__),parse(":" || charColNamesList[1]),
Expr(__VarB__),parse(":" || charColNamesList[i]))
);
insert into(effectProbList, (report(fm)["Effect Tests"][numbercolbox(6)]<<GET></GET>Re: Cómo iterar a través de variables en una regresión en SAS / JMPGracias @ gzmorgan0 , este código definitivamente me ayuda.
Re: Cómo iterar a través de variables en una regresión en SAS / JMPBuscar
Menú principal> Ayuda> Índice de secuencias de comandos> seleccione Objetos> desplácese hasta Ajustar modelo> Mínimos cuadrados> desplácese en el mensaje para obtener valores de efecto.
Necesitaría iterar sobre sus 350 variables (probablemente usando un bucle for) donde dentro del bucle tendría una secuencia de comandos como la que se muestra a continuación.
No recomiendo confiar en valores de p sin análisis residual, buscar valores atípicos o violaciones de supuestos. No estoy seguro de por qué se recomendó su tarea descrita; JMP tiene muchas herramientas para buscar las variables más influyentes. Dicho esto, el guión es un punto de partida.
Names default to Here(1);
Open("$sample_data/Airline Delays.jmp");
fm = Data Table("Airline Delays") << Fit Model( Invisible,
Y( :Arrival Delay ),
Effects( :Day of Week, :Distance, :Day of Week * :Distance ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
:Arrival Delay << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Lack of Fit( 0 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 0 ), Plot Residual by Predicted( 0 ),
Plot Studentized Residuals( 0 ), Plot Effect Leverage( 0 ),
Plot Residual by Normal Quantiles( 0 ), Box Cox Y Transformation( 0 )}
)
);
pv = fm << get effect pvalues;
show(pv); //look at the log or hover over pv the 3rd value pv[3] is the interaction pvalue<BR />fm << Close Window(); //to clean up the windows<BR />