J'ai une fonction R qui trace deux courbes de superposition pour les arguments utilisateur d
, n1
et n2
. Ces deux courbes (tracés) se rapportent à "d".détermination d'une plage pour afficher côte à côte deux distributions dynamiquement changeantes
Ma question est de savoir comment puis-je mieux mange la plage (à savoir, from
et to
au sein curve
) de telle sorte que cette gamme permet toujours les deux courbes de montrer correctement?
J'ai essayé d'utiliser la règle: de =min.d = d-(15*d.SE)
à =max.d = d+(15*d.SE)
(où d.SE
est l'erreur type de "d" Mais cette règle échoue dans de nombreuses situations..)
d.sampling = function(d, n1, n2 = NA){
N = ifelse(is.na(n2), n1, (n1 * n2)/(n1 + n2))
df = ifelse(is.na(n2), n1 - 1, (n1 + n2) - 2)
d.SE = 1/sqrt(N)
min.d = d-(15*d.SE) ; max.d = d+(15*d.SE)
curve(dt(x*sqrt(N), df)*sqrt(N), from = min.d, to = max.d, col = 2)
curve(dt(x*sqrt(N), df, d*sqrt(N))*sqrt(N), n = 1e4, lty = 2, col = 4, add = T)
}
# Example of use:
d.sampling(n1 = 86, d = 1) # shows fine now, but change `d` to 2 and it fails
C'était moi de tricher un peu. Le 'x * sqrt (N)' dans vos appels à 'curve()' a pour effet de compresser la courbe de distribution t résultante d'un facteur de sqrt (N) dans la direction x. Je profitais du fait que 'd.SE == 1/sqrt (N)' pour redimensionner les valeurs quantiles pour les mettre dans les endroits appropriés sur l'échelle de la parcelle. –
Honnêtement, j'ai commencé avec 'qt()' à l'esprit pour renvoyer des quantiles, puis je me suis baladé jusqu'à ce que je trouve quelque chose qui donne des limites de traçage raisonnables ... –