Graphique de la fonction de vraisemblance

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

Remy Duchemin
Messages : 63
Enregistré le : 21 Mai 2011, 18:55

Graphique de la fonction de vraisemblance

Messagepar Remy Duchemin » 05 Jan 2014, 21:00

Bonsoir,

Je voudrais réaliser avec R le graphique suivant :
http://www.mathworks.fr/help/releases/R2013b/econ/lrtest.png
mais je bloque un peu.
Voilà ce que j'ai pu réaliser :

Code : Tout sélectionner

pp <- seq(0,1,len=501)
FLVvraie <- function(p,k1=48,k2=32,k3=20)
  2*(k1+k2)*log(1-p) + (k2+2*k3)*log(p) + k3 * log(3-2*p)
(p.chapeau <- optimize(FLVvraie,lower=0.2,
             upper=0.4,maximum=TRUE)$maximum)
par(cex=2)
plot(pp, FLVvraie(pp),
     type="l",lwd=3,
     xlab=expression(theta),
     ylab=expression(l(theta)))
par(cex=2)
plot(pp, FLVvraie(pp),
     type="l",lwd=3,
     xlab=expression(theta),
     ylab=expression(l(theta)),
     xlim=c(0.2,0.4),
     ylim=c(FLVvraie(0.2),FLVvraie(p.chapeau)))
abline(v=p.chapeau,col="red",lty=3)
points(p.chapeau,FLVvraie(p.chapeau),col="red",pch=16)

Pourriez-vous m'aider à finaliser le graphique ?
Merci par avance

Remy Duchemin
Messages : 63
Enregistré le : 21 Mai 2011, 18:55

Messagepar Remy Duchemin » 06 Jan 2014, 11:57

La réponse est assez fastidieuse mais votre aide me serait très utile ...

matthieu faron
Messages : 586
Enregistré le : 16 Fév 2011, 11:23

Messagepar matthieu faron » 06 Jan 2014, 13:13

Bonjour,

Peut être pourriez vous nous préciser ce que vous n'arrivez pas à faire sur le graphique en question pour avoir de l'aide un peu plus facilement ?

Le refaire à l'identique exacte ?

Cordialement,
Matthieu FARON

Remy Duchemin
Messages : 63
Enregistré le : 21 Mai 2011, 18:55

Messagepar Remy Duchemin » 06 Jan 2014, 13:45

Merci pour votre réponse. A l'identique est mon objectif. Cependant, ma plus grosse difficulté est d'aligner la contrainte r(théta) avec les lignes verticales.
Si une solution plus simple que la mienne existe, je suis également intéressé. L'intérêt pour moi est de me familiariser avec les graphiques de R.

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

Messagepar Logez Maxime » 06 Jan 2014, 13:51

Bonjour,

honnêtement pour ce type de graph, des logiciels de dessins vectoriels sont bien plus simple à utiliser. Si tu es sous windows, powerpoint fait ça aussi. Je serai toi je sauvegarderais ce que tu as fait en eps ou pdf et ensuite je l'éditerais.

Cordialement,
Maxime

matthieu faron
Messages : 586
Enregistré le : 16 Fév 2011, 11:23

Messagepar matthieu faron » 06 Jan 2014, 13:58

J'allais dire un peu la même chose, à un moment on arrive à un tel degré de personnalisation du graphique qu'il peut aller plus vite de partir d'une base et finir dans un logiciel de dessin vectoriel.

Il existe notamment Inkscape comme logiciel gratuit qui peut le faire.

Après pour ce qui est d'apprendre les graphiques dans R c'est un peu violent comme exemple pour commencer.... et je n'ai pas très bon compris :
est d'aligner la contrainte r(théta) avec les lignes verticales
Matthieu FARON

Remy Duchemin
Messages : 63
Enregistré le : 21 Mai 2011, 18:55

Messagepar Remy Duchemin » 06 Jan 2014, 14:05

Pour la courbe de r(théta) c'est surtout aligner l'intersection avec l'axe des abscisses et la tangente LM de l(théta).
J'ai pas de soucis pour importer le graphique, je suis d'accord avec vous. Mais je trouvais l'exercice intéressant.
Une figure similaire ici :
http://www.ats.ucla.edu/stat/mult_pkg/faq/general/nested_tests.gif
a été fait avec R, sauf erreur de ma part. Toutefois, il n'y a pas le code associé.

