Neu in

Nichtparametrische Tests für Trend

Trend tests involve responses in ordered groups. They test whether response values tend to either increase or decrease across groups.
Trend tests are typically used when there is only a small amount of data and no covariates to control for, and a test yielding a p-value valid in small samples is desired. nptrend has an option to compute exact p-values based on Monte Carlo permutations or a full enumeration of the permutation distribution (the latter practical only for extremely small samples).
nptrend performs four different tests for trend:

  • the Cochran–Armitage test,
  • the Jonckheere–Terpstra test,
  • the linear-by-linear trend test, and
  • a test using ranks developed by Cuzick.

To calculate the Cochran–Armitage statistic for trend, you type

. nptrend relief, group(dose) carmitage

Höhepunkte

  • nptrend führt vier nichtparametrische Tests für den Trend durch
    • Cochran-Armitage-Test
    • Jonckheere-Terpstra-Test
    • Linear-durch-linear-Test
    • Cuzick’s Test mit Rängen
  • Option für exakte p-Werte

Zeigen Sie, wie es funktioniert

Für den Cochran-Armitage-Test (wenn die Antwort 0/1 ist), den Test mit linearem Trend und den Cuzick-Test haben die Gruppen ebenfalls Scores. Es wird der Trend in den Anteilen der positiven Antworten über die Gruppen hinweg getestet.
Hier haben wir fiktive Daten aus einer klinischen Studie mit einem neuen Medikament zur Behandlung von Migräne. Die Variable Dosis enthält die Dosis des Medikaments, die einem Probanden verabreicht wurde. Die Variable Linderung ist 0/1, wobei 0 keine Linderung und 1 teilweise oder vollständige Linderung anzeigt.
Hier finden Sie eine tabellarische Auflistung der Daten:

. webuse migraine
(Fictional migraine drug data)

. tabulate dose relief, row nokey

Relief of migraine
Mycureit after 2 hours
dose in mg 0 1 Total
10 80 120 200
40.00 60.00 100.00
20 92 108 200
46.00 54.00 100.00
30 83 117 200
41.50 58.50 100.00
40 63 137 200
31.50 68.50 100.00
Total 318 482 800
39.75 60.25 100.00

Wir werden testen, ob es einen Trend nach Dosis im Anteil der Probanden gibt, die Erleichterung berichten.

. nptrend relief, group(dose) carmitage

Cochran–Armitage test for trend

   Number of observations =      800
         Number of groups =        4
Number of response levels =        2

Mean
response Number
Group Group score score of obs
dose
10 10 .6 200
20 20 .54 200
30 30 .585 200
40 40 .685 200
Statistic = .003 Std. err. = .0015476 z = 1.939 Prob > |z| = 0.0526 Test of departure from trend: chi2(2) = 5.45 Prob > chi2 = 0.0656

nptrend zeigt zunächst eine Tabelle mit dem mittleren Antwortwert nach Gruppe an. Der mittlere Antwortwert ist in diesem Fall einfach der Anteil der Probanden in der Gruppe, die Erleichterung melden.
Die Cochran-Armitage z-Statistik testet auf einen linearen Trend. Es wird auch eine X2-Statistik berechnet, die auf die Abweichung von einem linearen Trend testet.
Wenn entweder die z-Statistik für den linearen Trend oder die X2-Statistik für die Abweichung vom linearen Trend groß ist, bedeutet dies, dass der Test auf Unabhängigkeit zwischen Antwort und Gruppe zurückgewiesen wird. Wenn z groß ist, bedeutet dies, dass es einen linearen Trend gibt, der die Unabhängigkeit zurückweist.Wenn X2 groß ist, bedeutet dies, dass es andere Unterschiede als den linearen Trend gibt, die die Unabhängigkeit zurückweisen.
Im obigen Beispiel ergab der lineare Test für den Trend einen p-Wert von 0,0526, der auf dem Niveau von 0,05 nicht ganz die Signifikanz erreicht. Der Test auf Abweichung vom Trend ergab einen p-Wert von 0,0656, d. h. es gibt schwache Hinweise, die keine Signifikanz erreichen, für einen nichtlinearen Zusammenhang zwischen Dosis und Linderung.
Andere als lineare Trends können auch mit der Option scoregroup() getestet werden. In diesem Beispiel würde die Angabe von scoregroup(1 4 9 16) einen quadratischen Trend der Dosis testen.
Der Cochran-Armitage-Test erfordert, dass die Antworten 0/1 sind oder der Gruppenindikator 0/1 ist. Die anderen von nptrend berechneten Trendtests haben keine Einschränkung bezüglich der Antwort; die Antwortvariable kann jeden Wert haben.
Hier ist ein Beispiel, bei dem die Antworten die Exposition der Augen gegenüber ultravioletter Strahlung für 32 Sonnenbrillenpaare darstellen. Die Sonnenbrillen werden nach der Menge des durchgelassenen sichtbaren Lichts in 3 Gruppen eingeteilt. Wir listen einige der Daten auf:

