2017-11-22 7 views
1

Ich verwende derzeit das Johnson-Paket, um einige Daten zu transformieren (z. B. Prozentsatz von falsch zurückgerufenen Artikeln und ähnlichem)).R: NE.Johnson-Paket (Fehler in RE.ADT (xsl [, i]): Objekt 'p' nicht gefunden)

(https://cran.r-project.org/web/packages/Johnson/Johnson.pdf)

Die NE.Johnson Funktion funktioniert für die meisten meiner Daten abgesehen von zwei Variablen in Ordnung. Beim Versuch, die Funktion, die ich die folgende Fehlermeldung auszuführen:

>recall_Johnson <- RE.Johnson(RECALL) 

Fehler in RE.ADT (xsl [i]): Objekt 'p' nicht gefunden

ich Ihnen wirklich gehofft, bin Leute können mir eine Hand geben, weil ich nicht herausfinden kann, warum ich den Fehler bekomme!

Ich habe die Daten visuell durchsucht und ich kann nichts finden, was wirklich die beiden Problemvariablen stehen lässt. Unten ist ein Ausdruck der sortierten Daten für eine Variable, die gut funktioniert (Prozentsatz von Inhibierungsfehlern) und eine andere, die nicht funktioniert (Prozentsatz von Rückruffehlern).

Adaequat: Hemmung Fehler

> sort.x=sort(Inhibpercent) 
> print(sort.x) 

    [1] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 
    [7] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 
[13] 0.8403361 0.8474576 1.2605042 1.6666667 1.6666667 1.6666667 
[19] 1.6666667 1.6666667 1.6666667 1.6666667 1.6806723 1.6949153 
[25] 1.6949153 1.6949153 1.7021277 1.7241379 1.7241379 1.7543860 
[31] 2.0833333 2.1008403 2.1276596 2.5000000 2.5000000 2.5104603 
[37] 2.5423729 2.5531915 2.9166667 2.9166667 2.9166667 2.9166667 
[43] 2.9411765 2.9535865 3.0042918 3.3333333 3.3333333 3.3333333 
[49] 3.3333333 3.3613445 3.3755274 3.3755274 3.3898305 3.3898305 
[55] 3.4188034 3.4482759 3.7500000 3.7656904 3.7815126 3.7815126 
[61] 3.8297872 4.1666667 4.1841004 4.2016807 4.2194093 4.5833333 
[67] 4.6025105 4.6511628 4.6808511 5.0000000 5.0000000 5.0000000 
[73] 5.0209205 5.0847458 5.0847458 5.0847458 5.0847458 5.1282051 
[79] 5.4393305 5.5319149 5.8333333 6.6666667 6.6666667 6.7796610 
[85] 6.7796610 6.7796610 6.7796610 6.8965517 6.8965517 7.3033708 
[91] 8.3333333 8.3333333 8.3333333 8.3333333 8.3333333 8.3333333 
[97] 8.4388186 8.4745763 8.4745763 8.4745763 8.6206897 9.5833333 
[103] 9.6638655 10.0000000 10.1694915 10.1694915 10.3448276 10.5042017 
[109] 10.7142857 11.3924051 11.6666667 11.6666667 12.0833333 13.3333333 
[115] 15.2542373 18.3333333 20.7547170 25.8536585 

FUNKTIONIERT NICHT: Recall Fehler

> sort.x=sort(incorrectrecallpercent) 
> print(sort.x) 

    [1] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 
    [7] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 
[13] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 
[19] 0.0000000 0.0000000 0.0000000 0.0000000 0.4166667 0.4166667 
[25] 0.4201681 0.4201681 0.4201681 0.4219409 0.4255319 0.4255319 
[31] 0.4878049 0.8333333 0.8368201 0.8403361 0.8403361 0.8438819 
[37] 1.2500000 1.2500000 1.2500000 1.2605042 1.2875536 1.6666667 
[43] 1.6666667 1.6666667 1.6666667 1.6666667 1.6666667 1.6736402 
[49] 1.6949153 1.6949153 1.6949153 2.1186441 2.1186441 2.1186441 
[55] 2.5000000 2.5000000 2.5104603 2.5210084 2.5210084 2.9166667 
[61] 2.9787234 3.3333333 3.3333333 3.3898305 3.3898305 3.7500000 
[67] 3.7735849 3.7974684 4.1666667 4.1841004 4.6025105 5.0000000 
[73] 5.0000000 5.0847458 5.0847458 5.1724138 5.3571429 5.4621849 
[79] 5.5084746 5.5555556 6.6666667 6.6666667 6.7226891 6.7796610 
[85] 6.7796610 6.8965517 7.0175439 8.3333333 8.3333333 8.3333333 
[91] 8.3333333 8.3333333 8.3333333 8.3333333 8.3333333 10.0000000 
[97] 10.0000000 10.0000000 10.1694915 10.3448276 11.2359551 11.6666667 
[103] 12.2807018 12.2881356 13.5593220 13.7931035 13.7931035 16.1016949 
[109] 16.2790698 16.4556962 16.9491525 17.9487179 26.1603376 29.3103448 
[115] 32.2033898 32.2033898 32.2033898 39.9159664 

Neben Rückruf etwas mehr Instanzen von Null, kann ich nicht wirklich sehen, jede wesentliche Unterschiede? Aber vielleicht übersehe ich etwas?

Ich habe nach der Anleitung aus diesem Thread versucht: Apply a loop to a data frame

Es wird vorgeschlagen, diesen Code (Zeilen 101-103 in RE.Johnson.R) zu ändern:

if(xsb.valida[1,i]==0) xsb.adtest[1,i]<-(RE.ADT(xsb[,i])$p) 
if(xsl.valida[1,i]==0) xsl.adtest[1,i]<-(RE.ADT(xsl[,i])$p) 
if(xsu.valida[1,i]==0) xsu.adtest[1,i]<-(RE.ADT(xsu[,i])$p) 

zu:

Der Grund für die Änderung ist derselbe Fehler kann auftreten, wenn die Funktion versucht, die Transformation in einen Vektor mit gleichen Werten durchzuführen. Ich denke nicht, dass das für meine Daten gilt, weil die Werte im Vektor nicht gleich sind, aber vielleicht habe ich sie falsch verstanden? Wenn die Funktion den Vektor in Abschnitte aufteilt ... könnte dieses Problem wegen der Anzahl von Nullen am Anfang der sortierten Liste auftreten? Ich habe versucht, den Code zu ändern, aber leider hat es das Problem gelöst.

Ich sehe, dass der folgende Code eingefügt wurde, um NA/NaN Vorkommen zu behandeln. Es erscheint in der Nähe des unteren Randes des Skripts (Zeilen 106-108 in NE.Johnson.R) und genau dort, wo ich den Fehler erhalte (Zeile 101 in NE.Johnson.R). Was könnte vielleicht für den Fehler relevant sein, den ich bekomme?

# insertion by Boda Martin to handle with NA/NaN occurrences 
xsb.adtest[which(is.na(xsb.adtest))] <- 0 
xsl.adtest[which(is.na(xsl.adtest))] <- 0 
xsu.adtest[which(is.na(xsu.adtest))] <- 0 

Jede Hilfe, Anleitung oder sanftes Anstupsen in die richtige Richtung wäre sehr willkommen.

Hier ist der Link, um das Paket herunterzuladen, wenn Sie den Code sehen möchten: https://cran.r-project.org/web/packages/Johnson/index.html

Vielen Dank, Rachel

Antwort

0

Wow. Der Quellcode für dieses Paket ist voller Gefahren!

Ich habe die in dem vorgeschlagenen Änderungen SO Link, den Sie zur Verfügung gestellt und es tut, in der Tat - und in der Theorie - Ihr Problem lösen:

# install.packages("devtools") 
devtools::install_github("hrbrmstr/Johnson") 

library(Johnson) 

c(0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 
0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 
0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 
0.0000000, 0.4166667, 0.4166667, 0.4201681, 0.4201681, 0.4201681, 0.4219409, 
0.4255319, 0.4255319, 0.4878049, 0.8333333, 0.8368201, 0.8403361, 0.8403361, 
0.8438819, 1.2500000, 1.2500000, 1.2500000, 1.2605042, 1.2875536, 1.6666667, 
1.6666667, 1.6666667, 1.6666667, 1.6666667, 1.6666667, 1.6736402, 1.6949153, 
1.6949153, 1.6949153, 2.1186441, 2.1186441, 2.1186441, 2.5000000, 2.5000000, 
2.5104603, 2.5210084, 2.5210084, 2.9166667, 2.9787234, 3.3333333, 3.3333333, 
3.3898305, 3.3898305, 3.7500000, 3.7735849, 3.7974684, 4.1666667, 4.1841004, 
4.6025105, 5.0000000, 5.0000000, 5.0847458, 5.0847458, 5.1724138, 5.3571429, 
5.4621849, 5.5084746, 5.5555556, 6.6666667, 6.6666667, 6.7226891, 6.7796610, 
6.7796610, 6.8965517, 7.0175439, 8.3333333, 8.3333333, 8.3333333, 8.3333333, 
8.3333333, 8.3333333, 8.3333333, 8.3333333, 10.0000000, 0.0000000, 10.0000000, 
10.1694915, 10.3448276, 11.2359551, 11.6666667, 2.2807018, 12.2881356, 
13.5593220, 13.7931035, 13.7931035, 16.1016949, 6.2790698, 16.4556962, 
16.9491525, 17.9487179, 26.1603376, 29.3103448, 2.2033898, 32.2033898, 
32.2033898, 39.9159664) -> incorrectrecallpercent 

str(RE.Johnson(incorrectrecallpercent)) 
#> List of 8 
#> $   : chr "Johnson Transformation" 
#> $ function : chr "SB" 
#> $ p   : num 0.00058 
#> $ transformed: num [1:118] -1.08 -1.08 -1.08 -1.08 -1.08 ... 
#> $ f.gamma : num 2.65 
#> $ f.lambda : num 112 
#> $ f.epsilon : num -0.921 
#> $ f.eta  : num 0.778 

Ich werde die rechnerische Ausgang Wahrhaftigkeit Ihnen überlassen.

Bemerkenswert: Es gibt eine Sekunden Paket auf CRAN für die Johnson-Transformation:

library(jtrans) 
library(nortest) 

str(jtrans(incorrectrecallpercent, test="ad.test")) 
## List of 10 
## $ original : num [1:118] 0 0 0 0 0 0 0 0 0 0 ... 
## $ transformed: num [1:118] -1.09 -1.09 -1.09 -1.09 -1.09 ... 
## $ type  : chr "sl" 
## $ test  : chr "ad.test" 
## $ eta  : num 0.824 
## $ gamma  : num -1.06 
## $ lambda  : num NA 
## $ epsilon : num -0.967 
## $ z   : num 0.26 
## $ p.value : num 0.000397 
## - attr(*, "class")= chr [1:2] "sl" "jtrans" 

Wieder nur wollen Sie wissen, was in Bezug auf die Ergebnisse korrekt sind.

+0

Brilliant, danke :) – Rachel

Verwandte Themen