Come eseguire l'iterazione delle variabili in una regressione in SAS / JMPCiao gente,
Sono molto nuovo e recentemente addestrato in Programmazione SAS . Sto cercando di prendere una serie di variabili indipendenti e testare se sono (significativamente statisticamente) diversamente correlate a due gruppi di dati.
Sono stato avvisato che il modo di fare questo in JMP è di creare una serie di regressioni lineari come la seguente,
result = group + varA + group*varA
quindi esaminare il significato dell'effetto di interazione, ad esempio la colonna "Prob> F" in questo esempio "Paese * Spostamento":
(Non ho la reputazione di pubblicare un'immagine.)
Ora, ho bisogno di essere in grado di cambiare una di queste variabili; cioè, per un elenco di ~ 350 variabili, dì varA , varB , ecc., ho bisogno di eseguire le seguenti regressioni,
result = group + varA + group*varA
result = group + varB + group*varB
result = group + varC + group*varC
...
e ottenere il significato di quell'effetto di interazione. I precedenti tentativi di scripting hanno portato a ~ 350 finestre di risultati o ~ 350 finestre di dialogo del modello. . . Tutto il consiglio sarebbe apprezzato.
Modificare:
Ad esempio, utilizzando il set di dati campione JMP Airline Delays, questo è il risultato di uno dei passaggi:

Ho bisogno di estrarre il significato dell'effetto di interazione (lo 0.1397 sotto Test di effetto) per ciascuna di un insieme di variabili; ad esempio, intercambiando la variabile "Distanza" con "Tempo trascorso". Ma ho bisogno di scambiare questa variabile per ognuno in un set di ~ 350.
Ri: Come eseguire un'iterazione delle variabili in una regressione in SAS / JMPGrazie @txnelson .
Ri: Come eseguire un'iterazione delle variabili in una regressione in SAS / JMPEcco un piccolo esempio di cosa @ gzmorgan0 fornito. questo esempio scorre su più esecuzioni
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>Ri: Come eseguire un'iterazione delle variabili in una regressione in SAS / JMPGrazie @ gzmorgan0 , questo codice mi aiuta sicuramente.
Ri: Come eseguire un'iterazione delle variabili in una regressione in SAS / JMPConsultare
Menu principale> Guida> Indice di scripting> selezionare Oggetti> scorrere su Adatta modello> Minimi quadrati> scorrere il messaggio per ottenere i pvalori di Effetto.
Avresti bisogno di scorrere le tue 350 variabili (probabilmente usando un ciclo for) dove all'interno del ciclo avresti uno script come quello qui sotto.
Non consiglio di fare affidamento su pvalues senza analisi residuali, cercando valori anomali o violazioni delle ipotesi. Non sono sicuro del motivo per cui il tuo compito descritto è stato raccomandato; JMP ha molti strumenti per cercare le variabili più influenti. Detto questo, la sceneggiatura è un punto di partenza.
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 />