exponenta event banner

glmfit

Подгонка обобщенной модели линейной регрессии

    Описание

    b = glmfit(X,y,distr) возвращает вектор b оценок коэффициентов для обобщенной модели линейной регрессии откликов в y на предикторах в X, с использованием дистрибутива distr.

    пример

    b = glmfit(X,y,distr,Name,Value) указывает дополнительные параметры, использующие один или несколько аргументов «имя-значение». Например, можно указать 'Constant','off' для исключения постоянного члена из модели.

    пример

    [b,dev] = glmfit(___) также возвращает значение dev, отклонение подгонки.

    [b,dev,stats] = glmfit(___) также возвращает статистику модели stats.

    Примеры

    свернуть все

    Подгоните обобщенную модель линейной регрессии и вычислите прогнозируемые (оцененные) значения для данных предиктора с использованием подогнанной модели.

    Создайте образец набора данных.

    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,'-')

    Figure contains an axes. The axes contains 2 objects of type line.

    Определите пользовательскую функцию связи и используйте ее для соответствия обобщенной модели линейной регрессии.

    Загрузите образцы данных.

    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  
    
    

    Входные аргументы

    свернуть все

    Переменные предиктора, определенные как n-за-p числовая матрица, где n - количество наблюдений, а p - число переменных предиктора. Каждый столбец X представляет одну переменную, а каждая строка представляет одно наблюдение.

    По умолчанию glmfit включает в модель постоянный член. Не добавлять столбец 1 непосредственно в X. Можно изменить поведение по умолчанию glmfit путем указания 'Constant' аргумент «имя-значение».

    Типы данных: single | double

    Переменная ответа, заданная как вектор или матрица.

    • Если distr не является 'binomial', то y должен быть вектором n-by-1, где n - число наблюдений. Каждая запись в y является ответом для соответствующей строки X. Тип данных должен быть одинарным или двойным.

    • Если distr является 'binomial', то y является вектором n-by-1, указывающим успех или сбой при каждом наблюдении, или матрицей n-by-2, первый столбец которой указывает количество успехов для каждого наблюдения, а второй столбец указывает количество испытаний для каждого наблюдения.

    Типы данных: single | double | logical | categorical

    Распределение переменной ответа, указанной как одно из значений в этой таблице.

    СтоимостьОписание
    'normal'Нормальное распределение (по умолчанию)
    'binomial'Биномиальное распределение
    'poisson'Распределение Пуассона
    'gamma'Гамма-распределение
    'inverse gaussian'Обратное гауссово распределение

    Аргументы пары «имя-значение»

    Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

    Пример: b = glmfit(X,y,'normal','link','probit') указывает, что распределение ответа является нормальным, и инструктирует glmfit для использования функции пробит-канала.

    Начальные значения для оценок коэффициентов, заданные как числовой вектор. Значения по умолчанию - это начальные подгоняемые значения, полученные из входных данных.

    Типы данных: single | double

    Индикатор для постоянного члена (перехвата) в посадке, указанный как 'on' для включения постоянного термина или 'off' чтобы удалить его из модели.

    • 'on' (по умолчанию) - glmfit включает в модель постоянный член и возвращает вектор (p + 1) -by-1 оценок коэффициентовb, где p - количество предикторов в X. Коэффициент постоянного члена является первым элементом b.

    • 'off'glmfit опускает постоянный член и возвращает вектор p-by-1 оценок коэффициентов b.

    Пример: 'Constant','off'

    Индикатор для вычисления параметра дисперсии 'binomial' и 'poisson' распределения, указанные как 'on' или 'off'.

    СтоимостьОписание
    'on'Оценка параметра дисперсии при вычислении стандартных ошибок. Оцененное значение параметра дисперсии представляет собой сумму возведенных в квадрат остатков Пирсона, деленную на степени свободы для ошибок (DFE).
    'off'Используйте теоретическое значение 1 при вычислении стандартных ошибок (по умолчанию).

    Функция аппроксимации всегда оценивает дисперсию для других распределений.

    Пример: 'EstDisp','on'

    Функция связи, используемая вместо канонической функции связи, указанной как одна из встроенных функций связи в следующей таблице или пользовательская функция связи.

    Имя функции связиФункция связиСредняя (обратная) функция
    'identity' (по умолчанию для 'normal' распределение)f (λ) = λλ = Xb
    'log' (по умолчанию для 'poisson' распределение)f (мкм) = log (мкм)λ = exp (Xb)
    'logit' (по умолчанию для 'binomial' распределение)f (μ) = регистрация (μ/(1 - μ))λ = exp (Xb )/( 1 + exp (Xb))
    'probit'f (λ) = Φ-1 (λ), где Start- кумулятивная функция распределения стандартного нормального распределения(Xb)

    'loglog'

    f (λ) = log (-log (λ))λ = exp (-exp (Xb))
    'comploglog'f (λ) = log (-log (1 - λ))λ = 1 - exp (-exp (Xb))
    'reciprocal' (по умолчанию для 'gamma' распределение)f (λ) = 1/λλ = 1/( Xb)
    p (число, по умолчанию для 'inverse gaussian' распределение с p = -2)f (мкр) = мкпλ = Xb1/p

    Дефолт 'Link' значение - каноническая функция связи, которая зависит от распределения переменной ответа, указанной distr аргумент.

    Пользовательскую функцию связи можно задать с помощью структуры или массива ячеек.

    • Структура с тремя полями. Каждое поле структуры (например, S) содержит дескриптор функции, который принимает вектор входных данных и возвращает вектор того же размера:

      • S.Link - Функция линии связи, f (λ) =S.Link(μ)

      • S.Derivative - Производная функции звена

      • S.Inverse - Обратная функция линии связи, λ = S.Inverse(Xb)

    • Массив ячеек формы {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

    Переменная смещения в посадке, заданная как числовой вектор с той же длиной, что и отклик y.

    glmfit использование Offset в качестве дополнительного предиктора со значением коэффициента, зафиксированным в 1. Другими словами, формула для подгонки

    f (λ) = Offset + X*b,

    где f - функция связи, λ - средний отклик, а X * b - линейная комбинация предикторов X. Offset предиктор имеет коэффициент 1.

    Например, рассмотрим регрессионную модель Пуассона. Предположим, что по теоретическим причинам число подсчетов должно быть пропорционально предиктору A. С помощью функции log link и указания log(A) в качестве смещения можно принудительно использовать модель для удовлетворения этого теоретического ограничения.

    Типы данных: single | double

    Параметры оптимизации, заданные как структура. Этот аргумент определяет управляющие параметры итеративного алгоритма, которые glmfit использует.

    Создать 'Options' значение с помощью функции statset или путем создания структурного массива, содержащего поля и значения, описанные в этой таблице.

    Имя поляСтоимостьЗначение по умолчанию
    Display

    Объем информации, отображаемой алгоритмом

    • 'off' - Не отображает информацию

    • 'final' - Отображение окончательных выходных данных

    'off'
    MaxIter

    Максимальное допустимое число итераций, указанное как положительное целое число

    100
    TolX

    Допуск окончания для параметров, заданный как положительный скаляр

    1e-6

    Также можно ввести statset('glmfit') в окне команд для просмотра имен и значений по умолчанию полей, которые glmfit принимает в 'Options' аргумент «имя-значение».

    Пример: 'Options',statset('Display','final','MaxIter',1000) определяет отображение окончательной информации о результатах итеративного алгоритма и изменяет максимальное число итераций на 1000.

    Типы данных: struct

    Веса наблюдений, заданные как вектор n-by-1 неотрицательных скалярных значений, где n - количество наблюдений.

    Типы данных: single | double

    Выходные аргументы

    свернуть все

    Оценки коэффициентов, возвращаемые в виде числового вектора.

    • Если 'Constant' является 'on' (по умолчанию), то glmfit включает в модель постоянный член и возвращает вектор (p + 1) -by-1 оценок коэффициентовb, где p - количество предикторов в X. Коэффициент постоянного члена является первым элементом b.

    • Если 'Constant' является 'off', то glmfit опускает постоянный член и возвращает вектор p-by-1 оценок коэффициентов b.

    Отклонение аппроксимации, возвращаемое в виде числового значения. Отклонение полезно для сравнения двух моделей, когда одна модель является частным случаем другой модели. Разница между отклонениями двух моделей имеет распределение хи-квадрат со степенями свободы, равными разнице в количестве оцениваемых параметров между двумя моделями.

    Дополнительные сведения см. в разделе Отклонение.

    Статистика модели, возвращенная в виде структуры со следующими полями:

    • 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 - Вектор остатков Анскомба

    Если оценить параметр дисперсии для биномиального распределения или распределения Пуассона, то stats.s равно stats.sfit. Кроме того, элементы stats.se отличаются на коэффициент stats.s из их теоретических ценностей.

    Подробнее

    свернуть все

    Отклонение

    Отклонение - это обобщение остаточной суммы квадратов. Он измеряет доброту посадки по сравнению с насыщенной моделью.

    Отклонение M1 модели в два раза больше разницы между логикой модели M1 и насыщенной моделью Ms A насыщенная модель является моделью с максимальным количеством параметров, которое можно оценить.

    Например, если есть n наблюдений (yi, i = 1, 2,..., n) с потенциально различными значениями для XiTβ, то можно определить насыщенную модель с n параметрами. Пусть L (b, y) обозначает максимальное значение функции правдоподобия для модели с параметрами b. Тогда отклонение модели M1

    2 (logL (b1, y) logL (bS, y)),

    где b1 и bs содержат оценочные параметры для модели M1 и насыщенной модели соответственно. Отклонение имеет хи-квадратное распределение с n - p степенями свободы, где n - число параметров в насыщенной модели и p - число параметров в M1 модели.

    Предположим, что у вас есть две различные обобщенные модели линейной регрессии M1 и M2, и M1 имеет подмножество членов в M2. Можно оценить соответствие моделей, сравнив отклонения D1 и D2 двух моделей. Разница отклонений

    D = D2 D1 = 2 (logL (b2, y) logL (bS, y)) + 2 (logL (b1, y) logL (bS, y)) = 2 (logL (b2, y) − logL (b1, y)).

    Асимптотически разность D имеет хи-квадратное распределение со степенями свободы v, равными разнице в количестве параметров, оцениваемых в M1 и M2. Значение p для этого теста можно получить с помощью 1 – chi2cdf(D,v).

    Обычно вы исследуете D с помощью модели, M2 с постоянным термином и без предикторов. Поэтому D имеет распределение хи-квадрат с p - 1 степенями свободы. Если дисперсия оценивается, разница, деленная на расчетную дисперсию, имеет F-распределение с p-1 числительными степенями свободы и n-p знаменательными степенями свободы.

    Совет

    • glmfit удовольствия NaNs в X или y как отсутствующие значения и игнорирует их.

    Альтернативная функциональность

    glmfit полезно, когда просто нужны выходные аргументы функции или когда нужно повторить подгонку модели несколько раз в цикле. При необходимости дальнейшего исследования подогнанной модели создайте обобщенный объект модели линейной регрессии. GeneralizedLinearModel с помощью fitglm или stepwiseglm. A GeneralizedLinearModel объект предоставляет больше возможностей, чем glmfit.

    • Использовать свойства GeneralizedLinearModel для исследования подогнанной модели. Свойства объекта включают в себя информацию об оценках коэффициентов, сводную статистику, метод подгонки и входные данные.

    • Использовать объектные функции GeneralizedLinearModel прогнозировать ответы и изменять, оценивать и визуализировать обобщенную модель линейной регрессии.

    • Информацию можно найти в выходных данных glmfit с использованием свойств и функций объекта GeneralizedLinearModel.

      Вывод glmfitЭквивалентные значения в GeneralizedLinearModel
      bСм. раздел Estimate в столбце Coefficients собственность.
      devСм. раздел Deviance собственность.
      stats

      См. отображение модели в окне команд. Статистику можно найти в свойствах модели (CoefficientCovariance, Coefficients, Dispersion, DispersionEstimated, и Residuals).

      Параметр дисперсии в stats.s из glmfit является масштабным коэффициентом для стандартных ошибок коэффициентов, тогда как параметр дисперсии в Dispersion свойство обобщенной линейной модели является масштабным коэффициентом для дисперсии отклика. Поэтому stats.s - квадратный корень Dispersion значение.

    Ссылки

    [1] Добсон, А. Дж. Введение в обобщенные линейные модели. Нью-Йорк: Chapman & Hall, 1990.

    [2] Маккалла, П. и Дж. А. Нелдер. Обобщенные линейные модели. Нью-Йорк: Chapman & Hall, 1990.

    [3] Коллетт, D. Моделирование двоичных данных. Нью-Йорк: Chapman & Hall, 2002.

    Расширенные возможности

    Представлен до R2006a