У меня есть данные о пяти экспериментах, которые немного различаются, и я хотел бы найти способ стандартизации результатов между экспериментами для разработки «стандартного результата». Это будет значение, на которое я могу умножить каждый результат, чтобы сделать их сопоставимыми ,
Я решил, что есть люди в более чем одной экспериментальной группе (если предположить, что участие в более чем одной группе не влияет на результаты).
Я предполагаю, что результаты отдельных лиц в более чем одном эксперименте отличаются только из-за небольших различий между экспериментами и, таким образом, путем вычисления коэффициента пересчета для каждого эксперимента, который делает среднее для отдельных результатов в более чем одном эксперименте одинаковыми это может перевести результаты в стандартный результат.
Проблема, с которой я сталкиваюсь, заключается в том, что в конце процесса большинство моих коэффициентов преобразования меньше 1. Однако я ожидал получить примерно четное число значений больше 1 и меньше 1, так как я как бы усреднение результатов.
Моя процедура и код MSQL приведены ниже:
- Получите данные по экспериментам и по отдельным лицам и исключите все данные по отдельным лицам за 1 эксперимент.
SELECT ExperimentID,
IndividualID,
INTO Z1_IndivByExperiment
FROM Results
GROUP BY ExperimentID,
IndividualID
SELECT IndividualID,
COUNT(ExperimentID) AS ExperimentCount
INTO Z2_MultiExperIndiv
FROM Z1_IndivByExperiment
GROUP BY IndividualID
HAVING COUNT(ExperimentID) > 1
ORDER BY ExperimentCount DESC
- Создать две таблицы:
i) Обобщение результатов по отдельным лицам (индивидуум может иметь несколько результатов на эксперимент) и эксперимент.
ii) Обобщение результатов по отдельным лицам
SELECT ExperimentID,
IndividualID,
SUM(Results.Result) AS Result_sum,
SUM(Results.ResultsCount) AS ResultCount_sum
INTO Z3_MultiExperIndiv_Results
FROM Results INNER JOIN
Z2_MultiExperIndiv ON Results.IndividualID =
Z2_MultiExperIndiv.IndividualID
GROUP BY ExperimentID,
IndividualID
SELECT 'Standard' AS Experiment
IndividualID,
SUM(Result_sum) AS ResultIndiv_sum,
SUM(ResultCount_sum) AS ResultCountIndiv_sum
into Z4_MultiExperIndiv_Stand
FROM Z3_MultiExperIndiv_Results
GROUP BY IndividualID
- Свяжите две таблицы, созданные на шаге 2, с помощью отдельных результатов суммирования из таблицы 1 и таблицы 2 путем эксперимента. Я надеюсь, что это дает два набора результатов для людей в рассматриваемом эксперименте и результаты для людей, которые были частью рассматриваемого эксперимента из других экспериментов.
SELECT Z4_MultiExperIndiv_Stand.ExperimentID AS ExperimentID1,
Z3_MultiExperIndiv_Results.ExperimentID AS ExperimentID2,
SUM(Z4_MultiExperIndiv_Stand.ResultIndiv_sum -
Z3_MultiExperIndiv_Results.Result_sum) AS Results1,
SUM(Z4_MultiExperIndiv_Stand.ResultCountIndiv_sum -
Z3_MultiExperIndiv_Results.ResultCount_sum) AS ResultCount1,
SUM(Z3_MultiExperIndiv_Results.Result_sum) AS Results 2,
SUM(Z3_MultiExperIndiv_Results.ResultCount_sum) AS ResultCount2
into Z5_StandardConversion_data
FROM Z3_MultiExperIndiv_Results INNER JOIN
Z4_MultiExperIndiv_Stand ON Z3_MultiExperIndiv_Results.IndividualID =
Z4_MultiExperIndiv_Stand.IndividualID
GROUP BY Z4_MultiExperIndiv_Stand.IndividualId,
Z3_MultiExperIndiv_Results.IndividualId
- Затем я делю результаты для каждого набора результатов на количество результатов и делю одно на другое, чтобы получить преобразование в стандартное число для каждого эксперимента.
SELECT ExperimentID1,
ExperimentID2,
Results1,
ResultCount1,
Results2,
ResultCount2,
Results1 / ResultCount1 AS Result1_avg,
Results2 / ResultCount2 AS Result2_avg,
(ResultCount2 * Results1) / (ResultCount1 * Results2) AS Conversion
FROM Z5_StandardConversion_data
Пример входных данных:

Пример вывода:
