Ο έλεγχος A / B τιμολογείται συχνά ως ένας επιστημονικός τρόπος για την επικύρωση των αποφάσεων σχεδιασμού. Περιστασιακά αναφέρεται ως διαχωρισμός των δοκιμών, η δοκιμή A / B είναι μια απλή διαδικασία που στην επιφάνεια φαίνεται να υπόσχεται συγκεκριμένα αποτελέσματα:

Δημιουργήστε δύο παραλλαγές σε ένα στοιχείο σχεδίασης, αντικαταστήστε τυχαία τους στον ιστότοπό σας και καταγράψτε πώς αντιδρούν οι χρήστες σας, συγκρίνετε τα αποτελέσματα, εφαρμόστε τις παραλλαγές που εκτελούνται καλύτερα. Είναι λογικό.

Το κλασικό παράδειγμα είναι: ένα κόκκινο κουμπί εναντίον ενός πράσινου κουμπιού, το οποίο θα αξιοποιηθεί περισσότερο; Ωστόσο, το πιο ενδιαφέρον ερώτημα είναι: ένα πράσινο κουμπί εναντίον του ίδιου πράσινου κουμπιού, το οποίο θα αξιοποιηθεί περισσότερο;

Τι συμβαίνει όταν δοκιμάζουμε A / B δύο ίδιες παραλλαγές; Μια δοκιμή A / A, αν θέλετε.

Πράσινο κουμπί έναντι πράσινου κουμπιού

Προκειμένου να ελεγχθεί η εγκυρότητα οποιασδήποτε δοκιμής A / B, χρειαζόμαστε μια δοκιμή που έχει μια «σωστή» απάντηση. Χρειαζόμαστε μια σωστή απάντηση, διότι θέλουμε να γνωρίζουμε, όλα τα πράγματα είναι ίσα, πόσο πιθανό είναι ότι η δοκιμή Α / Β θα παράγει το αποτέλεσμα που θα έπρεπε, και γι 'αυτό πρέπει να γνωρίζουμε ποιο αποτέλεσμα αναμένεται.

Εάν εμείς A / B δοκιμάσουμε δύο ταυτόσημα κουμπιά, το αποτέλεσμα θα πρέπει να είναι μια νεκρή ζέστη

Ας υποθέσουμε λοιπόν ότι δοκιμάζουμε ένα πράσινο κουμπί έναντι του ίδιου πράσινου κουμπιού και ότι το κουμπί είναι τόσο δελεαστικό που το 100% των χρηστών θα το χτυπήσει.

(Το ποσοστό δεν έχει σημασία, θα μπορούσε να είναι 14.872% .Αυτό που έχει σημασία είναι ότι επειδή τα κουμπιά είναι πανομοιότυπα, το ποσοστό ροής θα πρέπει να είναι το ίδιο.)

Εάν εμείς A / B δοκιμάσουμε δύο ταυτόσημα κουμπιά, το αποτέλεσμα θα πρέπει να είναι μια νεκρή ζέστη.

Η δοκιμασία εκτίναξης κερμάτων

Πετάξτε ένα νόμισμα. Ποια πλευρά θα εμφανιστεί, κεφάλια ή ουρές; Ξέρουμε ότι υπάρχουν δύο όψεις, και οι δύο ταυτόσημες, έτσι είναι μια ευκαιρία 50-50.

Εάν πετάξουμε το κέρμα μας δύο φορές, γνωρίζουμε ότι υπάρχουν τρία πιθανά αποτελέσματα: 2 κεφάλια, 2 ουρές ή 1 κεφαλή και 1 ουρά. Και ούτω καθεξής…

Ας υποθέσουμε ότι η ανάληψη των κερμάτων είναι η δοκιμή Α / Α. οι πιθανότητες της πλευράς των κεφαλών που έρχονται είναι ίδιες με τις πιθανότητες της πλευράς των ουρών να έρχονται, ακριβώς όπως οι πιθανότητες ενός από τα πράσινα κουμπιά μας που παίζονται είναι ίσα.

Ας γράψουμε λοιπόν ένα γρήγορο σενάριο στο πρόγραμμα περιήγησης (επειδή οι περισσότεροι έλεγχοι A / B συμβαίνουν στο πρόγραμμα περιήγησης) για να προσομοιώσουν τους χρήστες με το πάτημα ενός κουμπιού ή του άλλου, ανάλογα με το ποια από αυτά παρουσιάζονται.

