Rufen Sie R aus JAVA Chi-Quadrat-Statistik und p-Wert
Ich habe zwei 4*4 Matrizen in JAVA, wo eine matrix hält, beobachtet, zählt und der andere erwartet zählt.
Brauche ich eine automatisierte Methode zur Berechnung der p-Wert der chi-Quadrat-Statistik zwischen diesen beiden Matrizen; aber JAVA hat keine solche Funktion, soweit ich informiert bin.
Kann ich die Berechnung der chi-square und den p-Wert durch das Lesen der beiden Matrizen in R als .csv-Datei-Formate, und verwenden Sie dann den chisq.test-Funktion wie folgt:
obs<-read.csv("obs.csv")
exp<-read.csv("exp.csv")
chisq.test(obs,exp)
wo das format der .csv-Dateien wie folgt:
A, C, G, T
A, 197.136, 124.32, 63.492, 59.052
C, 124.32, 78.4, 40.04, 37.24
G, 63.492, 40.04, 20.449, 19.019
T, 59.052, 37.24, 19.019, 17.689
Gegeben, diese Befehle, R-geben Sie ein output-format:
X-squared = 20.6236, df = 9, p-value = 0.01443
enthält den p-Wert, den ich suchte.
Kennt jemand einen effizienten Weg, um den Prozess zu automatisieren:
1) die Ausgabe von meinem Matrizen von JAVA-in die .csv-Dateien
2) Hochladen der .csv-Dateien in R
3) Aufruf der chisq.test auf der .csv-Dateien in R
4) die Rückgabe der ausgegebenen p-Wert wieder in JAVA?
Vielen Dank für jede Hilfe....
InformationsquelleAutor | 2013-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es (mindestens) zwei Möglichkeiten.
Befehlszeile & Scripts
Führen Sie Rscripts von der Befehlszeile aus mit
Rscript.exe
. E. g. in Ihrem Skript müssten Sie:Anstatt CSVs in Java und R Lesen Sie Sie, Sie sollten in der Lage sein, Sie zu übergeben direkt zum R. ich sehe nicht die Notwendigkeit, CSVs erstellen und Daten übergeben, die Art und Weise, es sei denn, Ihre Matrizen sind ziemlich groß. Gibt es Einschränkungen bei der Größe der Kommandozeilen-Argumente übergeben werden können (variiert je nach Betriebssystem, denke ich).
Können Sie Argumente übergeben, die in Rscripts und analysieren Sie mit Hilfe der
commandArgs()
Funktionen oder mit verschiedenen Paketen (z.B. optparse oder getopt). Sehen diesen thread für mehr Informationen.Gibt es mehrere Wege aufrufen und Lesen aus der Befehlszeile in Java. Ich weiß nicht genug über Sie, um Ihnen Ratschläge, aber ein bisschen googeln wird Ihnen ein Ergebnis. Aufrufen eines Skripts von der Kommandozeile ist wie folgt:
JRI
JRI können Sie sprechen, um R direkt aus Java. Hier ist ein Beispiel, wie Sie bestehen würde, ein double-array R und R Summe (ist Java jetzt):
Die Funktion
assign()
hier dieselbe ist, wie dies zu tun, in R:Sollten Sie in der Lage sein, um herauszufinden, wie diese verlängert werden, um die Arbeit mit einer matrix.
Ich denke, JRI, ist ziemlich schwierig am Anfang. Also, wenn Sie erhalten möchten diese schnell erledigt das Kommandozeilen-option ist wohl am besten. Ich würde sagen, die JRI Ansatz ist weniger chaotisch, wenn Sie es bekommen set-up, obwohl. Und wenn Sie Situationen, wo Sie haben eine Menge hin und her zwischen R und Java ist es auf jeden Fall besser als das aufrufen von verschiedenen Skripten.
Ich bekomme den Fehler: der import org.rosuda.JRI.REXP nicht gelöst werden können, importieren Sie org.rosuda.JRI.Rengine nicht gelöst werden können, Rengine kann nicht aufgelöst werden zu einem Typ. Jede Idee, was könnte dies verursachen? Nochmals vielen Dank...
Ich sehe Sie bereits eröffnet, eine weitere Frage zu diesem. Wenn Sie weiterhin Probleme bei der Einrichtung würde ich empfehlen, das plugin habe ich vorgeschlagen, in meiner Antwort (letzter link). Es kümmert sich um all den stress der Einstellung JRI kann überraschend schwierig.
InformationsquelleAutor MadScone
Überprüfen Sie diese Seite JRI
Beschreibung Ihrer Website:
InformationsquelleAutor rarry
RCaller 2.2 können tun, was Sie tun möchten. Nehmen wir an, die Frequenz-matrix ist gegeben als in deiner Frage. Das führte zu p ist.Wert und df Variablen berechnet werden kann, und kehrte mit dem folgenden code:
Ausgabe:
Können Sie die technischen details in hier
InformationsquelleAutor jbytecode
Rserve ist ein weiterer Weg, um Ihre Daten von Java nach R und wieder zurück. Es ist ein server nimmt die R-Skripte als string-Eingänge. Sie können einige string-parsing und Konvertierung in Java zu konvertieren, die Matrizen in strings, die eingegeben werden können in R.
Ist hier einige weitere Informationen über Rserve. Dies ist übrigens auch, wie Tableau kommunizieren kann, mit R als auch mit Ihren f-Anschluss.
https://cran.r-project.org/web/packages/Rserve/index.html
InformationsquelleAutor Vikas Kache
1) die Ausgabe von meinem Matrizen von JAVA-in die .csv-Dateien
Verwenden CSV-libraies, würde ich empfehlen, http://opencsv.sourceforge.net/
2) Hochladen der .csv-Dateien in R
3) Aufruf der chisq.test auf der .csv-Dateien in R
2 & 3 ziemlich gleichen,
Sie besser eingestellt Skript zu starten, in R.
Damit Sie ausgeführt werden können
und verwenden Sie eindeutige Namen für die csv-Dateien zum Beispiel:
Und verwenden Sie dann
4) die Rückgabe der ausgegebenen p-Wert wieder in JAVA?
Sie kann nur Lesen, die Ausgabe von R, wenn Sie mit getRuntime().exec() aufrufen, R.
Ich würde auch empfehlen, einen Blick auf Die Apache-Statistiken Lib & Wie berechne PValue von ChiSquare. Vielleicht können Sie Leben, ohne R alle 🙂
InformationsquelleAutor Vasily
Empfehle ich einfach eine Java-Bibliothek, die einen ChiSquare-test für Sie. Davon gibt es genug:
Dies ist keine vollständige Liste, aber was ich gefunden habe 5 Minuten suchen.
InformationsquelleAutor ziggystar