Ich habe Datenrahmen:Manuelle Vorhersage in R (Datenrahmen)
DF
Chset Choices X1 X2 utility
1 1 8 1 1 2
2 1 2 0 1 3
3 1 1 1 0 -1
4 2 1 1 1 2
5 2 5 0 1 5
6 2 1 1 0 -1
7 2 2 0 0 0
8 3 1 1 1 2
9 3 2 0 1 6
10 3 5 1 0 -1
11 4 6 1 1 2
12 4 1 0 1 14
13 4 1 1 0 -1
14 4 1 0 0 0
Und ich will Spalte erstellen „vorhersagen“, wo ich 1 setzen, wenn Nutzenmaximum in Chset ist. Zum Beispiel haben wir 3 Zeilen, wobei Chset = 1, und diese haben Dienstprogramme (2,3, -1). Dann wird in der Spalte "vorhersagen" sein sollte (0,1,0) - 1 Zeile 2, da sie die maximale Nützlichkeit in Chset hat = 1, und so weiter:
Chset Choices X1 X2 utility predict
1 1 8 1 1 2 0
2 1 2 0 1 3 1
3 1 1 1 0 -1 0
4 2 1 1 1 2 0
5 2 5 0 1 5 1
6 2 1 1 0 -1 0
7 2 2 0 0 0 0
8 3 1 1 1 2 0
9 3 2 0 1 6 1
10 3 5 1 0 -1 0
11 4 6 1 1 2 0
12 4 1 0 1 14 1
13 4 1 1 0 -1 0
14 4 1 0 0 0 0
Danach möchte ich cheak, ob die Vorhersage richtig ist. Die Vorhersage ist korrekt, wenn vorhergesagt = 1 und der Wert in der Spalte "Auswahl" das Maximum in seinem "Chset" ist. Zum Beispiel können wir in Chset = 1 "predicate" = 1 für die 2. Zeile sehen, während das Maximum "Choices" in Chset = 1 in der 1. Zeile (und gleich 8) ist, also ist die Vorhersage falsch. Im Gegensatz dazu ist in "Chset = 2" "Vorhersage" gleich 1 für die 5. Zeile und diese Zeile hat den Maximalwert von "Auswahl" innerhalb dieses Chsets = 2, daher ist hier die Vorhersage korrekt. Um alle Fälle zu checken, möchte ich eine Tabelle "cheak" erstellen, die gleich 1 ist, wenn die Vorhersage korrekt ist, und 0 umgekehrt. Schließlich sollte ich bekommen:
Chset Choices X1 X2 utility predict cheak
1 1 8 1 1 2 0 0
2 1 2 0 1 3 1 0
3 1 1 1 0 -1 0 0
4 2 1 1 1 2 0 0
5 2 5 0 1 5 1 1
6 2 1 1 0 -1 0 0
7 2 2 0 0 0 0 0
8 3 1 1 1 2 0 0
9 3 2 0 1 6 1 0
10 3 5 1 0 -1 0 0
11 4 6 1 1 2 0 0
12 4 1 0 1 14 1 0
13 4 1 1 0 -1 0 0
14 4 1 0 0 0 0 0
Wie kann ich das tun?
Warten auf Ihre Hilfe