Θυμηθείτε: δοκιμάζουμε δύο πανομοιότυπες παραλλαγές ενός κουμπιού και ο τρόπος με τον οποίο γνωρίζουμε ότι είναι πανομοιότυπος είναι ότι αντιμετωπίζουμε την πιθανότητα να θεωρηθούν ταυτόσημα. Το μόνο που ψάχνουμε είναι ένα συνεπές (και συνεπώς σωστό) αποτέλεσμα.

Πρώτον, χρειαζόμαστε έναν πίνακα HTML για να καταγράψουμε τα αποτελέσματά μας, ο πίνακας θα φαίνεται ως εξής:

#HeadsTailsDifferenceMargin of Error

Στην πρώτη στήλη θα καταγράψουμε τον αριθμό της δοκιμής (όλες οι καλές δοκιμασίες Α / Β, επαναλαμβάνονται για να επαληθευτούν τα αποτελέσματα, επομένως θα επαναλάβουμε τη δοκιμή μερικές φορές). Στη συνέχεια, θα καταγράψουμε τον αριθμό των αποτελεσμάτων κεφαλών και , στη συνέχεια, θα προκύψει ο αριθμός των ουρών . Η στήλη μετά από αυτή θα είναι η διαφορά μεταξύ των δύο αποτελεσμάτων (η οποία θα πρέπει να είναι μηδέν). Στη συνέχεια, θα καταγράψουμε το περιθώριο σφάλματος (το οποίο και πάλι θα πρέπει να είναι 0%). Κάτω από τον πίνακα θα εκτυπώσουμε μια σύνοψη, τον μέσο όρο όλων των αποτελεσμάτων και το χειρότερο αποτέλεσμα.

Εδώ είναι το σενάριο:

var bestOf = 12, // the number of times we want to run the testtestRepeat = 12, // the number of times we’d like to repeat the testtestCount = 0, // the number of the current testtestInterval = setInterval(performCoinToss, 100), // call the coin toss functiontotalDifference = 0, // used for calculating the average differenceworstDifference = 0; // the worst casefunction performCoinToss(){testCount++; // increment the current testvar testCounter = bestOf, // the current iteration of the testheadsCounter = 0, // the total number of times the script came up with "heads"tailsCounter = 0; // the total number of times the script came up with "tails"while(testCounter--) // loop 'testCounter' times{Math.round(Math.random()) ? headsCounter++ : tailsCounter++; // finds 0 or 1 randomly, if 1 increments headsCounter, otherwise increments tailsCounter}var difference = Math.abs(headsCounter - tailsCounter), // the difference between the twoerror = (difference / bestOf) * 100; // the error percentagedocument.getElementById("results").innerHTML += "" + testCount + "" + headsCounter + "" + tailsCounter + "" + difference + "" + error + "%"; // add result to tabletotalDifference += difference; // increments the difference counterworstDifference = difference > worstDifference ? difference : worstDifference; // updates worstDifferenceif(--testRepeat == 0){var averageDifference = totalDifference / testCount, // finds average differenceaverageError = (averageDifference / bestOf) * 100; // finds the average error margindocument.getElementById("summary").innerHTML = "

Average difference: " + averageDifference + "

Average margin of error: " + averageError + "%

Worst Case: " + worstDifference + "

"; // write summary to pageclearInterval(testInterval); // if the test has been repeated enough times, clear the interval}}

Ο κώδικας σχολιάζεται, οπότε εδώ είναι μόνο τα κυριότερα σημεία:

Αρχικά δημιουργήσαμε μερικές μεταβλητές, συμπεριλαμβανομένου του αριθμού των φορών που θέλουμε να πετάξουμε το νόμισμα (bestOf) και του αριθμού των επαναλήψεων (testRepeat).

Ειδοποίηση Spyler: θα πάμε σε αρκετά υψηλά βρόχους, έτσι ώστε να αποφύγουμε τη θραύση του προγράμματος περιήγησης κάποιου που τρέχουμε τη δοκιμή σε ένα διάστημα κάθε 100ms.

Μέσα στη λειτουργία performCoinToss βγάζουμε τον απαιτούμενο αριθμό φορές, κάθε επανάληψη του βρόχου χρησιμοποιούμε την τυχαία συνάρτηση JavaScript για να δημιουργήσουμε ένα 1 ή ένα 0, το οποίο με τη σειρά του αυξάνει είτε το headCounter είτε το tailsCounter .

Στη συνέχεια γράφουμε το αποτέλεσμα από τη δοκιμή στο τραπέζι.

Τέλος, αν η δοκιμή επαναληφθεί τον αριθμό των φορών που επιθυμούμε, βρίσκουμε τους μέσους όρους και, στη χειρότερη περίπτωση, τις γράφουμε στη σύνοψη και καθαρίζουμε το διάστημα.

