Я собираюсь провести эксперимент по моторному обучению со случайной и блокированной практикой. У меня есть кластерный план выборки, в котором я отбираю различные тренировочные группы (примерно по 12 спортсменов в каждой группе). Я проведу предварительное тестирование со спортсменами, из которого я произведу случайное распределение в случайную и заблокированную группу.
Однако, поскольку я ожидаю, что спортсмены в группе будут иметь довольно широкий диапазон результатов, мне нужно чтобы выполнить стратификацию производительности, чтобы убедиться, что у случайной и заблокированной группы есть app. равное количество хороших и плохих исполнителей. Чтобы выполнить sh это, я написал функцию в Python, которая сначала сортирует значения в столбце «производительность» фрейма данных от меньшего к большему. Затем он разбивает их на две группы, как на этом рисунке:
Трещина Я использовал следующий код Python, чтобы выполнить sh это:
@staticmethod
def allokereIGrupper():
df1 = groupby.sort_values(by='PRESTASJON', ascending=True)
mask = np.arange(len(df1)) % 2
global group1
group1 = df1.loc[mask == 0]
global group2
group2 = df1.loc[mask == 1]
return group1, group2
Теперь, когда я приложение. иметь равное количество хороших и плохих спортсменов, я хочу распределить спортсменов в каждой группе (группы 1 и 2) на случайную и заблокированную группы. Я использовал метод python random sample (), чтобы выполнить sh это. Я создал две функции, по одной для каждой группы.
@staticmethod
def velgerGR1():
grupper = ['RANDOM', 'BLOCKED']
for i in group1['BIB#'].unique():
velger = random.sample(grupper, k=1)
group1['GRUPPE'] = velger
return group1
@staticmethod
def velgerGR2():
grupper = ['RANDOM', 'BLOCKED']
for i in group2['BIB#'].unique():
velger = random.sample(grupper, k=1)
group2['GRUPPE'] = velger
return group2
Два приведенных выше статических метода создают новый столбец либо со СЛУЧАЙНЫМ, либо с БЛОКИРОВАННЫМ. Следующий статический метод просто выбирает тех спортсменов, которые были назначены в случайную и заблокированную группу внутри каждой группы, а затем объединяет их в фрейм данных для случайного выбора и фрейм данных для заблокированных.
@staticmethod
def lageDataFrames():
global dfJoinedRandom
hentRandom = group1.query('GRUPPE == "RANDOM"')
hentRandom2 = group2.query('GRUPPE == "RANDOM"')
dfJoinedRandom = pd.concat([hentRandom, hentRandom2])
global dfJoinedBlocked
hentBlocked = group1.query('GRUPPE == "BLOCKED"')
hentBlocked2 = group2.query('GRUPPE == "BLOCKED"')
dfJoinedBlocked = pd.concat([hentBlocked, hentBlocked2])
return dfJoinedRandom, dfJoinedBlocked
работай. Мой код не возвращает никаких ошибок, и я получаю два DataFrames с тем, что хочу. Однако мне интересно:
- Является ли это допустимым / хорошим способом выполнения случайного распределения?
- Есть ли лучший способ выполнить эту задачу в Python?
Для моего статистического теста я собираюсь использовать модель многоуровневой регрессии.
Ура