Найти наиболее подходящую линию и корреляцию между двумя таблицами в Microsoft Access?
У меня есть два запроса в базе данных Microsoft Access. Они названы Average
а также Home_Runs
, Они оба имеют одинаковые первые три столбца Name
, [Year]
а также Month
,
Запрос: Average
Name Year Month Average
Cabrera 2013 5 .379
Fielder 2013 5 .245
Martinez 2013 5 .235
Cabrera 2013 6 .378
Fielder 2013 6 .278
Martinez 2013 6 .240
Запрос: Home_Runs
Name Year Month Home Runs
Cabrera 2013 5 12
Fielder 2013 5 2
Martinez 2013 5 2
Cabrera 2013 6 9
Fielder 2013 6 4
Martinez 2013 6 4
Мне нужно сместить данные, прежде чем я начну вычисления. Мне нужно определить, как Home Runs за один месяц соотносятся со средним значением за предыдущий месяц. Так что это не прямое ежемесячное сравнение. Мне нужно выполнить сравнение с предыдущим месяцем.
Мне нужно сделать два расчета двух вещей из этих двух запросов.
Первый: с Average
будучи осью X и Home_Runs
будучи осью Y. Мне нужно найти корреляцию между этими точками данных.
Второе: с Average
будучи осью X и Home_Runs
будучи осью Y. Мне нужно найти уравнение линии наилучшего соответствия между всеми этими точками данных. Более конкретно, мне нужно найти значение переменной Y, когда переменная X равна определенным значениям.
Дополнительная информация:
В конце мне нужно вернуть таблицу, которая выглядит так:
Calculation Tier 1 Tier 2 Tier 3 Correlation
Avgerage to Home Runs .04 3.00 6.00 .80
Каков наилучший способ выполнить эти вещи?
1 ответ
Вот пример SQL Fiddle, с которым вы можете поиграть и настроить его:
SELECT (Avg(A.Paverage * H.HomeRuns) - Avg(A.Paverage) * Avg(H.HomeRuns)) /
(StDevP(A.Paverage) * StDevP(H.HomeRuns)) AS Correlation,
(Sum(A.Paverage * H.HomeRuns) - (Sum(A.Paverage) * Sum(H.HomeRuns) /
Count(*))) / (Sum(A.Paverage * A.Paverage) - (Sum(A.Paverage) * Sum(A.Paverage) / Count(*))) AS LineBestFit
FROM Averages AS A
INNER JOIN Home_Runs AS H
ON (A.Pname = H.Pname)
AND (A.Pyear = H.Pyear)
AND ((A.Pmonth - 1) = H.Pmonth)