Εδώ είναι το αποτέλεσμα . Όπως μπορείτε να δείτε η μέση διαφορά είναι, καλά θα είναι διαφορετική για σας, αλλά καθώς γράφω αυτό η μέση διαφορά είναι 2.8333333333333335, το μέσο λάθος είναι συνεπώς 23.611111111111114%.

Το λάθος άνω του 23% δεν εμπνέει εμπιστοσύνη, ειδικά καθώς γνωρίζουμε ότι η διαφορά θα πρέπει να είναι 0%. Το χειρότερο είναι ότι η χειρότερη περίπτωση μου είναι 8, δηλαδή 10-2 υπέρ των κεφαλιών.

Χρησιμοποιώντας μερικούς ρεαλιστικούς αριθμούς

Εντάξει, έτσι ώστε η δοκιμή δεν ήταν δίκαιη. Μια πραγματική δοκιμή Α / Β δεν θα ισχυριζόταν ποτέ ότι θα βρεθεί ένα οριστικό αποτέλεσμα από μόλις 12 χρήστες.

Ο έλεγχος A / B χρησιμοποιεί κάτι που ονομάζεται "στατιστική σημασία", που σημαίνει ότι η δοκιμή πρέπει να εκτελείται αρκετές φορές για να επιτευχθεί ένα αποτέλεσμα που μπορεί να ασκηθεί.

Έτσι, ας διπλασιάσουμε τη μεταβλητή bestOf και να δούμε πόσο πρέπει να φτάσουμε για να φθάσουμε σε ένα περιθώριο σφάλματος, λιγότερο από 1% - το ισοδύναμο της εμπιστοσύνης 99%.

Σε μια καλύτερη από 24 (κατά τη στιγμή της γραφής) η μέση διαφορά είναι 3.16666666666666665, ήτοι 13.194444444444445%. Ένα βήμα προς τη σωστή κατεύθυνση! Δοκιμάστε το για τον εαυτό σας (τα αποτελέσματά σας θα διαφέρουν).

Ας το διπλασιάσουμε ξανά. Αυτή τη φορά, μέση διαφορά μου 6.666666666666667, με περιθώριο σφάλματος 13.88888888888889%. Ακόμα χειρότερα, η χειρότερη περίπτωση είναι 16, αυτό είναι λάθος 33,33333333333333%! Μπορείς δοκιμάστε αυτό για τον εαυτό σας επίσης.

Στην πραγματικότητα, δεν υπάρχουν βραβεία για να μαντέψουμε ότι μπορούμε να συνεχίσουμε: καλύτερα από 96 , καλύτερα από 192 , καλύτερα από 384 , καλύτερα από 768 , καλύτερα από το 1536 , καλύτερα από 3072 , καλύτερα από 6144 , καλύτερα από 12288 , καλύτερα από 24576 , καλύτερα από 49152 , καλύτερα από 98304 .

Τέλος, στο καλύτερο των 98304, το σενάριο χειρότερης περίπτωσης πέφτει κάτω από το 1%. Με άλλα λόγια μπορούμε να είμαστε 99% σίγουροι ότι η δοκιμή είναι ακριβής.

Έτσι, σε μια δοκιμή Α / Α, το αποτέλεσμα της οποίας γνωρίζαμε εκ των προτέρων, χρειάστηκε μέγεθος δείγματος 98.304 για να φτάσει ένα αποδεκτό περιθώριο σφάλματος.

Το κουμπί $ 3.000.000.000

Κάθε φορά που συζητείται η δοκιμή A / B, κάποιος θυμάται έναν φίλο ενός φίλου, ο οποίος A / B δοκιμάσει ένα μόνο κουμπί στον ιστότοπό του και έκανε αμέσως ένα απίθανο κέρδος (η πραγματική αξία δολαρίου αυξάνεται κάθε φορά που ακούω ιστορία).

Σε αυτές τις ιστορίες, τα κουμπιά συνήθως ελέγχονται για μικρογραφίες, "Κατεβάστε το ebook μου" έναντι "Κατεβάστε το δωρεάν ebook μου". Δεν πρέπει να αποτελεί έκπληξη το γεγονός ότι ο τελευταίος κερδίζει. Είναι μια βελτίωση που θα έκανε οποιοσδήποτε καλός copywriter. Μια πιο κατάλληλη δοκιμή A / B θα ήταν "Κατεβάστε το ebook μου" εναντίον "Κατεβάστε το ebook" (τα χρήματά μου στο τελευταίο).

