Модели линейной регрессии описывают линейную взаимосвязь между ответом и одним или несколькими прогностическими терминами. Однако много раз существует нелинейное отношение. Нелинейная регрессия описывает общие нелинейные модели. Специальный класс нелинейных моделей, называемый обобщёнными линейными моделями, использует линейные методы.
Напомним, линейные модели имеют следующие характеристики:
При каждом наборе значений для предикторов ответ имеет нормальное распределение со средним δ.
Вектор коэффициентов b определяет линейную комбинацию Xb предикторов X.
В качестве модели используется λ = Xb.
В обобщённых линейных моделях эти характеристики обобщаются следующим образом:
При каждом наборе значений для предикторов отклик имеет распределение, которое может быть нормальным, биномиальным, пуассоновым, гамма или обратным гауссовым, с параметрами, включающими среднее λ.
Вектор коэффициентов b определяет линейную комбинацию Xb предикторов X.
Чтобы начать подгонку регрессии, поместите данные в форму, ожидаемую для подгонки функций. Все методы регрессии начинаются с входных данных в массиве X и данные ответа в отдельном векторе yили входные данные в таблице или массиве наборов данных tbl и данные ответа в виде столбца в tbl. Каждая строка входных данных представляет одно наблюдение. Каждый столбец представляет один предиктор (переменную).
Для таблицы или массива наборов данных tbl, укажите переменную ответа с помощью 'ResponseVar' пара имя-значение:
mdl = fitglm(tbl,'ResponseVar','BloodPressure');
Переменная ответа является последним столбцом по умолчанию.
Можно использовать числовые категориальные предикторы. Категориальный предиктор - это тот, который берет значения из фиксированного набора возможностей.
Для числового массива X, укажите категориальные предикторы, используя 'Categorical' пара имя-значение. Например, чтобы указать, что предикторы 2 и 3 из шести категоричны:
mdl = fitglm(X,y,'Categorical',[2,3]); % or equivalently mdl = fitglm(X,y,'Categorical',logical([0 1 1 0 0 0]));
Для таблицы или массива наборов данных tbl, аппроксимирующие функции предполагают, что эти типы данных категоричны:
Логический вектор
Категориальный вектор
Символьный массив
Строковый массив
Если вы хотите указать, что числовой предиктор категоричен, используйте 'Categorical' пара имя-значение.
Представить отсутствующие числовые данные как NaN. Сведения о представлении отсутствующих данных для других типов данных см. в разделе Отсутствующие значения групп.
Для 'binomial' модель с матрицей данных X, ответ y могут быть:
Вектор двоичного столбца - каждая запись представляет успех (1) или отказ (0).
Матрица целых чисел из двух столбцов - первый столбец - это количество успехов в каждом наблюдении, второй столбец - это количество испытаний в этом наблюдении.
Для 'binomial' модель с таблицей или набором данных tbl:
Используйте ResponseVar пара имя-значение для указания столбца tbl это дает количество успехов в каждом наблюдении.
Используйте BinomialSize пара имя-значение для указания столбца tbl это дает количество испытаний в каждом наблюдении.
Например, чтобы создать массив наборов данных из электронной таблицы Excel ®:
ds = dataset('XLSFile','hospital.xls',... 'ReadObsNames',true);
Чтобы создать массив наборов данных из переменных рабочей области, выполните следующие действия.
load carsmall
ds = dataset(MPG,Weight);
ds.Year = ordinal(Model_Year);Чтобы создать таблицу из переменных рабочей области, выполните следующие действия.
load carsmall
tbl = table(MPG,Weight);
tbl.Year = ordinal(Model_Year);Например, чтобы создать числовые массивы из переменных рабочей области:
load carsmall
X = [Weight Horsepower Cylinders Model_Year];
y = MPG;Чтобы создать числовые массивы из электронной таблицы Excel, выполните следующие действия.
[X, Xnames] = xlsread('hospital.xls'); y = X(:,4); % response y is systolic pressure X(:,4) = []; % remove y from the X matrix
Обратите внимание, что нечисловые записи, такие как sex, не появляться в X.
Часто данные указывают на тип распределения обобщенной линейной модели.
| Тип данных ответа | Предлагаемый тип распределения модели |
|---|---|
| Любое реальное число | 'normal' |
| Любое положительное число | 'gamma' или 'inverse gaussian' |
| Любое неотрицательное целое число | 'poisson' |
Целое число от 0 до n, где n является фиксированным положительным значением | 'binomial' |
Задайте тип распределения модели с помощью Distribution пара имя-значение. После выбора типа модели выберите функцию связи, чтобы отобразить среднее значение, и линейный предиктор Xb.
| Стоимость | Описание |
|---|---|
'comploglog' | log (-log ((1 - |
| start= Xb |
| log (λ) = Xb |
| log (в/( 1 - в/)) = Xb |
| log (-log (start)) = Xb |
'probit' | Φ-1 (start) = Xb, где Λ - нормальная (гауссова) кумулятивная функция распределения |
'reciprocal', по умолчанию для распределения 'gamma' | start-1 = Xb |
| мкр = Xb |
Массив ячеек формы | Пользовательская функция связи (см. Пользовательская функция связи) |
Функции связи, не используемые по умолчанию, в основном полезны для биномиальных моделей. Этими функциями связи, не используемыми по умолчанию, являются 'comploglog', 'loglog', и 'probit'.
Функция линии связи определяет отношение f (λ) = Xb между средним откликом «» и линейной комбинацией Xb = X * b предикторов. Можно выбрать одну из встроенных функций связи или определить собственную, указав функцию связи.FL, его производная FD, и его обратная FI:
Функция связи FL вычисляет f (λ).
Производная функции линии связи FD вычисляет df (start)/db.
Обратная функция FI вычисляет g (Xb) =
Пользовательскую функцию связи можно задать любым из двух эквивалентных способов. Каждый из способов содержит дескрипторы функций, которые принимают один массив значений, представляющих «», или «» Xb «», и возвращают массив того же размера. Дескрипторы функций находятся либо в массиве ячеек, либо в структуре:
Массив ячеек формы {FL FD FI}, содержащий три дескриптора функций, созданный с помощью @, определяющие связь (FL), производная звена (FD) и обратной линии связи (FI).
Структура с тремя полями, каждое из которых содержит дескриптор функции, созданный с помощью s@:
- Функция связиs.Link
- Производная функции звенаs.Derivative
- Обратная функция линии связиs.Inverse
Например, чтобы вписать модель с помощью 'probit' функция связи:
x = [2100 2300 2500 2700 2900 ... 3100 3300 3500 3700 3900 4100 4300]'; n = [48 42 31 34 31 21 23 23 21 16 17 21]'; y = [1 2 0 3 8 8 14 17 19 15 17 21]'; g = fitglm(x,[y n],... 'linear','distr','binomial','link','probit')
g =
Generalized Linear regression model:
probit(y) ~ 1 + x1
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
(Intercept) -7.3628 0.66815 -11.02 3.0701e-28
x1 0.0023039 0.00021352 10.79 3.8274e-27
12 observations, 10 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 241, p-value = 2.25e-54Такое же вписывание можно выполнить с помощью пользовательской функции связи, которая выполняет идентично 'probit' функция связи:
s = {@norminv,@(x)1./normpdf(norminv(x)),@normcdf};
g = fitglm(x,[y n],...
'linear','distr','binomial','link',s)g =
Generalized Linear regression model:
link(y) ~ 1 + x1
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
(Intercept) -7.3628 0.66815 -11.02 3.0701e-28
x1 0.0023039 0.00021352 10.79 3.8274e-27
12 observations, 10 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 241, p-value = 2.25e-54Две модели одинаковы.
Эквивалентно, вы можете писать s в качестве структуры вместо массива ячеек дескрипторов функций:
s.Link = @norminv; s.Derivative = @(x) 1./normpdf(norminv(x)); s.Inverse = @normcdf; g = fitglm(x,[y n],... 'linear','distr','binomial','link',s)
g =
Generalized Linear regression model:
link(y) ~ 1 + x1
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
(Intercept) -7.3628 0.66815 -11.02 3.0701e-28
x1 0.0023039 0.00021352 10.79 3.8274e-27
12 observations, 10 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 241, p-value = 2.25e-54Существует два способа создания подогнанной модели.
Использовать fitglm при наличии хорошего представления о обобщенной линейной модели или при необходимости корректировки модели для включения или исключения определенных терминов.
Использовать stepwiseglm при необходимости подгонки модели с использованием пошаговой регрессии. stepwiseglm начинается с одной модели, такой как константа, и добавляет или вычитает термины по одному, выбирая оптимальный член каждый раз жадным образом, пока он не может улучшиться дальше. Используйте пошаговую подгонку, чтобы найти хорошую модель, которая имеет только соответствующие термины.
Результат зависит от начальной модели. Обычно, начиная с постоянной модели приводит к небольшой модели. Начало с большего числа членов может привести к более сложной модели, но с более низкой среднеквадратичной ошибкой.
В любом случае укажите модель для функции фитинга (которая является начальной моделью для stepwiseglm).
Укажите модель одним из этих способов.
| Имя | Тип модели |
|---|---|
'constant' | Модель содержит только константу (пересечение). |
'linear' | Модель содержит пересечение и линейные члены для каждого предиктора. |
'interactions' | Модель содержит пересечение, линейные члены и все произведения пар различных предикторов (без квадратов). |
'purequadratic' | Модель содержит пересечение, линейные и квадратные элементы. |
'quadratic' | Модель содержит пересечение, линейные элементы, взаимодействия и квадратные элементы. |
'poly | Модель - многочлен со всеми членами до степени i в первом предикторе, степень j во втором предикторе и т.д. Использовать цифры 0 через 9. Например, 'poly2111' имеет константу плюс все линейные и произведения члены, а также содержит члены с предиктором 1 в квадрате. |
Матрица терминов T представляет собой матрицу t-by- ( p + 1), задающую члены в модели, где t - число членов, p - число переменных предиктора, и + 1 учитывает переменную отклика. Значение T(i,j) - экспонента переменной j в термине i.
Например, предположим, что входные данные включают три прогнозирующие переменные. x1, x2, и x3 и переменная ответа y в порядке x1, x2, x3, и y. Каждая строка T представляет собой один термин:
[0 0 0 0] - Постоянный термин или перехват
[0 1 0 0] — x2; эквивалентно, x1^0 * x2^1 * x3^0
[1 0 1 0] — x1*x3
[2 0 0 0] — x1^2
[0 1 2 0] — x2*(x3^2)
0 в конце каждого члена представляет переменную ответа. В общем случае вектор-столбец нулей в матрице членов представляет положение переменной отклика. Если в матрице и векторе столбца имеются переменные предиктора и отклика, то необходимо включить 0 для переменной ответа в последнем столбце каждой строки.
Формула для спецификации модели - это вектор символов или строковый скаляр формы
',y ~ terms'
y - имя ответа.
terms содержит
Имена переменных
+ для включения следующей переменной
- для исключения следующей переменной
: для определения взаимодействия, произведения терминов
* для определения взаимодействия и всех терминов нижнего порядка
^ поднять предиктор в степень, точно как в * повторяется, так ^ включает также термины нижнего порядка
() для группирования терминов
Совет
Формулы по умолчанию включают константу (пересечение). Чтобы исключить постоянный член из модели, включите -1 в формуле.
Примеры:
'y ~ x1 + x2 + x3' представляет собой трехвариантную линейную модель с пересечением.
'y ~ x1 + x2 + x3 - 1' представляет собой линейную модель с тремя переменными без пересечения.
'y ~ x1 + x2 + x3 + x2^2' является трехвариантной моделью с перехватом и x2^2 срок.
'y ~ x1 + x2^2 + x3' совпадает с предыдущим примером, поскольку x2^2 включает x2 срок.
'y ~ x1 + x2 + x3 + x1:x2' включает x1*x2 срок.
'y ~ x1*x2 + x3' совпадает с предыдущим примером, поскольку x1*x2 = x1 + x2 + x1:x2.
'y ~ x1*x2*x3 - x1:x2:x3' имеет все взаимодействия между x1, x2, и x3, за исключением трехстороннего взаимодействия.
'y ~ x1*(x2 + x3 + x4)' имеет все линейные члены, плюс произведения x1 с каждой из других переменных.
Создание подогнанной модели с помощью fitglm или stepwiseglm. Выберите между ними, как в разделе Выбрать метод фитинга (Choose Fitting Method) и Модель (Model). Для обобщенных линейных моделей, отличных от моделей с нормальным распределением, задайте Distribution пара имя-значение, как в разделе Выбор обобщенной линейной модели и функции связи. Например,
mdl = fitglm(X,y,'linear','Distribution','poisson') % or mdl = fitglm(X,y,'quadratic',... 'Distribution','binomial')
После подгонки модели проверьте результат.
Модель линейной регрессии показывает несколько диагностических данных при вводе ее имени или ввода disp(mdl). Этот экран предоставляет некоторые основные сведения для проверки того, адекватно ли подобранная модель представляет данные.
Например, поместите модель Пуассона в данные, построенные с двумя из пяти предикторов, не влияющих на ответ, и без члена перехвата:
rng('default') % for reproducibility X = randn(100,5); mu = exp(X(:,[1 4 5])*[.4;.2;.3]); y = poissrnd(mu); mdl = fitglm(X,y,... 'linear','Distribution','poisson')
mdl =
Generalized Linear regression model:
log(y) ~ 1 + x1 + x2 + x3 + x4 + x5
Distribution = Poisson
Estimated Coefficients:
Estimate SE tStat pValue
(Intercept) 0.039829 0.10793 0.36901 0.71212
x1 0.38551 0.076116 5.0647 4.0895e-07
x2 -0.034905 0.086685 -0.40266 0.6872
x3 -0.17826 0.093552 -1.9054 0.056722
x4 0.21929 0.09357 2.3436 0.019097
x5 0.28918 0.1094 2.6432 0.0082126
100 observations, 94 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 44.9, p-value = 1.55e-08Обратите внимание, что:
Дисплей содержит оценочные значения каждого коэффициента в Estimate столбец. Эти значения разумно близки к истинным значениям [0;.4;0;0;.2;.3], за исключением, возможно, коэффициента x3 не страшно близко 0.
Для оценок коэффициентов имеется стандартный столбец ошибок.
Сообщаемый pValue (которые получены из t статистики в предположении о нормальных ошибках) для предикторов 1, 4 и 5 малы. Это три предиктора, которые использовались для создания данных ответа y.
pValue для (Intercept), x2 и x3 больше 0,01. Эти три предиктора не использовались для создания данных ответа y. pValue для x3 только что закончилось .05, так что может рассматриваться как возможно значительный.
Дисплей содержит статистику хи-квадрата.
Диагностические графики помогают определить отклонения и увидеть другие проблемы в модели или подгонке. Чтобы проиллюстрировать эти графики, рассмотрим биномиальную регрессию с функцией логистической связи.
Логистическая модель полезна для данных пропорций. Он определяет взаимосвязь между пропорцией p и весом w с помощью:
log [p/( 1 - p)] = b1 + b2w
Этот пример соответствует биномиальной модели данным. Данные получены из carbig.mat, который содержит замеры больших автомобилей различной массы. Каждый вес в w имеет соответствующее количество автомобилей в total и соответствующее количество автомобилей с плохим пробегом в poor.
Разумно предположить, что значения poor следовать биномиальным распределениям, с количеством испытаний, заданным total и процент успехов в зависимости от w. Это распределение может быть учтено в контексте логистической модели с использованием обобщенной линейной модели с log функции связи ( Эта функция канала называется'logit'.
w = [2100 2300 2500 2700 2900 3100 ... 3300 3500 3700 3900 4100 4300]'; total = [48 42 31 34 31 21 23 23 21 16 17 21]'; poor = [1 2 0 3 8 8 14 17 19 15 17 21]'; mdl = fitglm(w,[poor total],... 'linear','Distribution','binomial','link','logit')
mdl =
Generalized Linear regression model:
logit(y) ~ 1 + x1
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
(Intercept) -13.38 1.394 -9.5986 8.1019e-22
x1 0.0041812 0.00044258 9.4474 3.4739e-21
12 observations, 10 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 242, p-value = 1.3e-54Посмотрите, насколько хорошо модель подходит к данным.
plotSlice(mdl)

Посадка выглядит достаточно хорошо, с довольно широкими доверительными границами.
Чтобы просмотреть дополнительные сведения, создайте график рычагов.
plotDiagnostics(mdl)

Это типично для регрессии с точками, упорядоченными переменной предиктора. Рычаги воздействия каждой точки на подгонку выше для точек с относительно экстремальными предикторными значениями (в любом направлении) и низки для точек со средними предикторными значениями. В примерах с несколькими предикторами и с точками, не упорядоченными по значению предиктора, этот график может помочь вам определить, какие наблюдения имеют высокий рычаг, потому что они являются отклонениями, измеряемыми их значениями предиктора.
Существует несколько остаточных графиков, которые помогают обнаружить ошибки, отклонения или корреляции в модели или данных. Простейшими остаточными графиками являются график гистограммы по умолчанию, который показывает диапазон остатков и их частоты, и график вероятности, который показывает, как распределение остатков сравнивается с нормальным распределением с согласованной дисперсией.
В этом примере показаны остаточные графики для подогнанной модели Пуассона. Построение данных имеет два из пяти предикторов, не влияющих на ответ, и не имеет термина перехвата:
rng('default') % for reproducibility X = randn(100,5); mu = exp(X(:,[1 4 5])*[2;1;.5]); y = poissrnd(mu); mdl = fitglm(X,y,... 'linear','Distribution','poisson');
Проверьте остатки:
plotResiduals(mdl)

В то время как большинство остатков кластеров около 0, есть несколько около ± 18. Итак, изучите другой график остатков.
plotResiduals(mdl,'fitted')
Большие остатки, кажется, не имеют большого отношения к размерам подогнанных значений.
Возможно, вероятностный график более информативен.
plotResiduals(mdl,'probability')
Теперь это ясно. Остатки не следуют нормальному распределению. Вместо этого у них есть более жирные хвосты, так же как и основное распределение Пуассона.
В этом примере показано, как понять влияние каждого предиктора на регрессионную модель и как изменить модель для удаления ненужных терминов.
Создайте модель из некоторых предикторов в искусственных данных. Данные не используют второй и третий столбцы в X. Таким образом, вы ожидаете, что модель не покажет большой зависимости от этих предикторов.
rng('default') % for reproducibility X = randn(100,5); mu = exp(X(:,[1 4 5])*[2;1;.5]); y = poissrnd(mu); mdl = fitglm(X,y,... 'linear','Distribution','poisson');
Изучите график среза ответов. При этом эффект каждого предиктора отображается отдельно.
plotSlice(mdl)

Масштаб первого предсказателя переполняет сюжет. Отключите его с помощью меню Предикторы.



Теперь ясно, что предикторы 2 и 3 не имеют никакого эффекта.
Можно перетащить отдельные предикторные значения, которые представлены пунктирными синими вертикальными линиями. Можно также выбрать между одновременными и несимметричными доверительными границами, которые представлены пунктирными красными кривыми. Перетаскивание линий предиктора подтверждает, что предикторы 2 и 3 практически не имеют эффекта.
Удалите ненужные предикторы, используя либо removeTerms или step. Используя step может быть безопаснее, в случае, если существует неожиданная важность термина, который становится очевидным после удаления другого термина. Однако иногда removeTerms может быть эффективным, когда step не продолжается. В этом случае они дают одинаковые результаты.
mdl1 = removeTerms(mdl,'x2 + x3')mdl1 =
Generalized Linear regression model:
log(y) ~ 1 + x1 + x4 + x5
Distribution = Poisson
Estimated Coefficients:
Estimate SE tStat pValue
(Intercept) 0.17604 0.062215 2.8295 0.004662
x1 1.9122 0.024638 77.614 0
x4 0.98521 0.026393 37.328 5.6696e-305
x5 0.61321 0.038435 15.955 2.6473e-57
100 observations, 96 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 4.97e+04, p-value = 0mdl1 = step(mdl,'NSteps',5,'Upper','linear')
1. Removing x3, Deviance = 93.856, Chi2Stat = 0.00075551, PValue = 0.97807
2. Removing x2, Deviance = 96.333, Chi2Stat = 2.4769, PValue = 0.11553
mdl1 =
Generalized Linear regression model:
log(y) ~ 1 + x1 + x4 + x5
Distribution = Poisson
Estimated Coefficients:
Estimate SE tStat pValue
(Intercept) 0.17604 0.062215 2.8295 0.004662
x1 1.9122 0.024638 77.614 0
x4 0.98521 0.026393 37.328 5.6696e-305
x5 0.61321 0.038435 15.955 2.6473e-57
100 observations, 96 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 4.97e+04, p-value = 0Существует три способа использования линейной модели для прогнозирования реакции на новые данные:
predict predict способ дает прогноз средних откликов и, если требуется, доверительных границ.
В этом примере показано, как прогнозировать и получать доверительные интервалы для прогнозов с помощью predict способ.
Создайте модель из некоторых предикторов в искусственных данных. Данные не используют второй и третий столбцы в X. Таким образом, вы ожидаете, что модель не покажет большой зависимости от этих предикторов. Постройте модель пошагово, чтобы включить соответствующие предикторы автоматически.
rng('default') % for reproducibility X = randn(100,5); mu = exp(X(:,[1 4 5])*[2;1;.5]); y = poissrnd(mu); mdl = stepwiseglm(X,y,... 'constant','upper','linear','Distribution','poisson');
1. Adding x1, Deviance = 2515.02869, Chi2Stat = 47242.9622, PValue = 0 2. Adding x4, Deviance = 328.39679, Chi2Stat = 2186.6319, PValue = 0 3. Adding x5, Deviance = 96.3326, Chi2Stat = 232.0642, PValue = 2.114384e-52
Создайте новые данные и оцените прогнозы из данных.
Xnew = randn(3,5) + repmat([1 2 3 4 5],[3,1]); % new data
[ynew,ynewci] = predict(mdl,Xnew)ynew =
1.0e+04 *
0.1130
1.7375
3.7471
ynewci =
1.0e+04 *
0.0821 0.1555
1.2167 2.4811
2.8419 4.9407fevalПри построении модели из таблицы или массива наборов данных feval часто удобнее для прогнозирования средних ответов, чем predict. Однако feval не обеспечивает доверительных границ.
В этом примере показано, как предсказать средние ответы с использованием feval способ.
Создайте модель из некоторых предикторов в искусственных данных. Данные не используют второй и третий столбцы в X. Таким образом, вы ожидаете, что модель не покажет большой зависимости от этих предикторов. Постройте модель пошагово, чтобы включить соответствующие предикторы автоматически.
rng('default') % for reproducibility X = randn(100,5); mu = exp(X(:,[1 4 5])*[2;1;.5]); y = poissrnd(mu); X = array2table(X); % create data table y = array2table(y); tbl = [X y]; mdl = stepwiseglm(tbl,... 'constant','upper','linear','Distribution','poisson');
1. Adding x1, Deviance = 2515.02869, Chi2Stat = 47242.9622, PValue = 0 2. Adding x4, Deviance = 328.39679, Chi2Stat = 2186.6319, PValue = 0 3. Adding x5, Deviance = 96.3326, Chi2Stat = 232.0642, PValue = 2.114384e-52
Создайте новые данные и оцените прогнозы из данных.
Xnew = randn(3,5) + repmat([1 2 3 4 5],[3,1]); % new data ynew = feval(mdl,Xnew(:,1),Xnew(:,4),Xnew(:,5)) % only need predictors 1,4,5
ynew =
1.0e+04 *
0.1130
1.7375
3.7471Эквивалентно,
ynew = feval(mdl,Xnew(:,[1 4 5])) % only need predictors 1,4,5ynew =
1.0e+04 *
0.1130
1.7375
3.7471random random способ формирует новые значения случайного отклика для указанных значений предиктора. Распределение значений ответа - это распределение, используемое в модели. random вычисляет среднее распределение из предикторов, оцененных коэффициентов и функции линии связи. Для распределений, таких как нормальные, модель также предоставляет оценку дисперсии отклика. Для биномиального распределения и распределения Пуассона дисперсия ответа определяется средним значением; random не использует отдельную оценку «дисперсии».
В этом примере показано, как моделировать ответы с помощью random способ.
Создайте модель из некоторых предикторов в искусственных данных. Данные не используют второй и третий столбцы в X. Таким образом, вы ожидаете, что модель не покажет большой зависимости от этих предикторов. Постройте модель пошагово, чтобы включить соответствующие предикторы автоматически.
rng('default') % for reproducibility X = randn(100,5); mu = exp(X(:,[1 4 5])*[2;1;.5]); y = poissrnd(mu); mdl = stepwiseglm(X,y,... 'constant','upper','linear','Distribution','poisson');
1. Adding x1, Deviance = 2515.02869, Chi2Stat = 47242.9622, PValue = 0 2. Adding x4, Deviance = 328.39679, Chi2Stat = 2186.6319, PValue = 0 3. Adding x5, Deviance = 96.3326, Chi2Stat = 232.0642, PValue = 2.114384e-52
Создайте новые данные и оцените прогнозы из данных.
Xnew = randn(3,5) + repmat([1 2 3 4 5],[3,1]); % new data
ysim = random(mdl,Xnew)ysim =
1111
17121
37457Прогнозы от random являются образцами Пуассона, а также целыми числами.
Оцените random снова метод, результат изменяется.
ysim = random(mdl,Xnew)
ysim =
1175
17320
37126Отображение модели содержит достаточно информации, чтобы дать возможность другому пользователю воссоздать модель в теоретическом смысле. Например,
rng('default') % for reproducibility X = randn(100,5); mu = exp(X(:,[1 4 5])*[2;1;.5]); y = poissrnd(mu); mdl = stepwiseglm(X,y,... 'constant','upper','linear','Distribution','poisson')
1. Adding x1, Deviance = 2515.02869, Chi2Stat = 47242.9622, PValue = 0
2. Adding x4, Deviance = 328.39679, Chi2Stat = 2186.6319, PValue = 0
3. Adding x5, Deviance = 96.3326, Chi2Stat = 232.0642, PValue = 2.114384e-52
mdl =
Generalized Linear regression model:
log(y) ~ 1 + x1 + x4 + x5
Distribution = Poisson
Estimated Coefficients:
Estimate SE tStat pValue
(Intercept) 0.17604 0.062215 2.8295 0.004662
x1 1.9122 0.024638 77.614 0
x4 0.98521 0.026393 37.328 5.6696e-305
x5 0.61321 0.038435 15.955 2.6473e-57
100 observations, 96 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 4.97e+04, p-value = 0Вы также можете получить доступ к описанию модели программным способом. Например,
mdl.Coefficients.Estimate
ans =
0.1760
1.9122
0.9852
0.6132mdl.Formula
ans = log(y) ~ 1 + x1 + x4 + x5
[1] Коллетт, D. Моделирование двоичных данных. Нью-Йорк: Chapman & Hall, 2002.
[2] Добсон, А. Дж. Введение в обобщенные линейные модели. Нью-Йорк: Chapman & Hall, 1990.
[3] Маккалла, П. и Дж. А. Нелдер. Обобщенные линейные модели. Нью-Йорк: Chapman & Hall, 1990.
[4] Нетер, Дж., М. Х. Кутнер, С. Дж. Нахтсхайм и В. Вассерман. Прикладные линейные статистические модели, четвертое издание. Ирвин, Чикаго, 1996.