mit einer bestimmten Wahrscheinlichkeit randomisieren
Theda
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 01.12.2010, 18:06
Titel: mit einer bestimmten Wahrscheinlichkeit randomisieren
Hallo,
ich bin gerade dabei, einen Versuch zu designen. Er hat insgesamt 270 Durchgaenge (trials) und es gibt 6 verschiedene Bedingungen (also 45 trials pro Bedingung). Da der einzelne trial relativ lange braucht und meine Versuchspersonen bestimmt mal ne Pause machen wollen, hatte ich mir ueberlegt, diese 270 trials auf 3 verschiedene "sessions" a 90 Durchgaengen aufzuteilen. Gibt es irgendwie die Moeglichkeit, Matlab zu sagen, dass pro session alle Bedingungen in etwa gleichviel auftauchen sollen? Ich habe es bislang mit der randperm-Funktion nur hinbekommen, dass pro session 2 Bedingungen randomisiert praesentiert werden, der Rest allerdings gar nicht. Ich bin mir nicht sicher, aber das koennte meine Ergebnisse natuerlich extrem verfaelschen, wenn in session 1 nur Bedingungen 1 und 2 praesentiert werden, in session 2 nur 3 und 4 und so weiter. Ich habe auf der mathworks-Seite noch die Funktion randp gefunden (ich haenge sie hier an), aber entweder kann ich nicht richtig mit ihr umgehen oder sie macht einfach nicht das, was ich will. Ich hoffe, mein Geschreibsel war einigermassen verstaendlich und mir kann jemand helfen!
Danke,
Theda
Das ist der Code, so wie ich ihn von dem Mathworks Fileshare bekommen habe:
Code:
function X = randp(P,varargin) ;
% RANDP - pick random values with relative probability
%
% R = RANDP(PROB,..) returns integers in the range from 1 to % NUMEL(PROB) with a relative probability, so that the value X is % present approximately (PROB(X)./sum(PROB)) times in the matrix R.
%
% All values of PROB should be equal to or larger than 0.
%
% RANDP(PROB,N) is an N-by-N matrix, RANDP(PROB,M,N) and % RANDP(PROB,[M,N]) are M-by-N matrices. RANDP(PROB, M1,M2,M3,...) or % RANDP(PROB,[M1,M2,M3,...]) generate random arrays. % RANDP(PROB,SIZE(A)) is the same size as A.
%
% Example: % R = randp([1 3 2],1,10000) % % return a row vector with 10000 values with about 16650% 2 % histc(R,1:3) ./ numel(R)
%
% R = randp([1 1 0 0 1],10,1) % % 10 samples evenly drawn from [1 2 5] % % % Also see RAND, RANDPERM % RANDPERMBREAK, RANDINTERVAL, RANDSWAP (MatLab File Exchange)
% Created for Matlab R13+ % version 2.0 (feb 2009) % (c) Jos van der Geest % email: jos@jasen.nl
%
% File history: % 1.0 (nov 2005) - created % 1.1 (nov 2005) - modified slightly to check input arguments to RAND first % 1.2 (aug 2006) - fixed bug when called with scalar argument P % 2.0 (feb 2009) - use HISTC for creating the integers (faster and simplier than % previous algorithm)
Ich habe es zwar geschafft, mit randp eine Matrix zu erstellen, aber es werden nicht alle Zahlen von 1 bis 270 randomisiert und einige kommen auch mehrmals vor...
Verfasst am: 02.12.2010, 15:56
Titel: Re: mit einer bestimmten Wahrscheinlichkeit randomisieren
Hallo Theda,
Ich habe Schwierigkeiten die Frage zu verstehen. "Trials" und "Bedingungen" sind zwar gängige Begriffe, aber Du sprichst hier über ein Matlab-Programm. Dann ist es einfacher, wenn Du die entsprechenden Matlab-Objekte benennst. Ob diese Objekte, z.B. Zahlen, dann "Bedingungen" oder "Erbsen" sind, spielt ja keine Rolle.
Ich habe ungefähr dies verstanden:
Du hast einen Vektor mit 270 Elementen, die die Werte 1 bis 6 annehmen, jeweils 45 Elemente pro Zahl.
Daraus möchtest Du 3 Gruppen a 90 Elemente erzeugen, wobei die Zahlen zwar gemischt, aber ungefähr gleichverteilt sein sollen.
Wenn das Dein Problem wiedergibt, könnte man das so lösen:
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.