Sto cercando di fare un po 'di GLM all'interno di un data.table per produrre risultati modellati divisi da fattori chiave.R - usando GLM all'interno di un data.table
Ho fatto questo con successo per:
alto livello glm
glm (modellingDF, formula = Esito ~ IntCol + DecCol, famiglia = binomio (link = logit))
glm Scoped con colonne singole
modellingDF [, list (esito, montato = glm (x, formula = Esito ~ IntCol, famiglia = binomiale (li nk = logit)) $ montato), da = variabile]
glm Scoped con due colonne integer
modellingDF [, list (esito, montato = glm (x, formula = Esito ~ IntCol + IntCol2 , famiglia = binomio (link = logit)) $ montato), da = variabile]
Ma, quando provo e faccio il glm alto livello all'interno del campo di applicazione con la mia colonna decimale, produce questo errore
Error in model.frame.default(formula = Outcome ~ IntCol + DecCol, data = x, :
variable lengths differ (found for 'DecCol')
ho pensato forse era a causa di lunghezze variabili delle partizioni, così ho provato con un esempio riproducibile:
library("data.table")
testing<-data.table(letters=sample(rep(LETTERS,5000),5000),
letters2=sample(rep(LETTERS[1:5],10000),5000),
cont.var=rnorm(5000),
cont.var2=round(rnorm(5000)*1000,0),
outcome=rbinom(5000,1,0.8)
,key="letters")
testing.glm<-testing[,list(outcome,
fitted=glm(x,formula=outcome~cont.var+cont.var2,family=binomial(link=logit))$fitted)
),by=list(letters)]
Ma questo non ha avuto l'errore. Ho pensato che forse era dovuto al NAS o qualcosa, ma una sintesi della data.table modellingDF non fornisce alcuna indicazione che ci dovrebbe essere problemi:
DecCol
Min. :0.0416
1st Qu.:0.6122
Median :0.7220
Mean :0.6794
3rd Qu.:0.7840
Max. :0.9495
nrow(modellingDF[is.na(DecCol),]) # results in 0
modellingDF[,list(len=.N,DecCollen=length(DecCol),IntCollen=length
(IntCol),Outcomelen=length(Outcome)),by=Bracket]
Bracket len DecCollen IntCollen Outcomelen
1: 3-6 39184 39184 39184 39184
2: 1-2 19909 19909 19909 19909
3: 0 9912 9912 9912 9912
Forse sto avendo un giorno sonnolento, ma chiunque potrebbe suggerire un soluzione o un mezzo per approfondire ulteriormente questo problema?
NAS? [R lunghezza variabile differiscono quando modello lineare di generazione per residui] (http://stackoverflow.com/questions/14924541/r-variable-length-differ-when-build-linear-model-for-residuals) – zx8754
ho ritenuto, ma 'sapply (modellingDF, function (x) all (is.na (x)))' restituisce FALSE per ogni colonna –
Puoi fare un esempio riproducibile che produce l'errore? Hai mostrato l'errore che è buono, ma non quello che lo produce, iiuc. –