Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

glmval

Los valores del modelo lineal generalizado

Sintaxis

yhat = glmval(b,X,link)
[yhat,dylo,dyhi] = glmval(b,X,link,stats)
[...] = glmval(...,param1,val1,param2,val2,...)

Descripción

yhat = glmval(b,X,link) calcula los valores previstos para el modelo lineal generalizado con la función de vínculo y los predictores.linkX Las variables predictoras distintas deben aparecer en diferentes columnas de. es un vector de estimaciones de coeficiente que devuelve la función. puede ser cualquiera de los vectores de caracteres, escalares de cadena o funciones de vínculo definidas por el personalizado que se usan como valores para el argumento de par nombre-valor en la función.Xbglmfitlink'link'glmfit

Nota

De forma predeterminada, agrega una primera columna de 1s a, correspondiente a un término constante en el modelo.glmvalX No introduzca una columna de 1s directamente en.X Puede cambiar el comportamiento predeterminado del uso del parámetro.glmval'constant'

[yhat,dylo,dyhi] = glmval(b,X,link,stats) también calcula un 95% de límites de confianza para los valores previstos. Cuando se especifica la salida de la estructura de la función y también se devuelven. y definir un límite de confianza más bajo de, y un límite de confianza superior de.statsglmfitdylodyhidylodyhiyhat-dyloyhat+dyhi Los límites de confianza son no simultáneos y se aplican a la curva ajustada, no a una nueva observación.

[...] = glmval(...,param1,val1,param2,val2,...) especifica pares de nombre/valor de parámetro opcionales para controlar los valores previstos. Los parámetros aceptables se enumeran en esta tabla:

ParámetroValor

— el nivel de confianza para los límites de confianza'confidence'

Un escalar entre 0 y 1

— el parámetro de tamaño (N) para un modelo binomial'size'

Un escalar o un vector con un valor para cada fila de X

— se utiliza como una variable predictora adicional, pero con un valor de coeficiente fijado en 1,0'offset'

Un vector

'constant'
  • : Incluye un término constante en el modelo.'on' El coeficiente del término constante es el primer elemento de.b

  • — Omita el término constante'off'

— Calcular intervalos de confianza simultáneos (), o calcular intervalos de confianza no simultáneos (predeterminado)'simultaneous'truefalseOtruefalse

Ejemplos

contraer todo

Introduzca los datos de ejemplo.

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]';

Cada valor es el número de éxitos en el número correspondiente de ensayos en, y contiene los valores de la variable predictora.ynx

Ajuste un modelo de regresión probit para activado.yx

b = glmfit(x,[y n],'binomial','link','probit');

Calcule el número estimado de éxitos. Trace el porcentaje observado y el porcentaje estimado de éxito frente a los valores.x

yfit = glmval(b,x,'probit','size',n); plot(x, y./n,'o',x,yfit./n,'-','LineWidth',2)

Introduzca los datos de ejemplo.

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]';

Cada valor es el número de éxitos en el número correspondiente de ensayos y contiene los valores de la variable predictora.ynx

Definir tres identificadores de función, creados utilizando, que definen el enlace, la derivada del enlace, y el enlace inverso para una función de enlace Probit,.@ Almacene los identificadores en una matriz de celdas.

link = @(mu) norminv(mu); derlink = @(mu) 1 ./ normpdf(norminv(mu)); invlink = @(resp) normcdf(resp); F = {link, derlink, invlink};

Ajuste un modelo lineal generalizado para activado utilizando la función de enlace que definió.yx

b = glmfit(x,[y n],'binomial','link',F);

Calcule el número estimado de éxitos. Trace el porcentaje de éxito observado y estimado en comparación con los valores.x

yfit = glmval(b,x,F,'size',n); plot(x, y./n,'o',x,yfit./n,'-','LineWidth',2)

Entrenar un modelo lineal generalizado y, a continuación, generar código a partir de una función que clasifique las nuevas observaciones basadas en el modelo. Este ejemplo se basa en el ejemplo.Utilice la función de enlace definido por el personalizado

Introduzca los datos de ejemplo.

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]'; 

Supongamos que el pdf inverso normal es una función de enlace apropiada para el problema.

Defina una función denominada que acepte valores demyInvNorm.m y devuelve los valores correspondientes de la inversa del CDF normal estándar.

 function in = myInvNorm(mu) %#codegen %myInvNorm Inverse of standard normal cdf for code generation %   myInvNorm is a GLM link function that accepts a numeric vector mu, and %   returns in, which is a numeric vector of corresponding values of the %   inverse of the standard normal cdf. %    in = norminv(mu); end   

Defina otra función denominada que acepte valores demyDInvNorm.m y devuelve los valores correspondientes de la derivada de la función de enlace.

 function din = myDInvNorm(mu) %#codegen %myDInvNorm Derivative of inverse of standard normal cdf for code %generation %   myDInvNorm corresponds to the derivative of the GLM link function %   myInvNorm. myDInvNorm accepts a numeric vector mu, and returns din, %   which is a numeric vector of corresponding derivatives of the inverse %   of the standard normal cdf. %    din = 1./normpdf(norminv(mu)); end   

