Hallo zusammen: Ich habe einen Beispieldatensatz angehängt, um ein Problem zu verdeutlichen, das mich verwirrt. Angenommen, ich möchte ein Konfidenzintervall für die Differenz zweier Proportionen. Das sollte einfach genug sein. Über „Y durch X anpassen“ (JMP v18.0.0) erhalte ich drei Intervalle unter den folgenden Überschriften:
Zwei-Stichproben-Test für Proportionen.
Risikodifferenz
TOST-Tests

Wie Sie sehen, stimmen die Intervalle nicht überein.
Meine Frage(n) ist/sind folgende:
1. Warum sind sie nicht gleich?
2. Welche Formeln werden jeweils verwendet?
3. Übersehe ich etwas?
Ich habe dies für den Bericht zu zwei Stichprobenanteilen gefunden (könnte meiner Meinung nach expliziter sein).
Zwei-Stichproben-Test für Proportionsbericht
Vielen Dank für Ihre sachkundige Rücksichtnahme!
Zu Ihrer Information: Ich habe den technischen Support angefragt und Folgendes erhalten.
Die drei Tests verwenden leicht unterschiedliche Methoden, was zu den beobachteten Unterschieden in den Konfidenzintervallen führt. Die Methoden sind alle in der SAS-Dokumentation hier beschrieben: https://go.documentation.sas.com/doc/en/statcdc/14.2/statug/statug_freq_details53.htm#statug.freq.freqrdiffcl
1. Für den Zweistichprobentest für Proportionen verwendet JMP die Agresti-Caffo-Grenze: Skript folgt.
x1 = 19; n1 = 20;
x2 = 18; n2 = 20;
/* proportion difference */
diff = x1/n1 - x2/n2;
/* Calculation for CI for Two Sample Test for Proportion */
p1 = (x1+1)/(n1+2);
p2 = (x2+1)/(n2+2);
pdiff= p1 - p2;
lower = pdiff - normalquantile(.95)*sqrt(p1*(1-p1)/(n1+2)+p2*(1-p2)/(n2+2));
upper = pdiff + normalquantile(.95)*sqrt(p1*(1-p1)/(n1+2)+p2*(1-p2)/(n2+2));
show(lower, upper);
2. Das Konfidenzintervall für die Risikodifferenz verwendet das Wald-Intervall: Skript folgt.
/* Calculation for CI for Risk Difference */
p1 = (x1)/(n1);
p2 = (x2)/(n2);
diff = x1/n1 - x2/n2;
lower = diff - normalquantile(.95)*sqrt(p1*(1-p1)/(n1)+p2*(1-p2)/(n2));
upper = diff + normalquantile(.95)*sqrt(p1*(1-p1)/(n1)+p2*(1-p2)/(n2));
show(lower, upper);
3. Die Konfidenzgrenzen für den Risikounterschied im Äquivalenztest verwenden die Miettinen-Nurminen-Konfidenzgrenzen (Score): Es folgt das Skript.
/* Calculation for CI for Equivalence Test */
/* mnStdEquivDiff is a function to calculate the standard deviation of se(p1-p2) */
mnStdEquivDiff=Function({n11, n21, n1, n2, n, margin },
{default local},
p1_hat=n11/n1;
p2_hat=n21/n2;
theta=n2/n1;
d=-p1_hat*margin*(1+margin);
c=margin^2+margin*(2*p1_hat+theta+1) + p1_hat + theta*p2_hat;
b=-(1+theta+p1_hat + theta*p2_hat + margin*(theta+2));
a=1+theta;
v=b^3/(3*a)^3-b*c/(6*a^2) + d/(2*a);
if(v>0, sign=1, sign=-1);
u=sign*root(b^2/(3*a)^2 -c/(3*a));
w=(pi()+ArcCosine(v/u^3))/3;
p1_tlt=2*u*cosine(w)-b/(3*a);
p2_tlt =p1_tlt -margin;
var1=p1_tlt*(1-p1_tlt)/n1;
var2=p2_tlt*(1-p2_tlt)/n2;
correct=n/(n-1);
correct=1;
std_diff=root(correct*(var1+var2));
std_diff;
);
/* Calculation using the example data */
n11=19;
n21=18;
n1=20;
n2=20;
n=40;
alpha=0.05;
p1=n11/n1;
p2=n21/n2;
diff=p1-p2;
show(diff);
maxit=100;
conv = .00000001;
z=ChiSquare Quantile( 0.9, 1 );
pdiff = diff;
correct=1;
//calculate the lower confidence limit
inc=1+diff;
converged = 0;
for (i = 0, i < maxit, i++,
inc *= 0.5;
lcl = pdiff - inc;
var = mnStdEquivDiff(n11, n21, n1, n2, n, lcl);
var = var * var;
var *= correct;
d = diff - lcl;
if( var > 0, score=(d * d) / var, score=. );
if (score < z, pdiff = lcl);
if ((inc < conv) | abs(z - score) < conv,
converged = 1;
break();
);
);
if ((i == maxit) & converged==0, lcl = MACMISSING);
//calculate the upper confidence limit
inc=1-diff;
converged = 0;
for (i = 0, i < maxit, i++,
inc *= 0.5;
ucl = pdiff + inc;
var = mnStdEquivDiff(n11, n21, n1, n2, n, ucl);
var = var * var;
var *= correct;
d = diff - ucl;
if( var > 0, score=(d * d) / var, score=. );
if (score < z, pdiff = ucl);
if ( (inc < conv) | abs(z - score) < conv,
converged = 1;
break();
);
);
if ((i == maxit) & converged==0, ucl = MACMISSING);
show(lcl, ucl);
Sie sagten außerdem, sie würden „zwei Anfragen an das Entwicklungsteam richten. Eine an das Dokumentationsteam, um die Referenzen (und statistischen Details) für jede der verschiedenen Methoden hinzuzufügen. Für die andere werde ich eine Funktionsanfrage an das Entwicklungsteam stellen, damit der Benutzer die gewünschte Methode auswählen kann.“
Der technische Support ist wie immer sehr hilfreich, gründlich und professionell.