Ho dati su cui gestisco regolarmente le regressioni. Ogni "frammento" di dati si adatta a una regressione diversa. Ad esempio, ogni stato potrebbe avere una funzione diversa che spiega il valore dipendente. Questo sembra un tipico tipo di problema "split-apply-combine", quindi sto usando il pacchetto plyr. Posso facilmente creare un elenco di oggetti lm()
che funziona bene. Tuttavia non riesco a capire come utilizzare questi oggetti in un secondo momento per prevedere i valori in un data.frame separato.usando predire con un elenco di oggetti lm()
Ecco un esempio del tutto artificiosa che illustra quello che sto cercando di fare:
# setting up some fake data
set.seed(1)
funct <- function(myState, myYear){
rnorm(1, 100, 500) + myState + (100 * myYear)
}
state <- 50:60
year <- 10:40
myData <- expand.grid(year, state)
names(myData) <- c("year","state")
myData$value <- apply(myData, 1, function(x) funct(x[2], x[1]))
## ok, done with the fake data generation.
require(plyr)
modelList <- dlply(myData, "state", function(x) lm(value ~ year, data=x))
## if you want to see the summaries of the lm() do this:
# lapply(modelList, summary)
state <- 50:60
year <- 50:60
newData <- expand.grid(year, state)
names(newData) <- c("year","state")
## now how do I predict the values for newData$value
# using the regressions in modelList?
Quindi, come si usa il lm()
oggetti contenuti in modelList
per prevedere i valori utilizzando l'anno e statali valori indipendenti dalla newData
?
che lo inchioda completamente! Grazie mille. Puoi spiegare da dove viene il 'pezzo' di data.frame? È autogenerato da ddply? –
@JDLong: '.fun' viene infine chiamato su un frame di dati denominato' piece'. Ma, come ha sottolineato @BrianDiggs in chat, questo non dovrebbe essere invocato. Meglio avvolgere in una funzione anonima (vedi il mio aggiornamento). –
ciao, se potessi dare un'occhiata alla mia domanda sarebbe fantastico http://stackoverflow.com/questions/43427392/apply-predict-between-data-frames-within-two-lists. Grazie! – aaaaa