. webuse sg
(Ultraviolet radiation exposure with sunglasses)

. list in 1/12, separator(6)

  group exposure
1. < 25% 1.4
2. < 25% 1.4
3. < 25% 1.4
4. < 25% 1.6
5. < 25% 2.3
6. < 25% 2.5
7. 25% to 35% .9
8. 25% to 35% 1
9. 25% to 35% 1.1
10. 25% to 35% 1.1
11. 25% to 35% 1.2
12. 25% to 35% 1.2

Der Jonckheere-Terpstra-Test ist nützlich, wenn es nicht klar ist, was der Trend sein könnte, und wir einfach auf irgendeinen Trend testen wollen. Er testet, ob die Reihenfolge der Antworten mit der Reihenfolge der Gruppen verbunden ist.
Um den Jonckheere-Terpstra-Test zu berechnen, geben wir die Option jterpstra an.

. nptrend exposure, group(group) jterpstra

Jonckheere–Terpstra test for trend

   Number of observations =       32
         Number of groups =        3
Number of response levels =       23

Mean
response Number
Group Group score score of obs
group
< 25% 1 1.766667 6
25% to 35% 2 2.311111 18
> 35% 3 4.85 8
Statistic = 82 Std. err. = 54.80056 z = 1.496 Prob > |z| = 0.1346

Wir sehen, dass der mittlere Antwortwert mit steigendem Gruppenindikator zunimmt, aber der p-Wert aus dem Jonckheere-Terpstra-Test beträgt 0,1346 und erreicht damit keine Signifikanz auf dem 0,05-Niveau.
Da die Jonckheere-Terpstra-Statistik auf jede Art von Trend in den Antworten über geordnete Gruppen hinweg testet, ist sie nicht so aussagekräftig wie ein Test, der den wahren Trend genau vermutet. Der linear-by-lineare Trendtest ermöglicht Ihnen genau dies zu tun. Der linear-by-lineare Trendtest verwendet die numerischen Werte der Antworten, um den zu testenden Trend zu spezifizieren. Die Hypothese, dass der Trend zwischen den Gruppen variiert, wird durch die numerischen Werte der Gruppenvariablen angegeben.
Die linear-by-lineare Statistik ist äquivalent zum Pearson-Korrelationskoeffizienten. Der Unterschied besteht darin, dass der Pearson-Korrelationskoeffizient durch die Standardabweichungen der Scores standardisiert wird. Die p-Werte sind leicht unterschiedlich, da der p-Wert für den linear-bis-linearen Test auf seiner Permutationsverteilung basiert, während der p-Wert für den Pearson-Korrelationskoeffizienten Normalität annimmt.
Um den linearen Test zu berechnen, geben wir die Option linear an. Wir geben auch notable an, um die Anzeige der mittleren Antwortwerte nach Gruppe zu unterdrücken.

. nptrend exposure, group(group) linear notable

Linear-by-linear test for trend

   Number of observations =       32
         Number of groups =        3
Number of response levels =       23

                Statistic = .7035156
                Std. err. = .3063377
                        z =    2.297
               Prob > |z| =   0.0216

Der p-Wert aus dem linear-by-linearen Test beträgt 0,0216, was sich deutlich von dem durch den Jonckheere-Terpstra-Test berechneten p-Wert unterscheidet, der 0,1346 beträgt. Dies ist nicht überraschend, da der linear-by-lineare Test einen bestimmten Trend basierend auf Zahlenwerten annimmt, während die Jonckheere-Terpstra-Statistik auf einen beliebigen Trend testet.
Der vierte von nptrend berechnete Trendtest ist ein von Cuzick entwickelter Test auf Basis von Rängen.

. nptrend exposure, group(group) cuzick

