Come esportare i dati da pacchetto ROCR
Domanda
Sto cercando di esportare i dati biometrici da un'analisi utilizzando il pacchetto ROCR. Ecco il codice che ho fatto finora:
pred = performance(Matching.Score,Distribution)
perf = prediction(pred,"fnr", "fpr")
An object of class “performance”
Slot "x.name":
[1] "False positive rate"
Slot "y.name":
[1] "False negative rate"
Slot "alpha.name":
[1] "Cutoff"
Slot "x.values":
[[1]]
[1] 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
[15] 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
......
Slot "y.values":
[[1]]
[1] 1.00000 0.99999 0.99998 0.99997 0.99996 0.99995
[15] 0.99986 0.99985 0.99984 0.99983 0.99982 0.99981
......
Slot "alpha.values":
[[1]]
[1] Inf 1.0427800 1.0221150 1.0056240 1.0032630 0.9999599
[12] 0.9644779 0.9633058 0.9628996 0.9626501 0.9607665 0.9605930
.......
Ciò si traduce in diversi slot. Vorrei esportare i valori risultanti in un file di testo per la modifica Excel utilizzando:
write(pred, "filename")
Tuttavia, quando provo a scrivere il file, ottengo un errore affermando:
Error in cat(list(...), file, sep, fill, labels, append) :
argument 1 (type 'S4') cannot be handled by 'cat'
C'è un modo per aggirare questo?
Apprezzerei tutto il consiglio. Grazie!
Matt Peterson
Soluzione
Controlla la struttura di classe delle risultanti S4 oggetti con str
, estrarre le variabili rilevanti per costruire un dataframe e utilizzare write.table
/ write.csv
per esportare i risultati. Per esempio, per il pred
previsione:
R> library("ROCR")
R> data(ROCR.simple)
R> pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
R> perf <- performance(pred, "fnr", "fpr")
R> str(pred)
Formal class 'prediction' [package "ROCR"] with 11 slots
..@ predictions:List of 1
.. ..$ : num [1:200] 0.613 0.364 0.432 0.14 0.385 ...
..@ labels :List of 1
.. ..$ : Ord.factor w/ 2 levels "0"<"1": 2 2 1 1 1 2 2 2 2 1 ...
..@ cutoffs :List of 1
.. ..$ : num [1:201] Inf 0.991 0.985 0.985 0.983 ...
..@ fp :List of 1
.. ..$ : num [1:201] 0 0 0 0 1 1 2 3 3 3 ...
..@ tp :List of 1
.. ..$ : num [1:201] 0 1 2 3 3 4 4 4 5 6 ...
..@ tn :List of 1
.. ..$ : num [1:201] 107 107 107 107 106 106 105 104 104 104 ...
..@ fn :List of 1
.. ..$ : num [1:201] 93 92 91 90 90 89 89 89 88 87 ...
..@ n.pos :List of 1
.. ..$ : int 93
..@ n.neg :List of 1
.. ..$ : int 107
..@ n.pos.pred :List of 1
.. ..$ : num [1:201] 0 1 2 3 4 5 6 7 8 9 ...
..@ n.neg.pred :List of 1
.. ..$ : num [1:201] 200 199 198 197 196 195 194 193 192 191 ...
R> write.csv(data.frame(fp=pred@fp, fn=pred@fn), file="result_pred.csv")
e per perf
prestazioni:
R> str(perf)
Formal class 'performance' [package "ROCR"] with 6 slots
..@ x.name : chr "False positive rate"
..@ y.name : chr "False negative rate"
..@ alpha.name : chr "Cutoff"
..@ x.values :List of 1
.. ..$ : num [1:201] 0 0 0 0 0.00935 ...
..@ y.values :List of 1
.. ..$ : num [1:201] 1 0.989 0.978 0.968 0.968 ...
..@ alpha.values:List of 1
.. ..$ : num [1:201] Inf 0.991 0.985 0.985 0.983 ...
R> write.csv(data.frame(fpr=perf@x.values,
fnr=perf@y.values,
alpha.values=perf@alpha.values),
file="result_perf.csv")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow