2013-08-05 11 views
5

Sto tentando di eseguire una regressione con più variabili dipendenti e più variabili indipendenti. Fondamentalmente ho House Prices a livello di contea per tutti gli Stati Uniti, questa è la mia IV. Ho quindi diverse altre variabili a livello di contea (GDP, construction employment), queste costituiscono le mie variabili dipendenti. Vorrei sapere se esiste un modo efficace per eseguire tutte queste regressioni contemporaneamente. Sto cercando di ottenere:Utilizzo di R per eseguire una regressione con più variabili dipendenti e multiple indipendenti

lm(IV1 ~ DV11 + DV21) 
lm(IV2 ~ DV12 + DV22) 

Mi piacerebbe farlo per ogni variabile indipendente e ciascuna dipendente.

EDIT:Il PO ha aggiunto queste informazioni in risposta alla mia risposta, ora cancellato, che frainteso la questione.

Non credo di aver spiegato questa domanda molto bene, mi scuso. Ogni variabile dipendente ha 2 variabili indipendenti associate ad essa, quella unica. Quindi, se ho 500 variabili dipendenti, ho 500 variabile indipendente unica 1 e 500 variabile indipendente unica 2.

Ok, ci riproverò ancora, se non riesco a spiegarmi di nuovo, potrei semplicemente arrendermi (haha) . Non so cosa intendi per mtcars da R sebbene [questo è in riferimento alla risposta di Metrics], quindi fammi provare in questo modo. Avrò 3 vettori di dati circa 500 righe ciascuno. Sto cercando di costruire una regressione su ogni riga di dati. Diciamo che il vettore 1 è la mia variabile dipendente (quella che sto cercando di prevedere), ei vettori 2 e 3 costituiscono le mie variabili indipendenti. Quindi la prima regressione consisterebbe nel valore della riga 1 per ogni vettore, la seconda consisterebbe nel valore della riga 2 per ciascuna e così via. Grazie ancora a tutti.

+2

Con "variabile dipendente", vuoi dire il numero che si desidera prevedere, e "variabile indipendente" è il numero che hai che vuoi usare per fare la previsione? Notare che nella sintassi della formula di R, le variabili dipendenti si trovano sul lato sinistro della tilde e le IV vanno sul RHS ('lm (DV ~ IV)'). – gung

+0

[regressione PLS] (http://en.wikipedia.org/wiki/Partial_least_squares_regression) è un'opzione. – chl

+0

Mi dispiace, l'ho detto all'indietro. Ho acceso la mia IV e DV.I ho anche segnalato la mia domanda per farla spostare in overflow, perché sto principalmente pensando a come implementarlo in R, poiché comprendo il concetto alla base. Grazie gung. – user2355903

risposta

2

Suppongo che tu abbia un dataframe come mydata.

mydata<-mtcars #mtcars is the data in R 

dep<-c("mpg~","cyl~","disp~") # list of unique dependent variables with ~ 
indep1<-c("hp","drat","wt") # list of first unique independent variables 
indep2<-c("qsec","vs","am") # list of second unique independent variables 
> myvar<-cbind(dep,indep1,indep2) # matrix of variables 
> myvar 
    dep  indep1 indep2 
[1,] "mpg~" "hp" "qsec" 
[2,] "cyl~" "drat" "vs" 
[3,] "disp~" "wt" "am" 



for (i in 1:dim(myvar)[1]){ 
print(paste("This is", i, "regression", "with dependent var",gsub("~","",myvar[i,1]))) 
k[[i]]<-lm(as.formula(paste(myvar[i,1],paste(myvar[i,2:3],collapse="+"))),mydata) 
print(k[[i]] 
} 



[1] "This is 1 regression with dependent var mpg" 

Call: 
lm(formula = as.formula(paste(myvar[i, 1], paste(myvar[i, 2:3], 
    collapse = "+"))), data = mydata) 

Coefficients: 
(Intercept)   hp   qsec 
    48.32371  -0.08459  -0.88658 

[1] "This is 2 regression with dependent var cyl" 

Call: 
lm(formula = as.formula(paste(myvar[i, 1], paste(myvar[i, 2:3], 
    collapse = "+"))), data = mydata) 

Coefficients: 
(Intercept)   drat   vs 
    12.265  -1.421  -2.209 

[1] "This is 3 regression with dependent var disp" 

Call: 
lm(formula = as.formula(paste(myvar[i, 1], paste(myvar[i, 2:3], 
    collapse = "+"))), data = mydata) 

Coefficients: 
(Intercept)   wt   am 
    -148.59  116.47  11.31 

Nota: È possibile utilizzare lo stesso processo per il gran numero di variabili.

approccio alternativo:

Motivato dalla risposta di Hadley here, io uso la funzione Map da risolvere sopra i problemi:

dep<-list("mpg~","cyl~","disp~") # list of unique dependent variables with ~ 
indep1<-list("hp","drat","wt") # list of first unique independent variables 
indep2<-list("qsec","vs","am") # list of second unique independent variables 
Map(function(x,y,z) lm(as.formula(paste(x,paste(list(y,z),collapse="+"))),data=mtcars),dep,indep1,indep2) 
[[1]] 

Call: 
lm(formula = as.formula(paste(x, paste(list(y, z), collapse = "+"))), 
    data = mtcars) 

Coefficients: 
(Intercept)   hp   qsec 
    48.32371  -0.08459  -0.88658 


[[2]] 

Call: 
lm(formula = as.formula(paste(x, paste(list(y, z), collapse = "+"))), 
    data = mtcars) 

Coefficients: 
(Intercept)   drat   vs 
    12.265  -1.421  -2.209 


[[3]] 

Call: 
lm(formula = as.formula(paste(x, paste(list(y, z), collapse = "+"))), 
    data = mtcars) 

Coefficients: 
(Intercept)   wt   am 
    -148.59  116.47  11.31 
+0

@ user2355903: 'mtcars' è un set di dati di esempio incorporato in R. Dovresti essere in grado di eseguire questo codice da solo per provarlo e vedere se è quello che ti serve. Da quello che hai descritto (anche se la domanda di SeñorO ha bisogno di chiarimenti), incollare insieme la formula e eseguirli tutti insieme in un ciclo (come suggerisce Metrics) è probabilmente la strada da percorrere. – Aaron

+0

Non capisco dove si tiene conto della correlazione tra i risultati, in questi approcci di looping –

Problemi correlati