Defina otra función denominada que acepte valores demyInvInvNorm.m y devuelve los valores correspondientes de la inversa de la función de enlace.

 function iin = myInvInvNorm(mu) %#codegen %myInvInvNorm Standard normal cdf for code generation %   myInvInvNorm is the inverse of the GLM link function myInvNorm. %   myInvInvNorm accepts a numeric vector mu, and returns iin, which is a %   numeric vector of corresponding values of the standard normal cdf. %  iin = normcdf(mu); end   

Cree una matriz de estructura que especifique cada una de las funciones de vínculo. En concreto, la matriz de estructura contiene campos denominados y.'Link''Derivative''Inverse' Los valores correspondientes son los nombres de las funciones.

link = struct('Link','myInvNorm','Derivative','myDInvNorm',...     'Inverse','myInvInvNorm') 
 link =     struct with fields:            Link: 'myInvNorm'     Derivative: 'myDInvNorm'        Inverse: 'myInvInvNorm'  

Ajuste un GLM para en el uso de la función de enlace.yxlink Devolver la matriz de la estructura de estadísticas.

[b,~,stats] = glmfit(x,[y n],'binomial','link',link); 

es un vector 2 por 1 de los coeficientes de regresión.b

En la carpeta de trabajo actual, defina una función llamada así:classifyGLM.m

  • Acepta mediciones con columnas correspondientes a las de, coeficientes de regresión cuyas dimensiones corresponden a, una función de enlace, la estructura de las estadísticas GLM y cualquier argumento de par nombre-valor válidoxbglmval

  • Devuelve predicciones y márgenes de intervalo de confianza de error

 function [yhat,lo,hi] = classifyGLM(b,x,link,varargin) %#codegen %CLASSIFYGLM Classify measurements using GLM model  %   CLASSIFYGLM classifies the n observations in the n-by-1 vector x using %   the GLM model with regression coefficients b and link function link, %   and then returns the n-by-1 vector of predicted values in yhat. %   CLASSIFYGLM also returns margins of error for the predictions using %   additional information in the GLM statistics structure stats. narginchk(3,Inf); if(isstruct(varargin{1}))     stats = varargin{1};     [yhat,lo,hi] = glmval(b,x,link,stats,varargin{2:end}); else     yhat = glmval(b,x,link,varargin{:}); end end  

Genere una función MEX desde.classifyGLM.m Dado que C utiliza la tipificación estática, debe determinar las propiedades de todas las variables en los archivos de MATLAB® en tiempo de compilación.codegen Para asegurarse de que la función MEX puede utilizar las mismas entradas, utilice el argumento para especificar lo siguiente en el orden dado:-args

  • Los coeficientes de regresión como constante de tiempo de compilaciónb

  • Las observaciones en la muestrax

  • Función de vínculo como constante de tiempo de compilación

  • Las estadísticas GLM resultantes como constante de tiempo de compilación

  • Nombre como constante de tiempo de compilación'Confidence'

  • Nivel de confianza 0,9

Para designar argumentos como constantes de tiempo de compilación, utilice.coder.Constant

codegen -config:mex classifyGLM -args {coder.Constant(b),x,coder.Constant(link),coder.Constant(stats),coder.Constant('Confidence'),0.9} 

genera el archivo MEX en la carpeta actual.codegenclassifyGLM_mex.mexw64 La extensión de archivo depende de la plataforma del sistema.

Compare las predicciones utilizando y.glmvalclassifyGLM_mex Especifique los argumentos de par nombre-valor en el mismo orden que en el argumento en la llamada a.-argscodegen

[yhat1,melo1,mehi1] = glmval(b,x,link,stats,'Confidence',0.9); [yhat2,melo2,mehi2] = classifyGLM_mex(b,x,link,stats,'Confidence',0.9);  comp1 = (yhat1 - yhat2)'*(yhat1 - yhat2); agree1 = comp1 < eps comp2 = (melo1 - melo2)'*(melo1 - melo2); agree2 = comp2 < eps comp3 = (mehi1 - mehi2)'*(mehi1 - mehi2); agree3 = comp3 < eps 
 agree1 =    logical     1   agree2 =    logical     1   agree3 =    logical     1  

La función MEX generada produce las mismas predicciones que.Predecir

Referencias

[1] Dobson, A. J. An Introduction to Generalized Linear Models. New York: Chapman & Hall, 1990.

[2] McCullagh, P., and J. A. Nelder. Generalized Linear Models. New York: Chapman & Hall, 1990.

[3] Collett, D. Modeling Binary Data. New York: Chapman & Hall, 2002.

Capacidades ampliadas

Introducido antes de R2006a