Regression non lineaire sous forme de puissance

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

mamad ndom
Messages : 3
Enregistré le : 26 Juil 2017, 12:35

Regression non lineaire sous forme de puissance

Messagepar mamad ndom » 26 Juil 2017, 15:11

Bonjour,

Je débute dans R. J'ai un jeu de données (x,y) dont je cherche à établir une corrélation et construire un modèle sous la forme: Y =ax^b.
J'ai déjà établi une corrélation linéaire mais c'est pas satisfaisant!!
J'aimerai tester une régression sous forme de puissance et obtenir ainsi obtenir l’équation : Y=ax^b.

Ma question est : Quelle formule devrais je utiliser dans R, pour faire mon graphe de régression sous forme de puissance et le modèle?

J’espère avoir été assez précis dans mes explications.

Merci d'avance pour vos conseils.
Mamad

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Regression non lineaire sous forme de puissance

Messagepar Logez Maxime » 26 Juil 2017, 15:23

Bonjour,

Plusieurs possibilités, soit transformer les données pour linéariser la relation (si possible) et à ce moment estimer a et b avec la fonction lm (modèle linéaire) soit utiliser la fonction nls :

Code : Tout sélectionner

x <- runif(100, 1, 4)
y <- 0.25*x^3.12
y <- y + rnorm(100)
tab <- data.frame(x = x, y = y)
rm(x, y)

nls(y ~ a*x^b, tab, start = list(a = 1, b = 1))
Cordialement,
Maxime

mamad ndom
Messages : 3
Enregistré le : 26 Juil 2017, 12:35

Re: Regression non lineaire sous forme de puissance

Messagepar mamad ndom » 27 Juil 2017, 08:50

Bonjour Maxime,

Merci pour ta réponse :) . J'ai pas très bien compris ta réponse avec les chiffres :

(x <- runif(100, 1, 4)
y <- 0.25*x^3.12
y <- y + rnorm(100)
tab <- data.frame(x = x, y = y)
rm(x, y)

Est que tu pourrai m'indiquer la procédure par étape après avoir importer mes données x et y dans R.
Tu peux être plus explicite sur la fonction nls s'il te plait. Cela me semble plus se rapprocher de ce que je cherche.

Cordialement,
Mamad

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Regression non lineaire sous forme de puissance

Messagepar Logez Maxime » 31 Juil 2017, 09:31

Bonjour,

Le code suivant sert juste à créer des données pour l'exemple. Si tu importes tes données dans un data.frame du nom de tab alors seul la suite t'importe.

Code : Tout sélectionner

x <- runif(100, 1, 4)
y <- 0.25*x^3.12
y <- y + rnorm(100)
tab <- data.frame(x = x, y = y)
rm(x, y)


Pour nls voir ?nls. Il s'agit d'une fonction qui sert à estimer des modèles non linéaires à l'aide du critère des moindres carrés. Tu peux aussi estimer les paramètres avec d'autres critères comme par exemple le maximum de vraisemblance, via la fonction optim. La seule chose c'est qu'il te faudra écrire la fonction de log vraisemblance et de la multiplier par moins -1 parce que la fonction optim par défaut est un algorithme de minimisation. Pour le reste je te laisse chercher comment écrire cette fonction, il y a pas mal d'exemple dans l'aide de la fonction ainsi que sur le net. En plus on commencerait surement à rentrer dans des considérations plus d'ordre statistiques.

Cordialement,
Maxime

mamad ndom
Messages : 3
Enregistré le : 26 Juil 2017, 12:35

Re: Regression non lineaire sous forme de puissance

Messagepar mamad ndom » 31 Juil 2017, 14:32

Bonjour Maxime,

Merci pour ta réponse, j'ai pu trouver ce que je chercher.

Cordialement,
Mamad


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité