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 -by 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 чтобы использовать функцию probit link.

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

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

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

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

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

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

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

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

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

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

    Функция 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)

    'loglog'

    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

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

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

    f (<reservedrangesplaceholder1>) = Offset + X*b,

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

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

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

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

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

    Имя поляЗначениеЗначение по умолчанию
    Display

    Количество информации, отображаемой алгоритмом

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

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

    'off'
    MaxIter

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

    100
    TolX

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

    1e-6

    Можно также ввести набор состояний ('glmfit') в Командном окне, чтобы увидеть имена и значения по умолчанию полей, которые glmfit принимает в 'Options' аргумент имя-значение.

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

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

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

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

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

    свернуть все

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

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

    • Если 'Constant' является 'off', затем glmfit опускает постоянный член и возвращает вектор p -на-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 - Вектор невязок 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 является

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

    где 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=D2D1=2(logL(b2,y)logL(bS,y))+2(logL(b1,y)logL(bS,y))=2(logL(b2,y)logL(b1,y)).

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

    Обычно вы исследуете D с помощью модели M 2 с постоянным термином и без предикторов. Поэтому 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] McCullagh, P., and J. A. Nelder. Обобщенные линейные модели. Нью-Йорк: Chapman & Hall, 1990.

    [3] Collett, D. Modeling Binary Data. Нью-Йорк: Chapman & Hall, 2002.

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

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