Perceval Sondag
Messages : 126
Enregistré le : 09 Avr 2012, 09:55

Messagepar Perceval Sondag » 06 Jan 2014, 16:47

Bonjour,

Ca n'est pas ultra compliqué mais effectivement plein de petits bazar un peu partout, c'est un beau graphique de bricoleur ça ;)

La contrainte avec la fonction curve
curve(r(x), add=TRUE)
Et ajouter un paramètre xlim pour ne pas être embêté par une courbe trop grande.

Les pointillés avec la fonction segments

Le score : en calculant la dérivée en ce point puis la fonction lines

Les flèches avec la fonction arrows.

Si, par après, vous voulez créer une fonction qui fait le tout, c'est pas super compliqué non plus mais ça peut vite partir en vrille pour jouer avec les échelles, donc nécessité de bien savoir jongler avec les axes.
Perceval Sondag

Remy Duchemin
Messages : 63
Enregistré le : 21 Mai 2011, 18:55

Messagepar Remy Duchemin » 06 Jan 2014, 16:59

Sans bricolage, voilà où j'en suis :

Code : Tout sélectionner

x<-seq(0,25, 0.1)
y<- -x^(2)+24*x-108
plot(x,y,
     type="l",lwd=3,
     xlab=expression(theta),
     ylab=expression(l(theta)),
     xaxt = "n",
     yaxt = "n",
     bty = "l")
segments(12, -200, 12, 36, col = "black", lty = "dotted", lwd = 1)
segments(-1, 36, 12, 36, col = "black", lty = "dotted", lwd = 1)
text(12, 40, "T")


Toujours un soucis pour
1. tracer r(theta)
2. tracer le morceau de segment rouge de la tangente
3. écrire du texte en dehors des axes

Remy Duchemin
Messages : 63
Enregistré le : 21 Mai 2011, 18:55

Messagepar Remy Duchemin » 06 Jan 2014, 17:24

J'ai trouvé pour écrire le texte en dehors des axes mais je bloque toujours sur le reste.

Code : Tout sélectionner

par(xpd = NA)
x<-seq(0,25, 0.1)
y<- -x^(2)+24*x-108
plot(x,y,
     type="l",lwd=3,
     xlab=expression(theta),
     ylab=expression(l(theta)),
     xaxt = "n",
     yaxt = "n",
     bty = "l")
segments(12, -138, 12, 36, col = "black", lty = "dotted", lwd = 1)
segments(-1, 36, 12, 36, col = "black", lty = "dotted", lwd = 1)
text(12, 40, "T")
text(-2,36, expression(L(theta)))
text(12,-148, expression(L(theta)))


Perceval Sondag
Messages : 126
Enregistré le : 09 Avr 2012, 09:55

Messagepar Perceval Sondag » 06 Jan 2014, 17:37

tu as l'expression analytique de r(theta) ?

si oui, comme dit plus haut, la fonction curve est la solution tout simplement.

Pour la tengeante, pareil, voir ce que j'ai mis plus haut.
Tu as l'expression 24-2x qui te donne (si mes souvenir de math sont bons) la pente en chaque point.

donc

Code : Tout sélectionner

b <- 24-2*(theta_0)

a <- -theta_0^(2)+24*theta_0-108-pente*theta_0
curve((a+b*x), add=TRUE, col="blue", xlim = c(0,4))


à toi de jouer avec xlim

A toi d'ajouter les xlim
Perceval Sondag

Remy Duchemin
Messages : 63
Enregistré le : 21 Mai 2011, 18:55

Messagepar Remy Duchemin » 06 Jan 2014, 17:51

Ah merci!!
c'est presque bon, mais je n'ai pas l'expression analytique de r(theta)

Perceval Sondag
Messages : 126
Enregistré le : 09 Avr 2012, 09:55

Messagepar Perceval Sondag » 07 Jan 2014, 10:41

Pour plotter une courbe, il faut son expression :roll:
Perceval Sondag


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité