R Fehler : einige Gruppe ist zu klein für 'qda'
Benutzte ich die qda{MASSE} zu finden, die classfier für meine Daten und es immer gemeldet "some group is too small for 'qda'
". Ist es aufgrund der Größe des test-Daten, die ich verwendet für das Modell ? Ich erhöhte das test-sample-Größe von 30 bis 100, es berichtet den gleichen Fehler. Helpppppppp.....
set.seed(1345)
AllMono <- AllData[AllData$type == "monocot",]
MonoSample <- sample (1:nrow(AllMono), size = 100, replace = F)
set.seed(1355)
AllEudi <- AllData[AllData$type == "eudicot",]
EudiSample <- sample (1:nrow(AllEudi), size = 100, replace = F)
testData <- rbind (AllMono[MonoSample,],AllEudi[EudiSample,])
plot (testData$mono_score, testData$eudi_score, col = as.numeric(testData$type), xlab = "mono_score", ylab = "eudi_score", pch = 19)
qda (type~mono_score+eudi_score, data = testData)
Hier meine Daten Beispiel
>head (testData)
sequence mono_score eudi_score type
PhHe_4822_404_76 DTRPTAPGHSPGAGH 51.4930 39.55000 monocot
SoBi_10_265860_58 QTESTTPGHSPSIGH 33.1408 2.23333 monocot
EuGr_5_187924_158 AFRPTSPGHSPGAGH 27.0000 54.55000 eudicot
LuAn_AOCW01152859.1_2_79 NFRPTEPGHSPGVGH 20.6901 50.21670 eudicot
PoTr_Chr07_112594_90 DFRPTAPGHSPGVGH 43.8732 56.66670 eudicot
OrSa.JA_3_261556_75 GVRPTNPGHSPGIGH 55.0986 45.08330 monocot
PaVi_contig16368_21_57 QTDSTTPGHSPSIGH 25.8169 2.50000 monocot
>testData$type <- as.factor (testData$type)
> dim (testData)
[1] 200 4
> levels (testData$type)
[1] "eudicot" "monocot" "other"
> table (testData$type)
eudicot monocot other
100 100 0
> packageDescription("MASS")
Package: MASS
Priority: recommended
Version: 7.3-29
Date: 2013-08-17
Revision: $Rev: 3344 $
Depends: R (>= 3.0.0), grDevices, graphics, stats, utils
Meine R version R 3.0.2.
Der test in
Also die Anzahl der Ereignisse in jeder Kategorie, in meiner situation, ist die Anzahl der vorkommen in den einzelnen Typen (die abhängige variable im Modell), richtig? Das p ist die Anzahl der Spalten in der Testdaten? Ich habe nur zwei Kategorien, in "Art" --- "mono" und "eudi", sowohl die Zahl 100, da probierte ich Sie mit Größe 100. p 3 (es gibt drei Spalten, in der Testdaten--mono_score, eudi_score und-Typ). Ich denke, meine Einstellung erfüllt die "alle(counts > p + 1)"
es ist schwer zu gehen, viel weiter helfen, dass Sie ohne reproduzierbar (tinyurl.com/reproducible000)
Ich platziert haben, die Daten obigen Beispiel jetzt. Danke:) Ist das Ok?
Nein, aber ich habe eine Vermutung (siehe unten).
MASS:::qda.default
ist if (any(counts < p + 1)) stop("some group is too small for 'qda'")
wo counts
ist die Anzahl der Ereignisse in jeder Kategorie p
ist die Anzahl der Spalten in der Prädiktor-matrix ...Also die Anzahl der Ereignisse in jeder Kategorie, in meiner situation, ist die Anzahl der vorkommen in den einzelnen Typen (die abhängige variable im Modell), richtig? Das p ist die Anzahl der Spalten in der Testdaten? Ich habe nur zwei Kategorien, in "Art" --- "mono" und "eudi", sowohl die Zahl 100, da probierte ich Sie mit Größe 100. p 3 (es gibt drei Spalten, in der Testdaten--mono_score, eudi_score und-Typ). Ich denke, meine Einstellung erfüllt die "alle(counts > p + 1)"
es ist schwer zu gehen, viel weiter helfen, dass Sie ohne reproduzierbar (tinyurl.com/reproducible000)
Ich platziert haben, die Daten obigen Beispiel jetzt. Danke:) Ist das Ok?
Nein, aber ich habe eine Vermutung (siehe unten).
InformationsquelleAutor user2993059 | 2013-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
tl;dr meine Vermutung ist, dass Ihr Prädiktor-Variablen habe in Faktoren oder character-Vektoren durch Unfall. Dies kann leicht passieren, wenn Sie haben einige kleinere Fehler in Ihrem Datensatz, wie eine störende Zeichen in einer Zeile.
Hier ist ein Weg, um ein Daten-set, das aussieht wie deins:
Einige nützliche Diagnostik:
Allem die ersten beiden (
str()
undsummary()
) zeigen Sie uns, was Typ jede variable ist. Update: es stellt sich heraus, der Dritte test ist eigentlich das wichtige in diesem Fall, da das problem war eine vermeidbare zusätzliche Ebene: diedroplevel()
Funktion sollte sich darum kümmern, dieses problem ...Diese made-up Beispiel scheint zu funktionieren, also muss es etwas sein, was man nicht zeigt Sie uns Ihre Daten ...
Hier ist eine Vermutung. Wenn Ihr
score
Variablen wurden tatsächlich Faktoren eher als numerische, dannqda
würde automatisch versuchen, um dummy-Variablen, aus denen dann das Modell matrix deutlich breiter (101 Spalten in diesem Beispiel) und provozieren die Fehler, die Sie sehen ...Follow-up-Frage : was ist, wenn ich abgetastet Testdaten aus der AllData, ich will nur Ebenen(Testdaten) sind "monocot" und "eudicot". Was soll ich tun ? Ebenen (testData$type) <- wie.factor(c("monocot", "eudicot")) funktioniert nicht
testData <- droplevels(testData)
Es funktioniert jetzt. Ich danke Ihnen sehr. summary () und str() sind sehr nützlich:)
InformationsquelleAutor Ben Bolker