Αν βρεθείτε με ένα αποτέλεσμα που έχει μεγάλη βαρύτητα προς μία από τις επιλογές, αυτό υποδηλώνει ότι κάτι είναι πολύ κακό με μια από τις παραλλαγές σας. Πιο συχνά, καλό αποτέλεσμα θα είναι η βελτίωση κάτω από 5%, γεγονός που παρουσιάζει πρόβλημα εάν δοκιμάζετε περίπου 1000 χρήστες (το περιθώριο για σφάλμα είναι περίπου 5%).

Όσο πιο χρήσιμη είναι μια δοκιμασία, τόσο πιο σφιχτό είναι το περιθώριο νίκης για μια παραλλαγή ή το άλλο. Ωστόσο, όσο πιο σφιχτό είναι το περιθώριο νίκης, τόσο μεγαλύτερο είναι το μέγεθος του δείγματος που απαιτείται για να έχετε ένα αποδεκτό περιθώριο σφάλματος.

Λυπά, καταραμένα ψέματα και δοκιμές Α / Β

Ο Mark Twain, ενδεχομένως αναφέροντας το Disraeli, κάποτε χρησιμοποίησε τη φράση: ψέματα, καταραμένα ψέματα και στατιστικά στοιχεία. Με τον οποίο εννοούσε ότι κάτι από τα στατιστικά στοιχεία αποδεικνύεται, δεν είναι απαραίτητα αλήθεια. Οι στατιστικές μπορούν να χρησιμοποιηθούν για να αποδείξουν οτιδήποτε θέλετε.

Η δοκιμή A / B θα σας δώσει ένα αποτέλεσμα, αλλά είναι ένα αποτέλεσμα που θα σας πει περισσότερα για εσάς και για το τι αναμένετε να βρείτε, παρά για τους πελάτες σας

Το πιο επικίνδυνο πράγμα για τη δοκιμή A / B είναι ότι μπορεί να αποδείξει οτιδήποτε θέλετε. μπορεί να παράγει ψευδή θετικά στοιχεία και μας επιτρέπει να διακρίνουμε σχέδια που δεν υποστηρίζονται σωστά.

Επιπλέον, μια δοκιμή A / B μπορεί να υποδεικνύει ότι ένα πράσινο κουμπί υπερβαίνει ένα κόκκινο κουμπί, αλλά τι γίνεται με ένα μπλε κουμπί; Ακόμη και επιτυχής δοκιμή A / B μας επιτρέπει μόνο να επικυρώσουμε τις αποφάσεις σχεδιασμού μας στο πλαίσιο της ίδιας της δοκιμής.

Προκειμένου μια δοκιμή Α / Β να λειτουργεί όπως επιδιώκεται, χρειαζόμαστε δύο προϋποθέσεις αντίθετες για να είμαστε αληθείς:

  1. πρέπει να υπάρχουν ελάχιστες διαφορές μεταξύ των επιλογών, οπότε η δοκιμή δεν σταθμίζεται από την προτίμησή μας.
  2. το μέγεθος του δείγματος πρέπει να είναι επαρκές ώστε το περιθώριο σφάλματος να είναι μικρότερο από τη δύναμη του αποτελέσματος.

Δυστυχώς, οι περισσότεροι ιστότοποι δεν έχουν μέγεθος δείγματος αρκετά μεγάλο για να φτάσουν σε αρκετά μικρό περιθώριο σφάλματος. Και επειδή δεν μπορούμε να αυξήσουμε το μέγεθος του δείγματος μας (θα μπορούσαμε αν μπορούσαμε), η μόνη επιλογή μας είναι να αυξήσουμε την ποικιλία των επιλογών, ώστε να έχουμε ένα σαφές αποτέλεσμα, παρακάμπτοντας το τεστ από τις προτιμήσεις μας.

Ο έλεγχος A / B θα σας δώσει ένα αποτέλεσμα, αλλά είναι ένα αποτέλεσμα που θα σας πει περισσότερα για εσάς και για το τι αναμένετε να βρείτε, παρά για τους πελάτες σας. Όταν πρόκειται να λάβουμε αποφάσεις σχεδιασμού σε οποιαδήποτε τοποθεσία εκτός από εκείνες με πολύ μεγάλο όγκο κυκλοφορίας, θα μπορούσαμε επίσης να πετάξουμε ένα νόμισμα, όπως το τεστ Α / Β.

Προτεινόμενη εικόνα, κέρδος εικόνα μέσω Shutterstock.