Restanalyse in Python (Ergänzung: Cochrane-Regeln)

Einführung

Es gibt einen Kreuztabellentest namens χ-Quadrat-Test, und wenn Sie dies tun, besteht eine Beziehung zwischen Kategorien (z. B. Männer mögen Tee, Frauen mögen Tee). (Bevorzugen Sie Wasser usw.) kann statistisch getestet werden. Weitere Informationen zum χ-Quadrat-Test selbst finden Sie unter dem obigen Link. Bei der Durchführung des χ-Quadrat-Tests sind jedoch zwei Punkte zu beachten, selbst wenn der p-Wert unter das Signifikanzniveau fällt.

  1. Ist die Anzahl der Proben nach Kategorien ausreichend gesichert?

Müssen berücksichtigt werden. Schließlich wird durch den χ-Quadrat-Test das Vorhandensein oder Nichtvorhandensein einer Verzerrung in der gesamten Kreuztabellen-Tabelle getestet, und selbst wenn die Testergebnisse signifikant sind, bedeutet dies nicht, dass alle Kombinationen von Kategorien miteinander verbunden sind.

Cochrane Regeln

Ursprünglich ist dies ein Standard, der vor der Durchführung des χ-Quadrat-Tests bestätigt werden muss. Als Kriterium für die Anwendung des χ-Quadrat-Tests gibt es eine Aussage, dass ** Zellen mit einem erwarteten Wert von weniger als 5 in der Kreuztabellentabelle 20% der Gesamtzahl ** nicht überschreiten dürfen, was der ** Cochrane-Regel ** entspricht. Es gibt verschiedene Theorien im Teil von "20% oder mehr", und verschiedene Notationen wie "25% oder mehr" und "mehr als 20%" können gesehen werden. Verwenden Sie scipy.stat.chi2_contingency für den χ-Quadrat-Test in Python. Ich denke, dass es viele gibt, also überprüfen Sie die Cochrane-Regel anhand der von dieser Funktion zurückgegebenen Erwartungswerttabelle.

#χ-Quadrat-Testkreuz ist ein numpy zweidimensionales Array
x2, p, dof, expected = stats.chi2_contingency(cross)
expected = np.array(expected)
#Cochrane Regeln
expected < 5

Wenn die Anzahl der True-Zellen weniger als 20% der Gesamtzahl beträgt, ist die Cochrane-Regel erfüllt. Wenn Sie feststellen, dass Ihre Daten diese Regel nicht erfüllen, dann [Fisher's Accurate Probability Test](https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83] % 83% E3% 82% B7% E3% 83% A3% E3% 83% BC% E3% 81% AE% E6% AD% A3% E7% A2% BA% E7% A2% BA% E7% 8E% 87 Es wäre besser, zu% E6% A4% 9C% E5% AE% 9A zu wechseln.

Restanalyse

Wenn Sie einen χ-Quadrat-Test mit R durchführen, werden die angepassten standardisierten Residuen jeder Zelle gleichzeitig mit dem Test zurückgegeben. Es gibt also kein Problem, aber im Fall von Python müssen Sie dies anscheinend manuell tun. Die Definition des Residuums ist Rest = Beobachteter Wert - Erwarteter Wert Zur Berechnung des angepassten standardisierten Residuums muss jedoch die ** Residuenvarianz ** neu definiert werden.

Restdispersion= (1 - \frac{Horizontale Umfangssumme}{Gesamtzahl})(1 - \frac{Vertikale Umfangssumme}{Gesamtzahl})

Einzelheiten entnehmen Sie bitte der unten stehenden Referenzseite. Auf dieser Grundlage wird auf jeden Fall das angepasste standardisierte Residuum erstellt

Angepasster standardisierter Rest= \frac{Restfehler}{\sqrt{Erwarteter Wert*Restfehler分散}}

Es kann wie folgt berechnet werden. Wenn Sie den Ablauf bis zu diesem Punkt in Python-Code schreiben, sieht es so aus.

#Restfehler
res = cross - expected
#Finden Sie die Restvarianz
res_var = np.zeros(res.shape)
it = np.nditer(cross, flags=['multi_index'])
while not it.finished:
    var = (1 - (cross[:,it.multi_index[1]].sum() / cross.sum()))*(1-(cross[it.multi_index[0],:].sum() / cross.sum()))
    res_var[it.multi_index[0], it.multi_index[1]] = var
    it.iternext()
#Finden Sie den angepassten standardisierten Rest
stdres = res / np.sqrt(expected * res_var)
#Dieser angepasste standardisierte Residuum ist der absolute Wert 1.Ein signifikanter Unterschied kann über 96 behauptet werden. Hier wird der Wert aus der Normalverteilungstabelle in den p-Wert konvertiert und angezeigt.
np.apply_along_axis(stats.norm.sf, 0, np.abs(stdres[0,:]))

Fanden Sie es nützlich?

Referenzseite

https://note.chiebukuro.yahoo.co.jp/detail/n71838

Recommended Posts

Restanalyse in Python (Ergänzung: Cochrane-Regeln)
Assoziationsanalyse in Python
Regressionsanalyse mit Python
Gehirnwellenanalyse mit Python: Python MNE-Tutorial
Erste einfache Regressionsanalyse in Python
In Python implementierte Widrow-Hoff-Lernregeln
Implementierte Perceptron-Lernregeln in Python
Planare Skelettanalyse in Python (2) Hotfix
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Datenanalyse Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
Überlebensanalyse mit Python 2-Kaplan-Meier-Schätzung
Führen Sie eine Entitätsanalyse mit spaCy / GiNZA in Python durch
Datenanalyse in Python: Ein Hinweis zu line_profiler
Plink in Python
[Umgebungskonstruktion] Abhängigkeitsanalyse mit CaboCha mit Python 2.7
Konstante in Python
Experimentieren Sie mit NIST 800-63B-Kennwortregeln in Python
Python-Lernen (Ergänzung)
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Aufgezeichnete Umgebung für die Datenanalyse mit Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
2. Multivariate Analyse in Python 1-1. Einfache Regressionsanalyse (Scikit-Learn)
2. Multivariate Analyse in Python 3-2. Hauptkomponentenanalyse (Algorithmus)
Führen Sie die Sortierimplementierung / Berechnungsmengenanalyse zusammen und experimentieren Sie in Python
2. Multivariate Analyse in Python 7-3. Entscheidungsbaum [Rückgabebaum]
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
2. Multivariate Analyse in Python 2-1. Multiple Regressionsanalyse (Scikit-Learn)