2014-04-15 15 views
6

Qual è la differenza tra type="class" e type="response" nella funzione predict?Parametro di tipo della funzione predict()

Ad esempio tra:

predict(modelName, newdata=testData, type = "class") 

e

predict(modelName, newdata=testData, type = "response") 
+4

Quale funzione 'prevedere'? 'Previsione' è una funzione generica per le previsioni dai risultati di varie funzioni di adattamento del modello. La funzione richiama metodi particolari che dipendono dalla classe del primo argomento. – shadow

risposta

2

vedi ?predict.lm: predict.lm produce un vettore di predizioni o una matrice di predizioni e limiti con nomi di colonna fit, lwr e upr se l'intervallo è impostato. Per type = "terms" questa è una matrice con una colonna per termine e può avere un attributo "costante".

> d <- data.frame(x1=1:10,x2=rep(1:5,each=2),y=1:10+rnorm(10)+rep(1:5,each=2)) 
> l <- lm(y~x1+x2,d) 
> predict(l) 
     1   2   3   4   5   6   7   8   9  10 
2.254772 3.811761 4.959634 6.516623 7.664497 9.221486 10.369359 11.926348 13.074222 14.631211 

> predict(l,type="terms") 
      x1   x2 
1 -7.0064511 0.8182315 
2 -5.4494620 0.8182315 
3 -3.8924728 0.4091157 
4 -2.3354837 0.4091157 
5 -0.7784946 0.0000000 
6 0.7784946 0.0000000 
7 2.3354837 -0.4091157 
8 3.8924728 -0.4091157 
9 5.4494620 -0.8182315 
10 7.0064511 -0.8182315 
attr(,"constant") 
[1] 8.442991 

cioè predict(l) è somme schiera di predict(l,type="terms") + costante

+0

Ti stai riferendo al modello lineare giusto? (predichi.lm) ma, per quanto ne so, il tipo di risposta di classe e tipo è correlato ai modelli di classificazione. Vuoi spiegare questi valori dei parametri? – kuz

+0

Vedere il commento dell'ombra: pensavo che modelName fosse più probabile che fosse un oggetto lm, ma se non è necessario dirci quale classe (ModelName) fornisce, o guardare il file help per predict.class(). – Miff

+0

Grazie per la risposta, ho ottenuto la risposta in? Predict.glm e? Predict.rpart. Ho completamente ignorato la genericità trattandoli come metodi sovraccarichi. – kuz

0

type = "response" viene utilizzato in glm modelli e type = "class" è utilizzato in rpart modelli (CART). See:

3

risposta ti dà il risultato numerico mentre la classe ti dà l'etichetta assegnata a quel valore.

La risposta consente di determinare la soglia. Ad esempio,

glm.fit = glm(Direction~., data=data, family = binomial, subset = train) 
glm.probs = predict(glm.fit, test, type = "response") 

In glm.probs abbiamo alcuni valori numerici compresi tra 0 e 1. Ora possiamo determinare il valore di soglia, diciamo 0.6. La direzione ha due possibili risultati, su o giù.

glm.pred = rep("Down",length(test)) 
glm.pred[glm.probs>.6] = "Up" 
Problemi correlati