random
Simular respuestas con ruido aleatorio para un modelo de regresión lineal generalizada
Descripción
especifica más opciones con uno o varios argumentos de par nombre-valor. Por ejemplo, puede especificar el número de pruebas para la distribución binomial o el valor de compensación utilizado para el ajuste.ysim
= random(mdl
,Xnew
,Name,Value
)
Ejemplos
Simular datos de respuesta con ruido aleatorio
Cree un modelo de regresión lineal generalizada y simule su respuesta con ruido aleatorio para datos nuevos.
Genere datos de muestra utilizando números aleatorios de Poisson con un predictor subyacente X
.
rng('default') % For reproducibility X = rand(20,1); mu = exp(1 + 2*X); y = poissrnd(mu);
Cree un modelo de regresión lineal generalizada de datos de Poisson.
mdl = fitglm(X,y,'y ~ x1','Distribution','poisson');
Cree puntos de datos para la predicción.
Xnew = (0:.05:1)';
Simule respuestas con ruido aleatorio en los puntos de datos.
ysim = random(mdl,Xnew);
Represente los valores simulados y los valores originales.
plot(X,y,'rx',Xnew,ysim,'bo',Xnew,feval(mdl,Xnew),'g-') legend('Data','Simulated Response with Noise','Predicted Response', ... 'Location','best')
Generar código C/C++ que simule las respuestas
Ajuste un modelo de regresión lineal generalizada y guárdelo usando saveLearnerForCoder
. Defina una función de punto de entrada que cargue el modelo utilizando loadLearnerForCoder
y llame a la función predict
del modelo ajustado. A continuación, use codegen
(MATLAB Coder) para generar código C/C++. Tenga en cuenta que generar código C/C++ requiere MATLAB® Coder™.
En este ejemplo se explica brevemente el flujo de trabajo de generación de código para la predicción de modelos de regresión lineal en la línea de comandos. Para obtener más información, consulte Code Generation for Prediction of Machine Learning Model at Command Line. También puede generar código usando la app MATLAB Coder. Para obtener más detalles, consulte Code Generation for Prediction of Machine Learning Model Using MATLAB Coder App.
Entrenar un modelo
Genere datos de muestra del predictor x
y la respuesta y
con las distribuciones siguientes:
.
y .
.
rng('default') % For reproducibility x = 1 + randn(100,1)*0.5; beta = -2; p = exp(1 + x*beta)./(1 + exp(1 + x*beta)); % Inverse logit n = 10; y = binornd(n,p,100,1);
Cree un modelo de regresión lineal generalizada de datos binomiales. Especifique un tamaño de muestra binomial de 10.
mdl = fitglm(x,y,'y ~ x1','Distribution','Binomial','BinomialSize',n);
Guardar un modelo
Guarde el modelo de regresión lineal generalizada ajustado en el archivo GLMMdl.mat
con saveLearnerForCoder
.
saveLearnerForCoder(mdl,'GLMMdl');
Definir una función de punto de entrada
En la carpeta actual, defina una función de punto de entrada llamada myrandomGLM.m
que realice las acciones siguientes:
Aceptar una nueva entrada de predictores y argumentos de par nombre-valor válidos.
Cargar el modelo ajustado de regresión lineal generalizada en
GLMMdl.mat
conloadLearnerForCoder
.Simular respuestas a partir del modelo GLM cargado.
function y = myrandomGLM(x,varargin) %#codegen %MYRANDOMGLM Simulate responses using GLM model % MYRANDOMGLM simulates responses for the n observations in the n-by-1 % vector x using the GLM model stored in the MAT-file GLMMdl.mat, and % then returns the simulations in the n-by-1 vector y. CompactMdl = loadLearnerForCoder('GLMMdl'); narginchk(1,Inf); y = random(CompactMdl,x,varargin{:}); end
Añada la directiva del compilador (o pragma) %#codegen
a la función de punto de entrada después de la firma de la función para indicar que intenta generar código para el algoritmo de MATLAB. Añadir esta directiva indica al analizador de código de MATLAB que le ayude a diagnosticar y arreglar vulneraciones que darían como resultado errores durante la generación de código.
Generar código
Genere código para la función de punto de entrada con codegen
(MATLAB Coder). Dado que C y C++ son lenguajes de tipado estático, debe determinar las propiedades de todas las variables de la función de entrada en tiempo de compilación. Para especificar los tipos de datos y el tamaño de arreglo de entrada exacto, pase una expresión de MATLAB® que represente el conjunto de valores con un tipo de datos y un tamaño de arreglo determinado. Use coder.Constant
(MATLAB Coder) para los nombres de los argumentos de par nombre-valor.
Especifique los datos predictores x
y el parámetro binomial n
.
codegen -config:mex myrandomGLM -args {x,coder.Constant('BinomialSize'),coder.Constant(n)}
Code generation successful.
codegen
genera la función MEX de myrandomGLM_mex
con una extensión dependiente de la plataforma.
Si el número de observaciones no se conoce en el momento de la compilación, también puede especificar la entrada como tamaño variable utilizando coder.typeof
(MATLAB Coder). Para obtener más detalles, consulte Specify Variable-Size Arguments for Code Generation y Specify Properties of Entry-Point Function Inputs (MATLAB Coder).
Verificar código generado
Simule respuestas con la función MEX. Especifique los datos predictores x
y el parámetro binomial n
.
ysim = myrandomGLM_mex(x,'BinomialSize',n);
Represente los valores simulados y los datos en la misma figura.
figure plot(x,y,'bo',x,ysim,'r*') legend('Observed responses','Simulated responses') xlabel('x') ylabel('y')
Las respuestas observadas y simuladas parecen tener una distribución similar.
Argumentos de entrada
mdl
— Modelo de regresión lineal generalizada
objeto GeneralizedLinearModel
| objeto CompactGeneralizedLinearModel
Modelo de regresión lineal generalizada, especificado como un objeto GeneralizedLinearModel
creado utilizando fitglm
o stepwiseglm
, o un objeto CompactGeneralizedLinearModel
creado utilizando compact
.
Xnew
— Nuevos valores predictores de entrada
tabla | arreglo de conjuntos de datos | matriz
Nuevos valores predictores de entrada, especificados como una tabla, un arreglo de conjunto de datos o una matriz. Cada fila de Xnew
corresponde a una observación y cada columna, a una variable.
Si
Xnew
es una tabla o un arreglo de conjuntos de datos, debe contener predictores que tengan los mismos nombres de predictor que en la propiedadPredictorNames
demdl
.Si
Xnew
es una matriz, debe tener el mismo número de variables (columnas) y en el mismo orden que la entrada de predictores utilizada para crearmdl
. Tenga en cuenta queXnew
también debe contener las variables predictoras que no se utilicen como predictores en el modelo ajustado. Además, todas las variables empleadas en la creación demdl
deben ser numéricas. Para tratar predictores numéricos como variables categóricas, identifique los predictores mediante el argumento de par nombre-valor'CategoricalVars'
al crearmdl
.
Tipos de datos: single
| double
| table
Argumentos de par nombre-valor
Especifique pares de argumentos opcionales Name1=Value1,...,NameN=ValueN
, donde Name
es el nombre del argumento y Value
es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.
En versiones anteriores a R2021a, use comas para separar cada nombre y valor y encierre Name
entre comillas.
Ejemplo: ysim = random(Mdl,Xnew,'BinomialSize',50)
devuelve el número de éxitos, alterados por ruido aleatorio, utilizando el número de pruebas especificado por 'BinomialSize'
.
BinomialSize
— Número de pruebas para la distribución binomial
1 (predeterminado) | escalar | vector
Número de pruebas de la distribución binomial, especificado como el par separado por comas que consta de 'BinomialSize'
y un escalar o vector de la misma longitud que la respuesta. random
expande la entrada escalar a un arreglo constante del mismo tamaño que la respuesta. La entrada escalar significa que todas las observaciones tienen el mismo número de pruebas.
El significado de los valores de salida de ysim
depende del valor de 'BinomialSize'
.
Si
'BinomialSize'
es 1 (el valor predeterminado), cada valor de salidaysim
es la probabilidad de éxito.Si
'BinomialSize'
no es 1 (el valor predeterminado), cada valor de salidaysim
es el número predicho de éxitos de las pruebas.
Tipos de datos: single
| double
Offset
— Valor de compensación
zeros(size(Xnew,1))
(predeterminado) | escalar | vector
Valor de compensación de cada fila de Xnew
, especificado como el par separado por comas que consta de 'Offset'
y un escalar o vector con la misma longitud que la respuesta. random
expande la entrada escalar a un arreglo constante del mismo tamaño que la respuesta.
Tenga en cuenta que el valor predeterminado de este argumento es un vector de ceros, incluso si especifica el par de argumentos nombre-valor 'Offset'
al ajustar un modelo. Si especifica 'Offset'
para el ajuste, el software trata el valor de compensación como un predictor adicional con un valor de coeficiente fijo en 1. En otras palabras, la fórmula de ajuste es:
f(μ) = Offset + X*b
,
, donde f es la función de enlace, μ es la respuesta media y X*b es la combinación lineal de predictores X. El predictor Offset
tiene el coeficiente 1
.
Tipos de datos: single
| double
Argumentos de salida
ysim
— Valores de respuesta simulados
vector numérico
Valores de respuesta simulados, devueltos como un vector numérico. Los valores simulados son los valores de respuesta predichos en Xnew
alterados por ruido aleatorio con la distribución dada por el modelo ajustado. Los valores de ysim
son independientes, condicionados por los predictores. Para ajustes binomiales y de Poisson, random
genera ysim
con la distribución especificada y sin ajuste para ninguna dispersión estimada.
Si
'BinomialSize'
es 1 (el valor predeterminado), cada valor de salidaysim
es la probabilidad de éxito.Si
'BinomialSize'
no es 1 (el valor predeterminado), cada valor de salidaysim
es el número predicho de éxitos de las pruebas.
Funcionalidad alternativa
Para realizar predicciones sin ruido aleatorio, utilice predict
o feval
.
predict
acepta un único argumento de entrada que contiene todas las variables predictoras y proporciona intervalos de confianza en sus predicciones.feval
acepta múltiples argumentos de entrada con un argumento de entrada para cada variable predictora, lo cual es más sencillo de utilizar con un modelo creado a partir de una tabla o un arreglo de conjunto de datos. La funciónfeval
no admite los argumentos de par nombre-valor'Offset'
ni'BinomialSize'
. La función utiliza 0 como valor de compensación y los valores de salida son probabilidades predichas.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Notas y limitaciones de uso:
Use
saveLearnerForCoder
,loadLearnerForCoder
ycodegen
(MATLAB Coder) para generar código para la funciónrandom
. Guarde un modelo entrenado consaveLearnerForCoder
. Defina una función de punto de entrada que cargue el modelo guardado utilizandoloadLearnerForCoder
y llame a la funciónrandom
. Después, usecodegen
para generar código para la función de punto de entrada.random
puede devolver una secuencia de números diferente de la de MATLAB® si alguna de las siguientes opciones es verdadera:La salida no es un escalar.
Un parámetro de entrada no es válido para la distribución.
Esta tabla contienes notas sobre los argumentos de
random
. Los argumentos no incluidos en esta tabla son totalmente compatibles.Argumento Notas y limitaciones mdl
Para ver las notas y limitaciones del objeto de modelo, consulte Code Generation del objeto
CompactGeneralizedLinearModel
.Xnew
Xnew
debe ser una matriz de precisión simple o doble, o una tabla que contenga variables numéricas, variables categóricas o ambas.El número de filas, u observaciones, de
Xnew
puede ser de tamaño variable, pero el número de columnas deXnew
debe ser fijo.Si desea especificar
Xnew
como una tabla, el modelo se debe entrenar utilizando una tabla y debe asegurarse de que la función de punto de entrada para la predicción:Acepta datos como arreglos.
Crea una tabla a partir de los argumentos de entrada de datos y especifica los nombres de las variables en la tabla.
Pasa la tabla a
predict
.
Para ver un ejemplo del flujo de trabajo de esta tabla, consulte Generate Code to Classify Data in Table. Para obtener más información sobre el uso de tablas en la generación de código, consulte Code Generation for Tables (MATLAB Coder) y Table Limitations for Code Generation (MATLAB Coder).
Argumentos de par nombre-valor Los nombres en los argumentos nombre-valor deben ser constantes en tiempo de compilación. Por ejemplo, para utilizar el argumento de par nombre-valor
'BinomialSize'
en el código generado, incluya{coder.Constant('BinomialSize'),0}
en el valor-args
decodegen
(MATLAB Coder).
Para obtener más información, consulte Introduction to Code Generation.
Arreglos GPU
Acelere código mediante la ejecución en una unidad de procesamiento gráfico (GPU) mediante Parallel Computing Toolbox™.
Esta función es totalmente compatible con los arreglos de GPU. Para obtener más información, consulte Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Historial de versiones
Introducido en R2012a
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)