. nptrend exposure, group(group) cuzick notable

Cuzick's test with rank scores

   Number of observations =       32
         Number of groups =        3
Number of response levels =       23

                Statistic =  1.65625
                Std. err. = 1.090461
                        z =    1.519
               Prob > |z| =   0.1288

In diesem Fall ergibt sich ein p-Wert, der dem p-Wert aus dem Jonckheere-Terpstra-Test ähnlich ist.

Exakte p-Werte

nptrend berechnet auch exakte p-Werte unter Verwendung von Monte-Carlo-Permutationen, wenn die Option exact angegeben ist. Hier wird der exakte p-Wert für den Jonckheere-Terpstra-Test berechnet.

. nptrend exposure, group(group) jterpstra notable exact

Permutations (10,000): ..........1,000..........2,000..........3,000..........4,000..........5,00
> 0..........6,000..........7,000..........8,000..........9,000..........10,000 done

Jonckheere–Terpstra test for trend

   Number of observations =       32
         Number of groups =        3
Number of response levels =       23

                Statistic =       82
                Std. err. = 54.80056
                        z =    1.496
               Prob > |z| =   0.1346
               Exact prob =   0.1510 (10,000 Monte Carlo permutations)

Standardmäßig werden 10.000 Monte-Carlo-Permutationen verwendet. Dies ergibt einen exakten p-Wert von 0,1510, der sich geringfügig von dem p-Wert von 0,1346 unterscheidet, der mit einer normalen Näherung berechnet wurde.
Monte-Carlo-Permutationen liefern Ergebnisse mit Zufallsfehlern, daher können für eine höhere Genauigkeit mehr Permutationen berechnet werden. Im Folgenden verwenden wir 100.000 Permutationen und lassen bei jeder 1.000sten Permutation einen Punkt anzeigen, um den Fortschritt zu überwachen. Wir geben einen Zufallszahlen-Seed an, damit wir die Ergebnisse duplizieren können, und die Option show, die eine detaillierte Tabelle mit den Monte-Carlo-Ergebnissen anzeigt.

. nptrend exposure, group(group) jterpstra notable ///
> exact(montecarlo, reps(100000) dots(1000) rseed(1234) show)

Permutations (100,000): ..........10,000..........20,000..........30,000..........40,000....
> ......50,000..........60,000..........70,000..........80,000..........90,000..........100,
> 000 done

Monte Carlo permutation results                Number of observations =      32
Permutation variable: group                    Number of permutations = 100,000

Monte Carlo error
T T(obs) Test c n p SE(p) [95% CI(p)]
_pm_1 82 lower 93358 100000 .9336 .0008 .9320 .9351
upper 6874 100000 .0687 .0008 .0672 .0703
two-sided .1375 .0011 .1353 .1396
Notes: For lower one-sided test, c = #{T <= T(obs)} and p = p_lower = c/n. For upper one-sided test, c = #{T >= T(obs)} and p = p_upper = c/n. For two-sided test, p = 2*min(p_lower, p_upper); SE and CI approximate. Jonckheere–Terpstra test for trend Number of observations = 32 Number of groups = 3 Number of response levels = 23 Statistic = 82 Std. err. = 54.80056 z = 1.496 Prob > |z| = 0.1346 Exact prob = 0.1375 (100,000 Monte Carlo permutations)

er exakte p-Wert aus der Monte-Carlo-Berechnung beträgt 0,1375 und liegt damit nahe am ungefähren p-Wert von 0,1346. Aus der detaillierten Ergebnistabelle geht hervor, dass das 95%-Konfidenzintervall für den Monte-Carlo-p-Wert [0,1353, 0,1396] beträgt, was den ungefähren p-Wert nicht
Dieses Beispiel hat nur 32 Beobachtungen. Sollten wir die Ergebnisse veröffentlichen wollen, würden wir wahrscheinlich nptrend erneut ausführen und dabei 1.000.000 oder mehr Permutationen angeben, um den Monte-Carlo-Fehler weiter zu reduzieren. Die Permutationen werden mit einem schnellen Algorithmus generiert, und die Berechnung ist nicht zeitaufwändig.
Für extrem kleine Datensätze kann die Option exact(enumerate) verwendet werden, um die Permutationsverteilung vollständig aufzuzählen. Sie liefert einen exakten p-Wert ohne Monte-Carlo-Fehler.