建立广义线性回归模型
使用双向交互模型,建立吸烟概率作为年龄、体重和性别函数的逻辑二项式模型。
加载医院
数据集数组。
负载医院dsa =医院;
使用允许年龄、体重和性别变量之间双向交互的公式指定模型。吸烟者是反应变量。
modelspec ='吸烟者~年龄*体重*性别-年龄:体重:性别';
符合逻辑二项模型。
mdl = fitglm(dsa,modelspec,'分配',“二”)
mdl =广义线性回归模型:logit(吸烟者)~ 1 +性别*年龄+性别*体重+年龄*体重分布=二项式估计系数:Estimate SE tStat pValue ___________ _________ ________ _______ (Intercept) -6.0492 19.749 -0.3063 0.5938 Sex_Male -2.2859 12.424 -0.18399 0.85402 Age 0.11691 0.50977 0.22934 0.81861 Weight 0.031109 0.15208 0.20455 0.83792 Sex_Male:Age 0.020734 0.20681 0.10025 0.92014 Sex_Male:Weight 0.01216 0.053168 0.22871 0.8191 Age:Weight -0.00071959 0.0038964-0.18468 0.85348 100 observations, 93 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 5.07, p-value = 0.535
所有的p值(下pValue
)大。这意味着没有一个系数是重要的。大
-值用于模型的检验,0.535,表明该模型在统计上可能与常数模型没有差异。
用20个预测器创建示例数据,使用只有三个预测器,以及泊松响应,以及常数。
rng ('默认')%的再现性X = randn (100 7);mu = exp(X(:,[1 3 6])*[.4;.2;]3) + 1);y = poissrnd(μ);
利用泊松分布拟合一个广义线性模型。
mdl = fitglm (X, y,'线性','分配',“泊松”)
mdl =广义线性回归模型:log(y) ~ 1 + x1 + x2 + x3 + x4 + x5 + x6 + x7估算SE tStat pValue _________ ________ ________ __________ (Intercept) 0.88723 0.070969 12.502 7.3149e-36 x1 0.44413 0.052337 8.4858 2.1416e-17 x2 0.0083388 0.056527 0.14752 0.88272 x3 0.21518 0.063416 3.3932 0.00069087 x4 -0.058386 0.065503 -0.89135 0.37274 x5 -0.060824 0.073441 -0.8282 0.40756 x6 0.34267 0.056778 6.0352 1.5878e-09 x7 0.043160。06146 0.70225 0.48252 100 observations, 92 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 119, p-value = 1.55e-22
的p
-值2.14e-17、0.00069、1.58e-09表示变量的系数X1
,X3
, 和X6
统计学意义。
TBL
- - - - - -输入数据输入数据包括预测和响应的变量,指定为表或数据集阵列。预测变量和响应变量可以是数字的,逻辑的,分类,字符或字符串。响应变量可以具有比数字仅当其他数据类型'分配'
是“二”
.
默认情况下,fitglm
将最后一个变量作为响应变量和其他变量作为预测变量。
要将不同的列设置为响应变量,请使用响应官员
名称-值对的论点。
要使用列的子集作为预测器,请使用预测orvars
名称-值对的论点。
要定义模型规范,请设置Modelspec.
使用公式或术语矩阵的参数。公式或术语矩阵指定使用哪些列作为预测器或响应变量。
表中的变量名不一定是有效的MATLAB®标识符。但是,如果名称无效,则在适合或调整模型时不能使用公式;例如:
你不能指定Modelspec.
使用公式。
属性时,不能使用公式指定要添加或删除的术语addTerms
函数或removeterms.
函数,分别。
您可以验证变量名TBL
通过使用isvarname
函数。如果变量名无效,则可以使用matlab.lang.makeValidName
函数。
X
- - - - - -预测变量预测变量,指定为n——- - - - - -p矩阵,n观察的次数是多少p为预测变量的数量。每一列的X
表示一个变量,每一行表示一个观察。
默认情况下,模型中存在一个常量术语,除非您显式删除它,因此不包含1S的列X
.
数据类型:单身的
|双
y
- - - - - -反应变量响应变量,指定为向量或矩阵。
如果'分配'
不是“二”
,然后y
必须是一个n1的向量,n为观察次数。中的每个条目y
对应一行的响应是X
.数据类型必须为单或双。
如果'分配'
是“二”
,然后y
可以是一个n1的向量或n- × 2矩阵,列1和BinomialSize
在第2列。
数据类型:单身的
|双
|逻辑
|明确的
Modelspec.
- - - - - -模型规格'线性'
(默认)|字符矢量或字符串标量命名模型|t————(p+ 1)术语矩阵|字符向量或字符串标量公式的形式'Y〜术语'
模型规范,指定为其中一个值。
命名模型的字符向量或字符串标量。
价值 | 模型类型 |
---|---|
“不变” |
模型只包含一个常数(截距)项。 |
'线性' |
模型包含每个预测器的截距和线性项。 |
“互动” |
模型包含每个预测器的截距,线性项,以及对不同预测器的所有乘积(没有平方项)。下载188bet金宝搏 |
“purequadratic” |
模型包含每个预测器的截距项和线性和平方术语。 |
“二次” |
模型包含每个预测器的截距项、线性项和平方项,以及对不同预测器的所有乘积。下载188bet金宝搏 |
'Poly. |
模型是一种多项式,所有条款均可获得程度我 第一个预测因子是程度j 在第二个预测因子,等等。通过使用数字来指定每个预测器的最大程度。但是模型包含交互术语,但每个交互项的程度不超过指定度的最大值。例如,“poly13” 有一个截距x1,x2,x22,x23.,x1*x2, 和x1*x22条款,x1和x2分别是第一和第二预测因素。 |
一个t————(p+ 1)矩阵,或者术语矩阵,在模型中指定项,其中t是项数和p为预测变量的个数,+1表示响应变量。当预测器的数量很大且您希望以编程方式生成术语时,术语矩阵是很方便的。
字符矢量或字符串标量公式在表单中
'Y〜术语'
,
在哪里术语
在Wilkinson表示法.公式中的变量名必须是TBL
或通过指定的变量名Varnames
.此外,变量名称必须是有效的MATLAB标识符。
该软件通过使用中术语的顺序来确定拟合模型中术语的顺序TBL
或者X
.因此,模型中的术语顺序可以与指定公式中的术语顺序不同。
例子:“二次”
指定可选的逗号分隔的对名称,值
论点。姓名
参数名和价值
是相应的价值。姓名
必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen
.
“分布”、“正常”,“链接”、“概率单位”,“排除”,[23日59]
指定响应的分布是正常的,并指示fitglm
使用probit链接函数并从拟合中排除第23和59个观测值。
BinomialSize
- - - - - -二项分布的试验次数二项分布的试验次数,即样本容量,指定为逗号分隔对组成“BinomialSize”
变量名TBL
,数字标量或与响应相同长度的数字矢量。这是参数n
对于拟合的二项分布。BinomialSize
仅适用于分布
参数是“二”
.
如果BinomialSize
是标量值,这意味着所有观察结果都有相同数量的试验。
作为替代BinomialSize
,您可以将响应指定为一个两列矩阵,在第1列和中包含计数BinomialSize
在第2列。
数据类型:单身的
|双
|字符
|字符串
B0
- - - - - -对于系数估计的初始值系数估计的初始值,指定为数字向量。默认值是源自输入数据的初始拟合值。
数据类型:单身的
|双
CategoricalVars
- - - - - -分类变量列表分类变量列表,指定为逗号分隔的配对组成“CategoricalVars”
以及在表或数据集数组中包含分类变量名的字符向量的字符串数组或单元格数组TBL
,或指示哪些列是分类列的逻辑或数字索引向量。
如果数据在表或数据集数组中TBL
,那么默认情况下,fitglm
将所有分类值、逻辑值、字符数组、字符串数组和字符向量的单元格数组视为分类变量。
如果数据在矩阵中X
,则为的默认值“CategoricalVars”
是一个空的矩阵[]
.也就是说,除非你将其指定为绝对没有变量是分类。
例如,您可以使用以下任意一种方法指定六个变量中的第二个和第三个变量为分类变量:
例子:“CategoricalVars”,[2,3]
例子:'CategoricalVars',逻辑([0 1 1 0 0])
数据类型:单身的
|双
|逻辑
|字符串
|细胞
DispersionFlag
- - - - - -计算色散参数的指示器假
为“二”
和“泊松”
分布(默认)|真的
用于计算色散参数的指标“二”
和“泊松”
分布,指定为逗号分隔对组成“DispersionFlag”
下面是其中之一。
真的 |
在计算标准误差时估计一个离散参数。估计的色散参数值是皮尔逊残差的平方和除以误差自由度(DFE)。 |
假 |
违约。计算标准误差时,使用理论值1。 |
拟合功能始终估计用于其他分布的色散。
例子:“DispersionFlag”,真的
分布
- - - - - -响应变量的分布“正常”
(默认)|“二”
|“泊松”
|“伽马”
|'逆高斯'
响应变量的分布,指定为逗号分隔对组成'分配'
下面是其中之一。
“正常” |
正态分布 |
“二” |
二项分布 |
“泊松” |
泊松分布 |
“伽马” |
Gamma分布 |
'逆高斯' |
逆高斯分布 |
例子:'分配','伽玛'
排除
- - - - - -观察排除要从匹配中排除的观察值,指定为由逗号分隔的对组成“排除”
以及逻辑或数字索引向量,指示要从拟合中排除哪些观测值。
例如,您可以使用下面的任何一个示例排除6个观察值中的2个和3个。
例子:“排除”,[2,3]
例子:'排除',逻辑([0 1 1 0 0])
数据类型:单身的
|双
|逻辑
截距
- - - - - -常数项指示器真的
(默认)|假
适应度中的常数项(截距)指示符,指定为逗号分隔的对组成“拦截”
,要么真的
包括或假
除去从模型常数项。
使用“拦截”
仅当使用字符向量或字符串标量指定模型时,而不是使用公式或矩阵。
例子:“拦截”,假
链接
- - - - - -链接功能用于代替规范链接功能的链接功能,指定为逗号分隔对组成“链接”
下面是其中之一。
链接函数名 | 链接功能 | 平均(逆)功能 |
---|---|---|
'身份' |
f(μ)=μ | μ=Xb |
“日志” |
f(μ) =日志(μ) | μ= exp(Xb) |
分对数的 |
f(μ) =日志(μ/ (1 -μ)) | μ= exp(Xb) / (1 + exp(Xb)) |
'概率' |
f(μ)=φ1(μ),其中Φ为标准正态分布的累积分布函数。 | μ=Φ(Xb) |
'comploglog' |
f(μ) = log(- log(1 -μ)) | μ= 1 - exp( -Xb)) |
“互惠” |
f(μ)= 1 /μ | μ= 1 / (Xb) |
p (数量) |
f(μ)=μp | μ=Xb1 /p |
|
f(μ)=S.Link (μ) |
μ=S.Inverse (Xb) |
link函数定义了这种关系f(μ)=X*b在平均响应之间μ以及预测因子的线性组合X*b.
有关规范链接函数的更多信息,请参见规范的链接功能.
例子:'链接','probit'
数据类型:字符
|字符串
|单身的
|双
|结构体
选项
- - - - - -优化选项statset ('fitglm
')
(默认)|结构体优化选项,指定为结构。该参数确定迭代算法的控制参数fitglm
用途。
创建'选项'
使用该功能的值statset
或者创建一个结构数组,该数组包含该表中描述的字段和值。
字段名 | 价值 | 默认值 |
---|---|---|
展示 |
算法显示的信息量
|
'离开' |
MAXITER |
允许的最大迭代次数,指定为正整数 |
100. |
TolX |
参数的终止公差,指定为正标量 |
1E-6 |
你也可以输入statset ('
在命令窗口中查看字段的名称和默认值fitglm
')fitglm
接受的'选项'
名称-值参数。
例子:'选项',statset('显示','final','maxiter',1000)
指定显示迭代算法结果的最终信息,并将允许的最大迭代次数更改为1000。
数据类型:结构体
抵消
- - - - - -抵消变量匹配中的偏移量变量,指定为逗号分隔的对,由“抵消”
变量名TBL
或者一个与响应长度相同的数字向量。
fitglm
使用抵消
作为一个系数值固定为1的附加预测器。换句话说,拟合公式为
f(μ)=抵消+X*b
,
在哪里f是链接功能,μ平均值是多少X*b是预测因子的线性组合吗X.的抵消
预测了系数1
.
例如,考虑一个泊松回归模型。假设计数的数量是已知的理论原因与预测器成正比一个
.通过使用日志链接函数和指定日志(一)
作为补偿,您可以强制模型满足这个理论约束。
数据类型:单身的
|双
|字符
|字符串
预测orvars
- - - - - -预测变量要在适合的情况下使用的预测变量,指定为逗号分隔对组成“PredictorVars”
以及表或数据集数组中变量名的字符向量的字符串数组或单元格数组TBL
,或逻辑或数字索引向量,指示哪些列是预测变量。
该字符串值或特征向量,应在名称中TBL
或者使用您使用的名称“VarNames”
名称-值对的论点。
默认是所有的变量X
,或所有变量TBL
除了响应官员
.
例如,您可以使用以下任意一个示例指定第二个和第三个变量作为预测变量。
例子:“PredictorVars”,[2,3]
例子:'PredictorVars',逻辑([0 1 1 0 0])
数据类型:单身的
|双
|逻辑
|字符串
|细胞
响应官员
- - - - - -反应变量TBL
(默认)|包含变量名的字符向量或字符串标量|逻辑或数字索引矢量响应变量要在适合中使用,指定为逗号分隔对组成“ResponseVar”
以及在表或数据集数组中包含变量名的字符向量或字符串标量TBL
,或逻辑或数字索引向量,指示哪一列是响应变量。你通常需要使用“ResponseVar”
当拟合表或数据集数组时TBL
.
例如,您可以指定第四个变量收益率
,作为对六个变量的响应,以下列方式之一。
例子:'ResponseVar', '产量'
例子:“ResponseVar”,[4]
例子:'ResponseVar',逻辑([0 0 0 1 0 0])
数据类型:单身的
|双
|逻辑
|字符
|字符串
VarNames
- - - - - -变量名称{x1, x2,…,‘xn’,‘y’}
(默认)|字符串数组|字符向量的单元格数组变量的名称,指定为逗号分隔的配对组成“VarNames”
以及字符向量的字符串数组或单元格数组,其中包括的列的名称X
首先是响应变量的名称y
最后的。
“VarNames”
不适用于表或数据集数组中的变量,因为这些变量已经有了名称。
变量名不必是有效的MATLAB标识符。但是,如果名称无效,则在适合或调整模型时不能使用公式;例如:
属性时,不能使用公式指定要添加或删除的术语addTerms
函数或removeterms.
函数,分别。
在指定之前VarNames, VarNames
,您可以验证变量名称varNames
通过使用isvarname
函数。如果变量名无效,则可以使用matlab.lang.makeValidName
函数。
例子:VarNames,{“马力”,“加速”,“Model_Year”,“英里”}
数据类型:字符串
|细胞
权重
- - - - - -观察权重的(n, 1)
(默认)|n非负标量值的-乘1向量观察权值,指定为逗号分隔的对,由“重量”
和一个n非负标量值的-by-1向量,其中n为观察次数。
数据类型:单身的
|双
MDL.
-广义线性回归模型GeneralizedLinearModel
对象广义线性回归模型,指定为GeneralizedLinearModel
对象创建使用fitglm
或者挺身油
.
一个条件矩阵T
是A.t————(p+ 1)指定模型中的项的矩阵,其中t是项的个数,p为预测变量的个数,+1表示响应变量。的价值T (i, j)
是变量的指数吗j
术语我
.
例如,假设一个输入包含三个预测变量X1
,X2
, 和X3
以及响应变量y
的顺序X1
,X2
,X3
, 和y
.每一行的T
代表一个术语:
[0 0 0]
-常数项或截距
[0 1 0 0]
- - - - - -X2
;同样,x1 ^ 0 * x2 ^ 1 * x3 ^ 0
[1 0 1 0]
- - - - - -x1 * x3
[2 0 0]
- - - - - -x1 ^ 2
[0 1 2 0]
- - - - - -x2 * (x3 ^ 2)
的0
在每一项的末尾表示响应变量。通常,项矩阵中的零列向量表示响应变量的位置。如果在矩阵和列向量中有预测器和响应变量,则必须包括0
对于每行的最后一列中的响应变量。
模型规范的公式是这种形式的字符向量或字符串标量'
.y
~术语
'
y
是响应名称。
术语
表示使用Wilkinson表示法的模型中的预测术语。
要表示预测器和响应变量,请使用表输入的变量名TBL
或使用指定的变量名VarNames
.的默认值VarNames
是{x1, x2,…,‘xn’,‘y’}
.
例如:
'y ~ x1 + x2 + x3'
指定一个带有截距的三变量线性模型。
'y〜x1 + x2 + x3 - 1'
指定一个无截距的三变量线性模型。注意,默认情况下,公式包含一个常量(截距)项。要从模型中排除常数项,必须包含1
在公式。
一个公式包含一个常数项,除非你明确地用1
.
威尔金森表示法描述了模型中的术语。这个符号与模型中的项相关,而不是这些项的乘数(系数)。
威尔金森表示法使用这些符号:
+
方法包括下一个变量。
- - - - - -
意味着不包括下一个变量。
:
定义一个交互,它是术语的产物。
*
定义了一个相互作用和所有较低阶项。
^
提高了预测的功率,完全按照*
重复,所以^
也包括低阶项。
()
群体条款。
该表显示威尔金森表示法的典型例子。
Wilkinson表示法 | 标准符号术语 |
---|---|
1 |
常数(拦截) |
x1 ^ k ,在那里k 为正整数 |
X1 ,X12 、……X1k |
x1 + x2 |
X1 ,X2 |
x1 * x2 |
X1 ,X2 ,x1 * x2 |
x1:x2 |
x1 * x2 只要 |
-x2 |
不包括X2 |
x1 * x2 + x3 |
X1 ,X2 ,X3 ,x1 * x2 |
X1 + x2 + x3 + X1:x2 |
X1 ,X2 ,X3 ,x1 * x2 |
x1 * x2 * x3 - x1, x2, x3 |
X1 ,X2 ,X3 ,x1 * x2 ,x1 * x3 ,x2 * x3 |
x1 * (x2 + x3) |
X1 ,X2 ,X3 ,x1 * x2 ,x1 * x3 |
有关详细信息,请参见Wilkinson表示法.
广义线性模型的默认链接函数为规范的链接功能.
分布 | 规范链接功能名称 | 链接功能 | 平均(逆)功能 |
---|---|---|---|
“正常” |
'身份' |
f(μ)=μ | μ=Xb |
“二” |
分对数的 |
f(μ) =日志(μ/ (1 -μ)) | μ= exp(Xb) / (1 + exp(Xb)) |
“泊松” |
“日志” |
f(μ) =日志(μ) | μ= exp(Xb) |
“伽马” |
-1 |
f(μ)= 1 /μ | μ= 1 / (Xb) |
'逆高斯' |
-2 |
f(μ)= 1 /μ2 | μ= (Xb)-1/2 |
广义线性模型MDL.
是一个标准的线性模型吗分布
名称-值对。
对于方法,如plotResiduals
或者devianceTest
的属性GeneralizedLinearModel
对象,参见GeneralizedLinearModel
.
在训练模型之后,您可以生成C/ c++代码来预测对新数据的响应。生成C/ c++代码需要MATLAB编码器™.有关详细信息,请参见代码生成简介.
fitglm
处理分类预测器,如下所示:
一个有绝对预测器的模型l级别(类别)包括l- 1指示器变量。该模型使用第一类作为参考级别,因此它不包括参考级别的指示灯。如果分类预测器的数据类型是明确的
,则可以使用类别
并通过使用reordercats
自定义参考级别。有关创建指示器变量的更多详细信息,请参阅虚拟变量的自动创建.
fitglm
对待一组l- 1指示器变量作为一个单独的变量。如果您想将指示器变量视为不同的预测变量,可以使用dummyvar
.然后在拟合模型时,使用除分类变量参考水平对应的指标变量外的其他指标变量。对于绝对预测器X
,如果指定的所有列dummyvar (X)
并以截距项作为预测因子,使设计矩阵秩亏缺。
连续预测器和分类预测器之间的交互项l水平由的元素之积的l- 1带有连续预测器的指标变量。
两个类别预测因子之间的交互项l和米级别包括(l- 1) * (米- 1)指示器变量包括两个分类预测器级别的所有可能组合。
不能为绝对预测器指定高阶项,因为指示器的平方等于它本身。
fitglm
考虑南
,”
(空字符向量),""
(空字符串),<缺失>
, 和<定义>
价值TBL
,X
, 和Y
丢失值。fitglm
不使用缺少匹配值的观测值。的ObservationInfo
拟合模型的性质表明是否fitglm
把每个观察结果都用在合适的地方。
使用挺身油
自动选择模型规范。使用步
,addTerms
, 或者removeterms.
调整拟合模型。
[1] Collett D。二进制数据建模.纽约:查普曼与霍尔出版社,2002年出版。
[2]多布森,A. J.广义线性模型导论.纽约:查普曼与霍尔出版社,1990。
P. McCullagh和J. A. Nelder。广义线性模型.纽约:查普曼与霍尔出版社,1990。
对于内存不足的数据,这个函数金宝app支持高数组,但有一些限制。
如果有任何输入参数fitglm
是一个高大的阵列,那么所有其他输入也必须是高阵列。这包括提供的非空变量“重量”
,“排除”
,“抵消”
, 和“BinomialSize”
名称 - 值对。
默认的迭代次数是5次。属性可以更改迭代次数'选项'
名称 - 值对,以在一个选项结构通过。使用创建的选项结构statset
指定不同的值MAXITER
.
对于高数据,fitglm
返回一个CompactGeneralizedLinearModel
对象,该对象包含与GeneralizedLinearModel
对象。主要的区别是紧凑对象对内存需求很敏感。compact对象不包含包含数据或包含与数据大小相同的数组的属性。compact对象不包含这些GeneralizedLinearModel
属性:
诊断
拟合
抵消
ObservationInfo
ObservationNames
残差
脚步
变量
您可以直接从返回的Compact对象中计算残差GLM = fitglm (X, Y)
使用
res = y - 预测(glm,x);s = sqrt(glm.sse / glm.dfe);直方图(Res,Linspace(-3 * s,3 * s,51)))
有关更多信息,请参见对于超出的内存数据高大数组.
该功能完全支持GPU阵列。金宝app有关更多信息,请参见在GPU上运行MATLAB函数(并行计算工具箱).
vous avezcliquésur联合国Lien qui对应àcette commande matlab:
Pour exécuter la command, saisissez-la dans la fenêtre de command de MATLAB。Les navigateurs web ne支金宝app持pas Les命令MATLAB。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。