2013-04-30 1 views
1

Je suis très novice en matière d'apprentissage automatique et je suis également ouvert aux suggestions. J'ai lu quelque chose appelé risque minimax aujourd'hui et je me demandais si c'était possible dans mon cas. J'ai deux ensembles de données et je suis intéressé à trouver une ligne (ou une limite pour être plus précis) de sorte que la zone sous la courbe de gauche à la droite de la ligne verticale est égale à la zone sous la courbe droite de la à gauche de la ligne verticale. Y a-t-il un moyen de le faire dans R, c'est-à-dire de trouver l'emplacement exact pour dessiner la ligne verticale?Trouver une limite dans un diagramme de densité

Je mis quelques exemples de données ici qui peut être utilisé pour tracer le graphique suivant: https://gist.github.com/Legend/2f299c3b9ba94b9328b2

enter image description here

Répondre

3

Supposons que vous utilisez la fonction density pour obtenir la densité du noyau estimée pour chaque réponse, puis suivez ce link pour obtenir le CDF du noyau estimé, votre question deviendrait de trouver une valeur t, tel que: 1 - cdf1(t) = cdf2(t), qui peut être résolu par la fonction régulière de trouver racine:

x1 <- subset(data, Type == 'Curve 1')$Value 
x2 <- subset(data, Type == 'Curve 2')$Value 

pdf1 <- density(x1) 
f1 <- approxfun(pdf1$x, pdf1$y, yleft = 0, yright = 0) 
cdf1 <- function(z){ 
    integrate(f1, -Inf, z)$value 
} 

pdf2 <- density(x2) 
f2 <- approxfun(pdf2$x, pdf2$y, yleft = 0, yright = 0) 
cdf2 <- function(z){ 
    integrate(f2, -Inf, z)$value 
} 

Target <- function(t){ 
    1 - cdf1(t) - cdf2(t) 
} 

uniroot(Target, range(c(x1, x2)))$root 

R > uniroot(Target, range(c(x1, x2)))$root 
[1] 0.06501821 
+0

+1 Merci. C'est génial! Je me demande simplement s'il y a aussi un moyen de trouver l'aire sous la courbe (c'est-à-dire la zone entre la courbe et cette ligne verticale)? – Legend

+0

Cela devrait être la fonction ci-dessus 'cd1f (a)' (pour la courbe de gauche), où 'a' est votre point de coupure (ligne verticale). Il a approximativement intégré votre pdf (fonction de densité) de -infinity à votre point de coupe. – liuminzhao

+0

Super! C'est ce que je voulais. Merci encore pour votre temps. – Legend

Questions connexes