Подгонка обобщенной линейной регрессионой модели
задает дополнительные опции, используя один или несколько аргументов имя-значение. Для примера можно задать b
= glmfit(X
,y
,distr
,Name,Value
)'Constant','off'
для опускания постоянного члена из модели.
[
также возвращает значение b
,dev
] = glmfit(___)dev
, отклонение подгонки.
Подгонка обобщенной линейной регрессионой модели и вычисление предсказанных (оцененных) значений для данных предиктора с помощью подобранной модели.
Создайте выборочные данные набор.
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]';
x
содержит значения переменных предиктора. Каждый y
значение - количество успехов в соответствующем количестве испытаний в n
.
Подбор модели регрессии пробита для y
на x
.
b = glmfit(x,[y n],'binomial','Link','probit');
Вычислите предполагаемое количество успешных попыток.
yfit = glmval(b,x,'probit','Size',n);
Постройте график наблюдаемого процента успеха и предполагаемого процента успеха по сравнению с x
значения.
plot(x,y./n,'o',x,yfit./n,'-')
Задайте пользовательскую функцию ссылки и используйте ее, чтобы соответствовать обобщенной линейной регрессионой модели.
Загрузите выборочные данные.
load fisheriris
Область вектора-столбца species
содержит цветки радужки трех различных видов: сетоза, версиколор и виргиника. Матрица meas
содержит четыре вида измерений для цветов, длину и ширину чашелистиков и лепестков в сантиметрах.
Задайте переменные предиктора и переменную отклика.
X = meas(51:end,:);
y = strcmp('versicolor',species(51:end));
Задайте пользовательскую функцию ссылки для функции logit ссылки. Создайте три указателя на функцию, которые определяют функцию ссылки, производную функции ссылки и функцию обратной ссылки. Храните их в массиве ячеек.
link = @(mu) log(mu./(1-mu)); derlink = @(mu) 1./(mu.*(1-mu)); invlink = @(resp) 1./(1+exp(-resp)); F = {link,derlink,invlink};
Подбор логистической регрессионой модели с помощью glmfit
с функцией пользовательской ссылки.
b = glmfit(X,y,'binomial','link',F)
b = 5×1
42.6378
2.4652
6.6809
-9.4294
-18.2861
Подгонка обобщенной линейной модели при помощи встроенной logit
соедините функцию и сравните результаты.
b = glmfit(X,y,'binomial','link','logit')
b = 5×1
42.6378
2.4652
6.6809
-9.4294
-18.2861
Подгонка обобщенной линейной регрессионой модели, которая содержит точку пересечения и линейный термин для каждого предиктора. Выполните тест отклонения, который определяет, подходит ли модель значительно лучше, чем постоянная модель.
Сгенерируйте выборочные данные с помощью случайных чисел Пуассона с двумя базовыми предикторами X(:,1)
и X(:,2)
.
rng('default') % For reproducibility rndvars = randn(100,2); X = [2 + rndvars(:,1),rndvars(:,2)]; mu = exp(1 + X*[1;2]); y = poissrnd(mu);
Подгонка обобщенной линейной регрессионой модели, которая содержит точку пересечения и линейный термин для каждого предиктора.
[b,dev] = glmfit(X,y,'poisson');
Второй выходной аргумент dev
- Отклонение подгонки.
Подгонка обобщенной линейной регрессионой модели, которая содержит только точку пересечения. Задайте переменную предиктора как столбец 1с и задайте 'Constant'
как 'off'
так что glmfit
не включает постоянный члена в модели.
[~,dev_noconstant] = glmfit(ones(100,1),y,'poisson','Constant','off');
Вычислите различие между dev_constant
и dev
.
D = dev_noconstant - dev
D = 2.9533e+05
D
имеет распределение хи-квадрат с 2 степенями свободы. Степени свободы равны различию в количестве оцененных параметров в модели, соответствующей dev
и количество оцененных параметров в постоянной модели. Найдите значение p для теста отклонения.
p = 1 - chi2cdf(D,2)
p = 0
Маленькое значение p указывает, что модель значительно отличается от константы.
Кроме того, можно создать обобщенную линейную регрессионую модель данных Пуассона при помощи fitglm
функция. Отображение модели включает статистику (Chi^2-statistic vs. constant model
) и p-значение.
mdl = fitglm(X,y,'y ~ x1 + x2','Distribution','poisson')
mdl = Generalized linear regression model: log(y) ~ 1 + x1 + x2 Distribution = Poisson Estimated Coefficients: Estimate SE tStat pValue ________ _________ ______ ______ (Intercept) 1.0405 0.022122 47.034 0 x1 0.9968 0.003362 296.49 0 x2 1.987 0.0063433 313.24 0 100 observations, 97 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 2.95e+05, p-value = 0
Можно также использовать devianceTest
функция с объектом подобранной модели.
devianceTest(mdl)
ans=2×4 table
Deviance DFE chi2Stat pValue
__________ ___ __________ ______
log(y) ~ 1 2.9544e+05 99
log(y) ~ 1 + x1 + x2 107.4 97 2.9533e+05 0
X
- Переменные предиктораПеременные предиктора, заданные как n -by p числовая матрица, где n - количество наблюдений, а p - количество переменных предиктора. Каждый столбец X
представляет одну переменную, и каждая строка представляет одно наблюдение.
По умолчанию, glmfit
включает постоянный члена в модели. Не добавляйте столбец 1с непосредственно в X
. Вы можете изменить поведение по умолчанию для glmfit
путем определения 'Constant'
аргумент имя-значение.
Типы данных: single
| double
y
- Переменная откликаПеременная отклика, заданная в виде вектора или матрицы.
Если distr
не 'binomial'
, затем y
должен быть вектором n -by-1, где n количество наблюдений. Каждая запись в y
- ответ для соответствующей строки X
. Тип данных должен быть одинарным или двойным.
Если distr
является 'binomial'
, затем y
- вектор n -by-1, указывающий на успех или отказ при каждом наблюдении, или матрица n-by-2, чей первый столбец указывает количество успехов для каждого наблюдения, а второй столбец указывает количество испытаний для каждого наблюдения.
Типы данных: single
| double
| logical
| categorical
distr
- Распределение переменной отклика'normal'
(по умолчанию) | 'binomial'
| 'poisson'
| 'gamma'
| 'inverse gaussian'
Распределение переменной отклика, заданное как одно из значений в этой таблице.
Значение | Описание |
---|---|
'normal' | Нормальное распределение (по умолчанию) |
'binomial' | Биномиальное распределение |
'poisson' | Распределение Пуассона |
'gamma' | Гамма- распределение |
'inverse gaussian' | Обратное Гауссово распределение |
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
b = glmfit(X,y,'normal','link','probit')
задает, что распределение отклика нормальное, и инструктирует glmfit
чтобы использовать функцию probit link.'B0'
- Начальные значения для оценок коэффициентовНачальные значения для оценок коэффициентов, заданные как числовой вектор. Значениями по умолчанию являются начальные подобранные значения, выведенные из входных данных.
Типы данных: single
| double
'Constant'
- Индикатор постоянного срока'on'
(по умолчанию) | 'off'
Индикатор постоянного термина (точка пересечения) в подгонке, заданный как 'on'
для включения постоянного термина или 'off'
чтобы удалить его из модели.
'on'
(по умолчанию) - glmfit
включает в себя постоянный члена в модели и возвращает (p + 1) -на-1 вектор оценок коэффициентов b
, где p количество предикторов в X
. Коэффициент постоянного члена является первым элементом b
.
'off'
— glmfit
опускает постоянный член и возвращает вектор p -на-1 оценок коэффициентов b
.
Пример: 'Constant','off'
'EstDisp'
- Индикатор для вычисления параметра дисперсии'off'
для 'binomial'
и 'poisson'
распределения (по умолчанию) | 'on'
Индикатор для вычисления параметра дисперсии для 'binomial'
и 'poisson'
распределения, заданные как 'on'
или 'off'
.
Значение | Описание |
---|---|
'on' | Оцените параметр дисперсии при вычислении стандартных ошибок. Оцененное значение параметров дисперсии является суммой квадратов невязок Пирсона, разделенных на степени свободы от ошибки (DFE). |
'off' | Используйте теоретическое значение 1 при вычислении стандартных ошибок (по умолчанию). |
Функция аппроксимации всегда оценивает дисперсию для других распределений.
Пример: 'EstDisp','on'
'Link'
- Функция LinkФункция Link для использования вместо канонической функции link, заданная в качестве одной из встроенных функций link в следующей таблице или пользовательской функции link.
Имя функции Link | Функция ссылки | Средняя (обратная) функция |
---|---|---|
'identity' (по умолчанию для 'normal' распределение) | f (<reservedrangesplaceholder1>) = μ | μ = Xb |
'log' (по умолчанию для 'poisson' распределение) | f (μ) = журнал (μ) | μ = exp (Xb) |
'logit' (по умолчанию для 'binomial' распределение) | f (μ) = журнал (μ/( 1 - μ)) | μ = exp (Xb )/( 1 + exp (Xb)) |
'probit' | f (μ) =–1(μ), где И является совокупной функцией распределения стандартного нормального распределения | μ = И (Xb) |
| f (μ) = журнал (-журнал (μ)) | μ = exp (-exp (Xb)) |
'comploglog' | f (μ) = журнал (-журнал (1 - μ)) | μ = 1 - exp (-exp (Xb)) |
'reciprocal' (по умолчанию для 'gamma' распределение) | f (<reservedrangesplaceholder1>) = 1 / μ | μ = 1 / (<reservedrangesplaceholder0>) |
p (число, по умолчанию для 'inverse gaussian' распределение с p = -2) | f (μ) =p | μ = Xb1/p |
Значение по умолчанию 'Link'
значение является функцией канонической ссылки, которая зависит от распределения переменной отклика, заданной distr
аргумент.
Вы можете задать пользовательскую функцию ссылки с помощью структуры или массива ячеек.
Структура с тремя полями. Каждое поле структуры (для примера, S
) содержит указатель на функцию, который принимает вектор входов и возвращает вектор того же размера:
S.Link
- Функция ссылки, f (μ) = S.Link
(<reservedrangesplaceholder0>)
S.Derivative
- Производная функции ссылки
S.Inverse
- Функция обратной ссылки, μ = S.Inverse
(<reservedrangesplaceholder0>)
Массив ячеек вида {FL FD FI}
который определяет функцию ссылки (FL(mu)
), производная функции ссылки (FD = dFL(mu)/dmu
) и функцию обратной ссылки (FI = FL^(–1)
). Каждая запись содержит указатель на функцию, который принимает вектор входов и возвращает вектор того же размера.
Функция ссылки задает отношение f (μ) = X * b между средней μ отклика и линейной комбинацией предикторов X * b.
Пример: 'Link','probit'
Типы данных: single
| double
| char
| string
| struct
| cell
'Offset'
- Переменная смещенияПеременная смещения в подгонке, заданная как числовой вектор с той же длиной, что и ответ y
.
glmfit
использует Offset
как дополнительный предиктор со значением коэффициента, фиксированным на 1. Другими словами, формула для подбора кривой
f (<reservedrangesplaceholder1>) = Offset + X*b
,
где f - ссылка функция, μ - средняя характеристика, а X * b - линейная комбинация предикторов X. The Offset
предиктор имеет коэффициент 1
.
Например, рассмотрим регрессионую модель Пуассона. Предположим, по теоретическим причинам количество отсчётов должно быть пропорционально предиктору A
. При помощи функции log link и определения log(A)
в качестве смещения можно заставить модель удовлетворить этому теоретическому ограничению.
Типы данных: single
| double
'Options'
- Опции оптимизацииstatset ('glmfit
')
(по умолчанию) | структуруОпции оптимизации, заданные как структура. Этот аргумент определяет параметры управления для итерационного алгоритма, который glmfit
использует.
Создайте 'Options'
значение при помощи функции statset
или путем создания массива структур, содержащего поля и значения, описанные в этой таблице.
Имя поля | Значение | Значение по умолчанию |
---|---|---|
Display | Количество информации, отображаемой алгоритмом
| 'off' |
MaxIter | Максимально допустимое количество итераций, заданное в виде положительного целого числа | 100 |
TolX | Допуск на разрыв для параметров, заданный как положительная скалярная величина | 1e-6 |
Можно также ввести набор состояний ('
в Командном окне, чтобы увидеть имена и значения по умолчанию полей, которые glmfit
')glmfit
принимает в 'Options'
аргумент имя-значение.
Пример: 'Options',statset('Display','final','MaxIter',1000)
задает отображение окончательной информации результатов итерационного алгоритма и изменение максимального количества итераций равного 1000.
Типы данных: struct
'Weights'
- Веса наблюденийones(n,1)
(по умолчанию) | n вектор -by-1 неотрицательных скалярных значенийВеса наблюдений, заданные как n-на-1 вектор неотрицательных скалярных значений, где n - количество наблюдений.
Типы данных: single
| double
b
- Оценки коэффициентовОценки коэффициентов, возвращенные как числовой вектор.
Если 'Constant'
является 'on'
(по умолчанию), затем glmfit
включает в себя постоянный члена в модели и возвращает (p + 1) -на-1 вектор оценок коэффициентов b
, где p количество предикторов в X
. Коэффициент постоянного члена является первым элементом b
.
Если 'Constant'
является 'off'
, затем glmfit
опускает постоянный член и возвращает вектор p -на-1 оценок коэффициентов b
.
dev
- Отклонение подгонкиОтклонение подгонки, возвращаемое в виде числового значения. Отклонение полезно для сравнения двух моделей, когда одна модель является частным случаем другой модели. Различие между отклонением двух моделей имеет хи-квадратное распределение со степенями свободы, равными различиями в количестве предполагаемых параметров между этими двумя моделями.
Для получения дополнительной информации см. «Отклонение».
stats
- Статистика моделиМоделируйте статистику, возвращаемую как структуру со следующими полями:
beta
- Оценки коэффициентов b
dfe
- Степени свободы для ошибки
sfit
- Расчетный параметр дисперсии
s
- Теоретический или расчетный параметр дисперсии
estdisp
- 0, когда 'EstDisp'
является 'off'
и 1, когда 'EstDisp'
является 'on'
covb
- Предполагаемая ковариационная матрица для b
se
- Вектор стандартных ошибок оценок коэффициентов b
coeffcorr
- Матрица корреляции для b
t
- t статистику для b
p
- p-значения для b
resid
- Вектор невязок
residp
- Вектор невязок Пирсона
residd
- Вектор невязок отклонения
resida
- Вектор невязок Anscombe
Если вы оцениваете параметр дисперсии для биномиального распределения или распределения Пуассона, то stats.s
равно stats.sfit
. Кроме того, элементы stats.se
отличаются по фактору stats.s
из их теоретических значений.
Отклонение - обобщение остаточной суммы квадратов. Он измеряет качество подгонки по сравнению с насыщенной моделью.
Отклонение модели M 1 в два раза больше разницы между логарифмической правдоподобностью модели M 1 и насыщенной моделью M s. Насыщенная модель является моделью с максимальным количеством параметров, которые вы можете оценить.
Например, если у вас есть n наблюдения (y i, i = 1, 2,..., n) с потенциально различными значениями для X iTβ, тогда можно задать насыщенную модель с n параметрами. Пусть L (b, y) обозначают максимальное значение функции правдоподобия для модели с b параметрами. Тогда отклонение модели M 1 является
где b 1 и b s содержат предполагаемые параметры для модели M 1 и насыщенной модели, соответственно. Отклонение имеет распределение хи-квадрат с n - p степенями свободы, где n - количество параметров в насыщенной модели и p - количество параметров в модели M 1.
Предположим, что у вас есть две различные обобщенные линейные регрессионые модели M 1 и M 2, и M 1 имеет подмножество членов в M 2. Можно оценить подгонку моделей путем сравнения отклонений D 1 и D 2 двух моделей. Различие отклонений
Асимптотически, разностное D имеет хи-квадратное распределение со степенями свободы v равное разности в количестве параметров, оцененных в M 1 и M 2. Вы можете получить p -value для этого теста с помощью 1 – chi2cdf(D,v)
.
Обычно вы исследуете D с помощью модели M 2 с постоянным термином и без предикторов. Поэтому D имеет распределение хи-квадрат с p - 1 степенями свободы. Если дисперсия оценена, различие, разделенная на предполагаемую дисперсию, имеет F распределение с p - 1 числительными степенями свободы и n - p знаменательными степенями свободы.
glmfit
полезно, когда вам просто нужны выходные аргументы функции или когда вы хотите повторить подбор кривой модели несколько раз в цикле. Если вам нужно исследовать подобранную модель дальше, создайте обобщенный объект линейной регрессионой модели GeneralizedLinearModel
при помощи fitglm
или stepwiseglm
. A GeneralizedLinearModel
объект предоставляет больше функций, чем glmfit
.
Используйте свойства GeneralizedLinearModel
чтобы исследовать подобранную модель. Свойства объекта включают информацию о оценках коэффициентов, сводной статистике, методе аппроксимации и входных данных.
Используйте функции объекта GeneralizedLinearModel
предсказать ответы и изменить, оценить и визуализировать обобщенную линейную регрессионую модель.
Вы можете найти информацию в выходах glmfit
использование свойств и функций объекта GeneralizedLinearModel
.
Выход glmfit | Эквивалентные значения в GeneralizedLinearModel |
---|---|
b | Смотрите Estimate столбец Coefficients свойство. |
dev | Смотрите Deviance свойство. |
stats | Смотрите отображение модели в Командном окне. Вы можете найти статистику в свойствах модели ( Параметр дисперсии в |
[1] Добсон, А. Дж. Введение в обобщенные линейные модели. Нью-Йорк: Chapman & Hall, 1990.
[2] McCullagh, P., and J. A. Nelder. Обобщенные линейные модели. Нью-Йорк: Chapman & Hall, 1990.
[3] Collett, D. Modeling Binary Data. Нью-Йорк: Chapman & Hall, 2002.
Эта функция полностью поддерживает массивы GPU. Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
fitglm
| GeneralizedLinearModel
| glmval
| regress
| regstats
| stepwiseglm
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.