web-dev-qa-db-fra.com

Ajouter une courbe quadratique ajustée

J'essaie d'ajouter une courbe quadratique ajustée à un graphique.

abline(lm(data~factor+I(factor^2)))

La régression affichée est linéaire et non quadratique et je reçois ce message:

Message d'avis: In abline (lm (facteur de données + I (facteur ^ 2)), col = Palette: utilisation des deux premiers des 3 Coefficients de régression

ce qui signifie: 

Utilisation des 2 premiers des 3 coefficients de régression

Lors de l'exécution de la fonction lm() uniquement, je ne reçois aucun message.

Voici un exemple de données:

factor <- 1:7
data <- c(0.1375000,0.2500000,0.3416667,0.4583333,0.7250000,0.9166667,1.0000000)
10
Remi.b

Au lieu d'utiliser abline , utilisez fitted , qui vous donne un vecteur de la même longueur que votre saisie des prédictions:

fitted(lm(data~factor+I(factor^2)))
#         1         2         3         4         5         6         7 
# 0.1248016 0.2395833 0.3699405 0.5158730 0.6773810 0.8544643 1.0471230 

Ainsi, quelque chose comme:

plot(factor, fitted(lm(data~factor+I(factor^2))), type="l")
10
David Robinson

Vous pouvez utiliser predict pour cela:

plot(factor,data)
lines(predict(lm(data~factor+I(factor^2))))

enter image description here

4
Matthew Lundberg

Je ne pouvais pas obtenir de réponses pour le moment, car l'ensemble de données que j'ai utilisé contient des valeurs x qui n'augmentent pas (comme indiqué par David Robinson ci-dessus). Voici comment je l'ai résolu ...

require(ISLR)
plot(mpg~horsepower,data=Auto)


glm.fit = glm(mpg~poly(horsepower,2),data=Auto)

# create 100 x-values based on min/max of plotted values
minMax = range(Auto$horsepower)
xVals = seq(minMax[1], minMax[2], len = 100) 

# Use predict based on a dataframe containing 'horsepower'
yVals = predict(lm.fit, newdata = data.frame(horsepower=xVals))

lines(xVals, yVals)
3
Mike

merci pour toutes ces précieuses réponses. Fais attention:

Utilisation

Utilisez prédire en fonction d'un cadre de données contenant 'cheval'

yVals = prédire (glm.fit, newdata = data.frame (chevaux = xVals)

Utilisez prédire en fonction d'un cadre de données contenant 'cheval'

yVals = prédire (lm.fit, newdata = data.frame (chevaux = xVals)

lm.fit est une fonction

0
Souleymane