Comment calculer l'intervalle de confiance du rapport de deux moyennes normales

26

Je veux dériver les limites de l' intervalle de confiance de pour le rapport de deux moyennes. Supposons que X 1N ( θ 1 , σ 2 ) et X 2N ( θ 2 , σ 2 ) étant indépendants, le rapport moyen Γ = θ 1 / θ 2 . J'ai essayé de résoudre: Pr ( - z ( α / 2100(1-α)%
X1N(θ1,σ2)X2N(θ2,σ2)Γ=θ1/θ2mais cette équation n'a pas pu être résolue dans de nombreux cas (pas de racines). Est-ce que je fais quelque chose de mal? Est-ce qu'il y a une meilleure approche? Merci

Pr(-z(α/2))X1-ΓX2/σ1+γ2z(α/2))=1-α
francogrex
la source
1
Le problème est que le rapport de deux nombres de deux distributions normales suit la distribution de Cauchy et donc la variance n'est pas définie.
6
@mbq - la distribution de Cauchy ne pose aucun problème pour les intervalles de confiance, car le CDF est la fonction tangente inverse. Il n'est pas nécessaire de définir la variance pour que les CI fonctionnent. Et le rapport de deux VR normaux avec une moyenne nulle est Cauchy, mais pas nécessairement deux RV normaux avec une moyenne non nulle.
probabilités du
@probabilityislogic Bien sûr, je dois arrêter d'essayer de penser le dimanche matin.

Réponses:

31

La méthode de Fieller fait ce que vous voulez - calculer un intervalle de confiance pour le quotient de deux moyennes, toutes deux supposées être échantillonnées à partir de distributions gaussiennes.

  • La citation d'origine est: Fieller EC: La standardisation biologique de l'insuline. Supplément à JR Statist Soc 1940, 7: 1-64.

  • L' article de Wikipedia fait un bon travail de résumé.

  • J'ai créé une calculatrice en ligne qui fait le calcul.

  • Voici une page résumant les mathématiques de la première édition de ma biostatistique intuitive

Harvey Motulsky
la source
Ce sont de très bonnes références, j'aime aussi que vous ayez fait une calculatrice pour cela (+1). Comme prévu cependant, dans votre calculatrice, vous indiquez clairement que lorsque l'intervalle de confiance du dénominateur comprend zéro, il n'est pas possible de calculer l'IC du quotient. Je pense que c'est la même chose qui se produit lorsque j'essaie de résoudre l'équation quadratique. supposons que la variance est 1, mu1 = 0 et mu2 = 1, N = 10000. C'est insoluble.
francogrex
2
merci pour la calculatrice en ligne Harvey, je suis un biologiste typique avec une expérience insuffisante en statistiques et votre calculatrice était exactement ce dont j'avais besoin.
Timtico
Super calculatrice - exactement ce que je cherchais. Merci
Alexander
@ harvey-motulsky le lien vers l'annexe ne fonctionne plus. Je me demandais si le matériel de cette annexe était inclus dans la troisième édition de Biostatistique intuitive?
Gabriel Southern
@GabrielSouthern Merci d'avoir signalé la pourriture du lien. Fixé.
Harvey Motulsky
1

De plus, si vous souhaitez calculer l'intervalle de confiance de Fieller sans utiliser mratios(généralement parce que vous ne voulez pas un ajustement lm simple mais par exemple un ajustement glmer ou glmer.nb), vous pouvez utiliser la FiellerRatioCIfonction suivante , avec modèle la sortie du modèle, nommez le nom du paramètre numérateur, bnommez le nom du paramètre dénomérateur. Vous pouvez également utiliser directement la fonction FiellerRatioCI_basic donnant, a, b et la matrice de covariance entre a et b.

Notez que l'alpha ici est 0,05 et "codé en dur" dans les 1,96 du code. Vous pouvez les remplacer par n'importe quel niveau d'étudiant que vous préférez.

FiellerRatioCI <- function (x, ...) { # generic Biomass Equilibrium Level
    UseMethod("FiellerRatioCI", x)
}
FiellerRatioCI_basic <- function(a,b,V,alpha=0.05){
    theta <- a/b
    v11 <- V[1,1]
    v12 <- V[1,2]
    v22 <- V[2,2]

    z <- qnorm(1-alpha/2)
    g <- z*v22/b^2
    C <- sqrt(v11 - 2*theta*v12 + theta^2 * v22 - g*(v11-v12^2/v22))
    minS <- (1/(1-g))*(theta- g*v12/v22 - z/b * C)
    maxS <- (1/(1-g))*(theta- g*v12/v22 + z/b * C)
    return(c(ratio=theta,min=minS,max=maxS))
}
FiellerRatioCI.glmerMod <- function(model,aname,bname){
    V <- vcov(model)
    a<-as.numeric(unique(coef(model)$culture[aname]))
    b<-as.numeric(unique(coef(model)$culture[bname]))
    return(FiellerRatioCI_basic(a,b,V[c(aname,bname),c(aname,bname)]))
}
FiellerRatioCI.glm <- function(model,aname,bname){
    V <- vcov(model)
    a <- coef(model)[aname]
    b <- coef(model)[bname]
    return(FiellerRatioCI_basic(a,b,V[c(aname,bname),c(aname,bname)]))
}

Exemple (basé sur l'exemple de base standard glm):

 counts <- c(18,17,15,20,10,20,25,13,12)
 outcome <- gl(3,1,9)
 treatment <- gl(3,3)
 glm.D93 <- glm(counts ~ outcome + treatment, family = poisson())

 FiellerRatioCI(glm.D93,"outcome2","outcome3")
ratio.outcome2            min            max 
      1.550427      -2.226870      17.880574
cmbarbu
la source