Найти наиболее подходящую линию и корреляцию между двумя таблицами в 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)
Другие вопросы по тегам