Метод Крамера в Excel
Обновлено: 20.11.2024
Чтобы использовать эту функцию, загрузите файл Excel, нажав ЗДЕСЬ. Открыв файл и убедившись, что макросы включены, вы можете использовать сам этот лист или скопировать функцию на свой собственный лист, перейдя в «Разработчик» и открыв Visual Basic:
Если в вашей электронной таблице включены макросы, вы можете использовать =Cramv(field1,field2) так же, как и =Correl(field1, field2).
Пример 1 демонстрирует слабость использования корреляции для оценки взаимосвязи двух категориальных переменных. В этом случае трехуровневая переменная полностью связана с двухуровневой переменной таким образом, что всякий раз, когда трехуровневая переменная равна 1 или 3, двухуровневая переменная равна 0, в противном случае двухуровневая переменная равна 1. Если мы исследуем эту связь, используя корреляции , мы не найдем корреляции, которая предполагала бы отсутствие связи. Идеальные отношения запечатлены в V-матрице Крамера.
Второй пример демонстрирует различные эквивалентности между V Крамера и корреляцией, когда переменные являются двухуровневыми. Var1 и Var2 коррелируют на уровне 0,1. Поскольку они фиктивно закодированы как «0» и «1», мы ожидаем, что такая же связь будет в V Крамера. Var3 полностью, но отрицательно коррелирует с Var2, производя корреляцию -1. Та же сила зафиксирована в V Крамера, за исключением того, что порядок категориальной переменной не имеет значения, отрицательное значение теряется. Наконец, Var4 и Var3 коррелируют на уровне -0,3. Отношение Крамера V имеет ту же силу, но теряет отрицательное значение.
Если вы не доверяете открытию моих макросов, код функции:
Функция Cramv(field1 As Range, field2 As Range)
Dim arr1() как вариант "Первый массив"
Dim arr2() как вариант "Второй массив"
Затемнение lCtr As Long, lCount As Long индексов
Затемнить iCtr как целочисленный индекс
Dim col1 As New Collection 'Коллекция для сбора уникальных значений array1
Dim col2 As New Collection 'Коллекция для сбора уникальных значений массива1
Тусклый наблюдаемый() как вариант
Dim Rowtotal() как вариант
Dim Columntotal() как вариант
Затемнить nvans1 как долго
Затемнить nvans2 как долго
Тусклый ожидаемый() как вариант
Размер Xsq как двойной
'Поиск длины массивов
Затемнение lStartPoint до максимального значения
Затемнить lEndPoint до максимального значения
ReDim arr1(1 to lEndPoint)
ReDim arr2(1 to lEndPoint)
'Тестирование для обеспечения одинаковых диапазонов размеров
Если lEndPoint <> изменить точку, то
MsgBox "Убедитесь, что в обоих диапазонах одинаковое количество ячеек"
'Найти уникальные значения для первого массива
Для lCtr = lStartPoint to lEndPoint
vItem = arr1(lCtr, 1)
'первый элемент, добавить автоматически
Если lCtr = lStartPoint, то
col1.Добавить vItem, sIndex
ReDim vAns1(lStartPoint to lStartPoint) как вариант
При ошибке возобновить дальше
col1.Добавить vItem, sIndex
Если Err.Number = 0, то
lCount = UBound(vAns1) + 1
ReDim Preserve vAns1(lStartPoint To lCount)
'Найти уникальные значения для второго массива
Для lCtr = mStartPoint до точки исправления
vItem = arr2(lCtr, 1)
'первый элемент, добавить автоматически
Если lCtr = mStartPoint, то
col2.Добавить vItem, sIndex
ReDim vAns2(mStartPoint to mStartPoint) как вариант
При ошибке возобновить дальше
col2.Добавить vItem, sIndex
Если Err.Number = 0, то
lCount = UBound(vAns2) + 1
ReDim Preserve vAns2 (mStartPoint To lCount)
'определение длины vAns
'поиск переполненных ячеек для chisq
ReDim наблюдается (1 для nvans2, 1 для nvans1) как вариант
Ожидается ReDim (1 для nvans2, 1 для nvans1) как вариант
Для lCount = 1 Для nvans1
Для iCtr = 1 Для nvans2
наблюдается(lCount, iCtr) = 0
Для lCtr = 1 В точку исправления
For lCount = 1 To nvans2 'rows
Для iCtr = 1 To nvans1 'столбцы
Если arr1(lCtr, 1) = vAns1(iCtr), то
Если arr2(lCtr, 1) = vAns2(lCount), то
наблюдается(lCount, iCtr) = наблюдается(lCount, iCtr) + 1
'поиск сумм строк и столбцов
ReDim Rowtotal(nvans1) как вариант
ReDim Columntotal(nvans2) как вариант
Для lCtr = 1 To nvans1
Для lCtr = 1 To nvans2
Для lCtr = 1 To nvans1
Для lCount = 1 Для nvans2
Итог по строке(lCtr) = Итого по строке(lCtr) + наблюдаемое(lCount, lCtr)
Итог по строке(lCtr) = Итого по строке(lCtr) / точка исправления
Для lCtr = 1 To nvans2
Для lCount = 1 Для nvans1
Всего по столбцу(lCtr) = Итого по столбцу(lCtr) + наблюдаемое(lCtr, lCount)
'поиск ожидаемых значений и Chisq
Для lCtr = 1 To nvans2
Для lCount = 1 Для nvans1
Ожидаемое(lCtr, lCount) = Итого по столбцу(lCtr) * Итого по строке(lCount)
Xsq = Xsq + (((наблюдается(lCtr, lCount) - ожидается(lCtr, lCount)) ^ 2)/ожидается(lCtr, lCount))
Этот лабораторный период включает в себя демонстрацию преимуществ использования Excel для химических приложений.
1. Математические приложения
В этом разделе рассматриваются два математических применения Excel. Первое сосредоточено на использовании матричных функций Excel для решения некоторых задач спектроскопии, а второе упражнение содержит нелинейный анализ набора данных с помощью Excel Solver.
1.1 Работа с матрицами
Вы можете использовать Excel для работы с матрицами и решения систем уравнений. Уравнение представляет собой ряд чисел и математических переменных, которые представляют собой кривую на графике (см. рис. A-8).
Рисунок A-8. Линия, соответствующая уравнению y=3x+2.
Система уравнений – это группа уравнений, представляющая две или более линии на графике. Следующие уравнения представляют систему:
3x1 - x2 = 5
Чтобы решить эту систему уравнений, необходимо найти значения x1 и x2, удовлетворяющие обоим уравнениям. Чтобы решить систему уравнений, должно быть столько же или меньше переменных, сколько есть уравнений. Например, вы не можете решить систему уравнений, содержащую три уравнения с четырьмя переменными в каждом. Вы можете решить систему с тремя уравнениями с тремя переменными или систему с тремя уравнениями с двумя переменными. Обратите внимание, что числа перед буквами называются «коэффициентами», а числа в правой части уравнения без букв называются «константами».
Чтобы решить эту систему, вам нужен метод выделения каждого из двух видов. Это можно сделать с помощью определителя. Определитель — это фундаментальное понятие линейной алгебры, которое можно упростить с помощью Excel. Каждая квадратная матрица системы уравнений имеет свой уникальный определитель. Единственным условием является то, что матрица должна быть квадратной, то есть должно быть равное количество строк в качестве столбцов. Чтобы найти определитель матрицы, нужно следовать заранее определенной формуле умножения и сложения, поэтому Excel может упростить задачу. Дополнительные сведения о матричных функциях Excel см. в разделе Глава 7 Приложения. На самом деле, чтобы решить систему, вы должны использовать определитель вместе с другим алгебраическим понятием, называемым правилом Крамера. Первым шагом в использовании правила Крамерса является вычисление определителя матрицы коэффициентов. Затем постоянный вектор подставляется в матрицу для первого столбца и снова вычисляется определитель. Затем постоянный вектор подставляется во второй столбец, третий столбец и т. д., при этом каждый раз вычисляется определитель. Наконец, путем деления некоторых определителей можно определить решения переменных. Ниже приведен теоретический пример поиска решения системы 2x2, показывающий задействованную математику. Рассмотрим пример выше.
В матричной форме эта система выглядит следующим образом:
Коэффициенты уравнения вставляются в матрицу 2X2 (т.е. 2 столбца и 2 строки). Константы выражаются как вектор-столбец. Вектор отличается от матрицы тем, что имеет только один столбец или одну строку.
Чтобы найти определитель матрицы 2 x 2, вычтите произведение двух диагоналей в матрице коэффициентов:
Вы можете расширить это, используя правило Крамерса для решения системы. Чтобы найти переменную x1, подставьте константный вектор в первый столбец матрицы и найдите определитель. Затем разделите результат на определитель матрицы коэффициентов:
x1 = 56/28 = 2
Чтобы найти переменную x2, подставьте постоянный вектор во второй столбец и повторите процесс:
x2 = 28/28 = 1
Теперь вы решили систему, вектор решения равен (x1, x2) = (2, 1). Теперь вы можете использовать эту теорию для создания шаблона электронной таблицы в Excel, который решит за вас систему уравнений. Шаблон представляет собой настройку электронной таблицы, которую вы сохраняете, чтобы использовать ее снова и снова для выполнения тривиальной задачи, такой как утомительный расчет. Сначала в своем шаблоне вы настроите систему и решение 2 x 2.
Первый шаг к поиску решения выполнен. Второй шаг заключается в подстановке постоянного вектора в матрицу коэффициентов.
В ячейке A8 введите Матрица коэффициентов X1 |
затем введите =$C$2 в A9, < tt>=$C$3 в A10, =$B$2 в B9 и =$B$3 в B10. |
В ячейке D2 введите =(MDETERM(A9:B10))/A6 . |
Повторите это для x 2, введя матрицу коэффициентов X2 в ячейку A11, а затем введя соответствующие формулы, чтобы заменить второй столбец матрицы коэффициентов постоянным вектором. |
Наконец введите формулу =(MDETERM(A12:B13))/A6 в ячейку D3. |
В ячейки G2:G6 введите значения 84 , 16 , 0,305 , 0,013 и 0 . Это «оценочные предположения» для констант, которые будут включены в уравнение для создания набора данных модели. |
Into в ячейке C2 введите формулу =($G$2*EXP(-$G$4*A2))+($G$3*EXP(-$G$5*A2))+$G$6 . Это версия уравнения 1 в формате Excel. Скопируйте это уравнение для всего набора данных. Нанесите C2:C720 на график, снова используя линию без маркеров. |
В ячейку D2 введите формулу =C2-B2 . Это вычисляет остаток между двумя наборами данных. Остаток — это просто разница между двумя наборами данных. Снова скопируйте эту формулу для всего набора данных. |
В ячейку E2 введите формулу =D2^2< /тт> . Это квадрат остатка. При этом учитываются любые отрицательные остаточные значения, возводя их в квадрат и делая их положительными. Скопируйте квадрат остатка для всего набора данных. |
Наконец введите формулу =SUM(E2: E720) в ячейку G8. Это сумма квадратов остатков. Теперь ваша электронная таблица должна выглядеть так, как показано в таблице A1-10. |
Целевой ячейкой для этой итерации является сумма квадратов остатков, $G$8. Вы заставите Солвер минимизировать это значение,
нажмите на Min в разделе «Равно:». |
Решатель минимизирует сумму квадратов остатков, изменив записи в ячейках G2:G6.
введите $G $2:$G$6 в поле Путем изменения ячеек:. |
Наконец, вам также необходимо изменить одну из спецификаций времени для Решателя.
Нажмите на Варианты. и измените Максимальное Времявремя: на 200 секунд. |
Вы видите, что в этом диалоговом окне вы можете изменить ограничения итераций для Решателя.
По завершении нажмите нажмите кнопку OK |
затем нажмите кнопку SOLVE в исходном диалоговом окне, чтобы запустить Solver. | тр> таблица>