scipy.stats.random_table#

scipy.stats.random_table = <scipy.stats._multivariate.random_table_gen Objekt>[Quelle]#

Kontingenztabellen aus unabhängigen Stichproben mit festen Randsummen.

Dies ist die Verteilung von Zufallstabellen mit gegebenen Zeilen- und Spaltensummen. Diese Verteilung stellt die Menge von Zufallstabellen unter der Nullhypothese dar, dass Zeilen und Spalten unabhängig sind. Sie wird in Unabhängigkeitstests verwendet.

Aufgrund der angenommenen Unabhängigkeit kann die erwartete Häufigkeit jedes Tabellenelements aus den Zeilen- und Spaltensummen berechnet werden, sodass die Verteilung vollständig durch diese beiden Vektoren bestimmt ist.

Parameter:
rowarray_like

Summe der Tabelleneinträge in jeder Zeile.

colarray_like

Summe der Tabelleneinträge in jeder Spalte.

seed{None, int, np.random.RandomState, np.random.Generator}, optional

Wird zum Ziehen von Zufallsvarianten verwendet. Wenn seed None ist, wird die RandomState Singleton verwendet. Wenn seed eine Ganzzahl ist, wird eine neue RandomState-Instanz verwendet, die mit seed initialisiert wird. Wenn seed bereits eine RandomState- oder Generator-Instanz ist, wird dieses Objekt verwendet. Standard ist None.

Methoden

logpmf(x)

Logarithmus der Wahrscheinlichkeit, dass die Tabelle x in der Verteilung vorkommt.

pmf(x)

Wahrscheinlichkeit, dass die Tabelle x in der Verteilung vorkommt.

mean(row, col)

Mittlere Tabelle.

rvs(row, col, size=None, method=None, random_state=None)

Zufällige Tabellen mit gegebenen Zeilen- und Spaltensummen ziehen.

Hinweise

Die Zeilen- und Spaltenvektoren müssen eindimensional, nicht leer und müssen jeweils auf den gleichen Wert aufsummiert sein. Sie dürfen keine negativen oder nicht-ganzzahligen Einträge enthalten.

Zufallselemente aus der Verteilung werden entweder mit Boyetts [1] oder Patefields Algorithmus [2] generiert. Boyetts Algorithmus hat eine Zeit- und Speicherkomplexität von O(N), wobei N die Gesamtsumme der Einträge in der Tabelle ist. Patefields Algorithmus hat eine Zeitkomplexität von O(K x log(N)), wobei K die Anzahl der Zellen in der Tabelle ist und nur einen kleinen konstanten Arbeitsaufwand erfordert. Standardmäßig wählt die Methode rvs den schnellsten Algorithmus basierend auf der Eingabe aus, aber Sie können den Algorithmus mit dem Schlüsselwort method angeben. Zulässige Werte sind "boyett" und "patefield".

Hinzugefügt in Version 1.10.0.

Referenzen

[1]
  1. Boyett, AS 144 Appl. Statist. 28 (1979) 329-332

[2]

W.M. Patefield, AS 159 Appl. Statist. 30 (1981) 91-97

Beispiele

>>> from scipy.stats import random_table
>>> row = [1, 5]
>>> col = [2, 3, 1]
>>> random_table.mean(row, col)
array([[0.33333333, 0.5       , 0.16666667],
       [1.66666667, 2.5       , 0.83333333]])

Alternativ kann das Objekt (als Funktion) aufgerufen werden, um die Zeilen- und Spaltenvektorsummen festzulegen und eine "eingefrorene" Verteilung zurückzugeben.

>>> dist = random_table(row, col)
>>> dist.rvs(random_state=123)
array([[1, 0, 0],
       [1, 3, 1]])