fitglm
建立广义线性回归模型
描述
例子
拟合Logistic回归模型
使用双向交互模型,建立吸烟概率随年龄、体重和性别变化的logistic二项模型。
加载医院
数据集的数组。
负载医院医院;
使用允许年龄、体重和性别变量之间双向交互的公式指定模型。吸烟者是响应变量。
modelspec =“吸烟者~年龄*体重*性别-年龄:体重:性别”;
拟合逻辑二项式模型。
MDL = fitglm(dsa,modelspec,“分布”,“二”)
mdl =广义线性回归模型:logit(吸烟者)~ 1 +性别*年龄+性别*体重+年龄*体重分布=二项估计系数:估计SE tStat pValue ___________ _________ ________ _______(截距)-6.0492 19.749 -0.3063 0.75938性别男性-2.2859 12.424 -0.18399 0.85402年龄0.11691 0.50977 0.22934 0.81861体重0.031109 0.15208 0.20455 0.83792性别男性:年龄0.020734 0.20681 0.10025 0.92014性别男性:体重0.01216 0.053168 0.22871 0.8191年龄:体重-0.00071959 0.0038964 -0.18468 0.85348 100个观测值,93个误差自由度离散度:1 Chi^2统计与常数模型:5.07,p值= 0.535
所有的p值(在pValue
)都很大。这意味着没有一个系数是显著的。大
-value用于模型检验,0.535,表明该模型可能与常数模型在统计上没有差异。
泊松响应的GLM
创建带有20个预测因子的样本数据,并仅使用其中3个预测因子和一个常数进行泊松响应。
rng (“默认”)再现率%X = randn(100,7);mu = exp(X(:,[1 3 6])*[.4;.2;。3] + 1);Y = poissrnd(mu);
用泊松分布拟合广义线性模型。
mdl = fitglm(X,y,“线性”,“分布”,“泊松”)
mdl =广义线性回归模型:log(y) ~ 1 + x1 + x2 + x3 + x4 + x5 + x6 + x7分布=泊松估计系数:估计SE tStat pValue _________ ________ ________ __________(拦截)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.04316 0.06146 0.70225 0.48252 100个观测值,92个误差自由度离散度:1 Chi^2统计与常数模型:119,p值= 1.55e-22
的p
-值2.14e-17, 0.00069,和1.58e-09表示变量的系数x1
,x3
,x6
都有统计学意义。
输入参数
资源描述
- - - - - -输入数据
表格|数据集的数组
输入数据,包括预测器和响应变量,指定为表或数据集数组。预测变量和响应变量可以是数字、逻辑、分类、字符或字符串。只有在以下情况下,响应变量才可以具有数字以外的数据类型“分布”
是“二”
.
默认情况下,
fitglm
将最后一个变量作为响应变量,其他变量作为预测变量。要将另一列设置为响应变量,请使用
ResponseVar
名称-值对参数。要使用列的子集作为预测器,请使用
PredictorVars
名称-值对参数。要定义模型规范,请设置
modelspec
参数使用公式或术语矩阵。公式或术语矩阵指定使用哪些列作为预测变量或响应变量。
表中的变量名不必是有效的MATLAB®标识符,但名称不能包含前导或尾随空格。如果名称无效,则在拟合或调整模型时不能使用公式;例如:
你不能指定
modelspec
使用公式。属性时,不能使用公式指定要添加或删除的项
addTerms
函数或removeTerms
函数,分别。属性时,不能使用公式指定模型的下界和上界
一步
或stepwiseglm
函数的名称-值对参数“低”
而且“上”
,分别。
中的变量名可以验证资源描述
通过使用isvarname
函数。变量名无效,则可以使用matlab.lang.makeValidName
函数。
X
- - - - - -预测变量
矩阵
预测变量,指定为n——- - - - - -p矩阵,n观察的次数和p是预测变量的数量。的每一列X
表示一个变量,每一行表示一个观察结果。
默认情况下,模型中有一个常数项,除非您显式地删除它,所以不要包含1的列X
.
数据类型:单
|双
y
- - - - - -反应变量
向量|矩阵
响应变量,指定为向量或矩阵。
如果
“分布”
不是“二”
,然后y
一定是n-by-1向量,其中n是观测的数量。每一项y
对应的行是否为响应X
.数据类型必须为single或double。如果
“分布”
是“二”
,然后y
可以是n-by-1向量或n-by-2矩阵,计数在列1和BinomialSize
在第二列。
数据类型:单
|双
|逻辑
|分类
modelspec
- - - - - -模型规范
“线性”
(默认)|命名模型的字符向量或字符串标量|t————(p+ 1) terms矩阵|字符向量或字符串标量公式的形式“y ~项”
模型规范,指定为这些值之一。
命名模型的字符向量或字符串标量。
价值 模型类型 “不变”
模型只包含一个常数(截距)项。 “线性”
模型包含每个预测器的截距和线性项。 “互动”
模型包含一个截距,每个预测器的线性项,以及不同预测器对的所有乘积(没有平方项)。s manbetx 845 “purequadratic”
模型包含每个预测器的截距项和线性项和平方项。 “二次”
模型包含每个预测因子的截距项、线性项和平方项,以及不同预测因子对的所有乘积。s manbetx 845 “聚
ijk
'模型是一个所有项都到次的多项式 我
第一个预测因子是程度j
在第二个预测器中,以此类推。通过使用数字0到9来指定每个预测器的最大程度。该模型包含交互项,但每个交互项的程度不超过指定程度的最大值。例如,“poly13”
有一个拦截x1,x2,x22,x23.,x1*x2,x1*x22条款,x1而且x2分别是第一和第二预测因子。一个t————(p+ 1)矩阵,或者a计算矩阵,指定模型中的术语,其中t和的个数是多少p是预测变量的数量,+1表示响应变量。当预测器的数量很大并且您希望以编程方式生成术语时,术语矩阵非常方便。
字符向量或字符串标量公式在表格中
“y ~项”
,在哪里
条款
在威尔金森符号.公式中的变量名必须为资源描述
或指定的变量名Varnames
.此外,变量名必须是有效的MATLAB标识符。该软件利用拟合模型中术语的顺序来确定拟合模型中术语的顺序
资源描述
或X
.因此,模型中的项的顺序可以不同于指定公式中的项的顺序。
例子:“二次”
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“分布”、“正常”,“链接”、“概率单位”,“排除”,[23日59]
指定响应的分布为正态分布,并指示fitglm
使用probit链接函数,并从拟合中排除第23和第59观测值。
BinomialSize
- - - - - -二项分布的试验次数
1(默认)|数字标量|数值向量|特征向量|字符串标量
二项分布的试验次数,即样本量,由逗号分隔的对组成“BinomialSize”
变量名资源描述
,一个数字标量,或与响应长度相同的数字向量。这就是参数n
对于拟合的二项分布。BinomialSize
仅当分布
参数是“二”
.
如果BinomialSize
是一个标量值,这意味着所有的观察都有相同的试验次数。
作为替代方案BinomialSize
,可以将响应指定为两列矩阵,计数在第1列和BinomialSize
在第二列。
数据类型:单
|双
|字符
|字符串
B0
- - - - - -系数估计的初始值
数值向量
系数估计值的初始值,指定为数值向量。默认值是从输入数据中得到的初始拟合值。
数据类型:单
|双
CategoricalVars
- - - - - -分类变量表
字符串数组|字符向量的单元格数组|逻辑或数字索引向量
类别变量列表,指定为逗号分隔的对,由“CategoricalVars”
或包含表或数据集数组中的类别变量名的字符向量的字符串数组或单元格数组资源描述
,或逻辑或数字索引向量,指示哪些列是分类的。
如果数据在表或数据集数组中
资源描述
,那么,默认情况下,fitglm
将字符向量的所有分类值、逻辑值、字符数组、字符串数组和单元格数组视为分类变量。如果数据是矩阵
X
,则为默认值“CategoricalVars”
是一个空矩阵[]
.也就是说,除非将变量指定为分类变量,否则没有变量是分类变量。
例如,您可以使用以下任意一种方法将六个变量中的第二个和第三个变量指定为分类变量:
例子:“CategoricalVars”,[2,3]
例子:'CategoricalVars',logical([0 1 1 0 0 0 0])
数据类型:单
|双
|逻辑
|字符串
|细胞
DispersionFlag
- - - - - -用于计算色散参数的指标
假
为“二”
而且“泊松”
分布(默认)|真正的
计算色散参数的指示器“二”
而且“泊松”
分布,指定为逗号分隔的对,由“DispersionFlag”
下面是其中之一。
真正的 |
在计算标准误差时估计色散参数。估计的离散度参数值是Pearson残差的平方和除以误差自由度(DFE)。 |
假 |
违约。计算标准误差时,使用理论值1。 |
拟合函数总是估计其他分布的离散度。
例子:“DispersionFlag”,真的
分布
- - - - - -响应变量的分布
“正常”
(默认)|“二”
|“泊松”
|“伽马”
|逆高斯分布的
响应变量的分布,指定为由逗号分隔的对组成“分布”
下面是其中之一。
“正常” |
正态分布 |
“二” |
二项分布 |
“泊松” |
泊松分布 |
“伽马” |
伽马分布 |
逆高斯分布的 |
逆高斯分布 |
例子:“分布”、“伽马”
排除
- - - - - -需要排除的观察结果
逻辑或数字索引向量
从拟合中排除的观测值,指定为由逗号分隔的对组成的“排除”
以及一个逻辑或数值索引向量,指示哪些观测值应从拟合中排除。
例如,你可以用下面的例子排除观察结果2和3。
例子:“排除”,[2,3]
例子:'Exclude',logical([0 1 1 0 0 0 0])
数据类型:单
|双
|逻辑
拦截
- - - - - -常数项指标
真正的
(默认)|假
拟合中常数项(截距)的指示器,指定为逗号分隔的对,由“拦截”
,要么真正的
包括:包括或假
从模型中去掉常数项。
使用“拦截”
仅当使用字符向量或字符串标量而不是公式或矩阵指定模型时。
例子:“拦截”,假的
链接
- - - - - -链接功能
正则链函数(默认)|标量值|结构
要用来代替规范链接函数的链接函数,指定为由逗号分隔的对组成“链接”
下面是其中之一。
Link函数名称 | 链接功能 | 均值(逆)函数 |
---|---|---|
“身份” |
f(μ) =μ | μ=Xb |
“日志” |
f(μ) = log(μ) | μ= exp (Xb) |
分对数的 |
f(μ) = log(μ/ (1 -μ)) | μ= exp (Xb/ (1 + exp(Xb)) |
“probit” |
f(μ) = Φ1(μ),其中Φ为标准正态分布的累积分布函数。 | μ=Φ(Xb) |
“comploglog” |
f(μ) = log(- log(1 -μ)) | μ= 1 - exp(- exp(Xb)) |
“互惠” |
f(μ) = 1/μ | μ= 1 / (Xb) |
p (数量) |
f(μ) =μp | μ=Xb1 /p |
|
f(μ) =S.Link (μ) |
μ=S.Inverse (Xb) |
link函数定义了关系f(μ) =X*b在平均响应之间μ以及预测因子的线性组合X*b.
有关规范链接函数的更多信息,请参见正则Link函数.
例子:“链接”、“概率单位”
数据类型:字符
|字符串
|单
|双
|结构体
选项
- - - - - -优化选项
statset ('fitglm
”)
(默认)|结构
fitglm
”)优化选项,指定为结构。这个参数决定了迭代算法的控制参数fitglm
用途。
创建“选项”
通过使用函数来赋值statset
或者创建一个包含本表中描述的字段和值的结构数组。
字段名 | 价值 | 默认值 |
---|---|---|
显示 |
算法显示的信息量
|
“关闭” |
麦克斯特 |
允许的最大迭代数,指定为正整数 |
One hundred. |
TolX |
参数的终止容差,指定为正标量 |
1 e-6 |
你也可以进入statset ('
在命令窗口中查看字段的名称和默认值fitglm
”)fitglm
接受“选项”
名称-值参数。
例子:“选项”,statset(“显示”、“最后”,麦克斯特,1000)
指定显示迭代算法结果的最终信息,并将允许的最大迭代次数更改为1000。
数据类型:结构体
抵消
- - - - - -抵消变量
[](默认)|数值向量|特征向量|字符串标量
匹配中的偏移量变量,指定为逗号分隔的对,由“抵消”
变量名资源描述
或者一个与响应长度相同的数字向量。
fitglm
使用抵消
作为一个系数值固定为1的附加预测器。换句话说,拟合公式是
f(μ)=偏移量+X*b
,
在哪里f是连杆函数,μ平均响应,和X*b预测因子是线性组合吗X.的抵消
预测器有系数1
.
例如,考虑一个泊松回归模型。假设由于理论上的原因,计数的数量与预测器成比例一个
.通过使用日志链接功能和指定日志(一)
作为偏移量,您可以强制模型满足这个理论约束。
数据类型:单
|双
|字符
|字符串
PredictorVars
- - - - - -预测变量
字符串数组|字符向量的单元格数组|逻辑或数字索引向量
拟合中使用的预测变量,指定为逗号分隔的对,由“PredictorVars”
以及表或数据集数组中变量名的字符向量的字符串数组或单元格数组资源描述
,或逻辑或数字索引向量,指示哪些列是预测变量。
字符串值或字符向量应该在资源描述
属性指定的名称“VarNames”
名称-值对参数。
默认为所有变量X
,或所有变量在资源描述
除了ResponseVar
.
例如,您可以使用以下示例之一指定第二个和第三个变量作为预测变量。
例子:“PredictorVars”,[2,3]
例子:'PredictorVars',logical([0 1 1 0 0 0 0])
数据类型:单
|双
|逻辑
|字符串
|细胞
ResponseVar
- - - - - -反应变量
最后一栏资源描述
(默认)|包含变量名的字符向量或字符串标量|逻辑或数字索引向量
要在拟合中使用的响应变量,指定为逗号分隔的对,由“ResponseVar”
以及在表或数据集数组中包含变量名的字符向量或字符串标量资源描述
,或逻辑或数字索引向量,指示哪一列是响应变量。你通常需要使用“ResponseVar”
在拟合表或数据集数组时资源描述
.
例如,您可以指定第四个变量收益率
,作为六个变量中的响应,可以采用以下方法之一。
例子:“ResponseVar”、“收益”
例子:“ResponseVar”,[4]
例子:'ResponseVar',logical([0 0 0 0 1 0 0])
数据类型:单
|双
|逻辑
|字符
|字符串
VarNames
- - - - - -变量名
{x1, x2,…,‘xn’,‘y’}
(默认)|字符串数组|字符向量的单元格数组
变量名,指定为逗号分隔的对,由“VarNames”
和包含列名的字符向量的字符串数组或单元格数组X
首先是响应变量的名称y
最后的
“VarNames”
不适用于表或数据集数组中的变量,因为这些变量已经有名称。
变量名不必是有效的matlabidentifier,但名称不能包含前导或尾随空格。如果名称无效,则在拟合或调整模型时不能使用公式;例如:
属性时,不能使用公式指定要添加或删除的项
addTerms
函数或removeTerms
函数,分别。属性时,不能使用公式指定模型的下界和上界
一步
或stepwiseglm
函数的名称-值对参数“低”
而且“上”
,分别。
在指定VarNames, VarNames
中,您可以验证变量名varNames
通过使用isvarname
函数。变量名无效,则可以使用matlab.lang.makeValidName
函数。
例子:VarNames,{“马力”,“加速”,“Model_Year”,“英里”}
数据类型:字符串
|细胞
权重
- - - - - -观察权重
的(n, 1)
(默认)|n非负标量值的-by-1向量
观察权重,由逗号分隔的对组成“重量”
和一个n非负标量值的-by-1向量,其中n是观测的数量。
数据类型:单
|双
输出参数
mdl
-广义线性回归模型
GeneralizedLinearModel
对象
广义线性回归模型,指定为GeneralizedLinearModel
使用fitglm
或stepwiseglm
.
更多关于
计算矩阵
A项矩阵T
是一个t————(p+ 1)在模型中指定项的矩阵,其中t是项的个数,p是预测变量的数量,+1表示响应变量。的价值T (i, j)
变量的指数是多少j
在术语我
.
例如,假设一个输入包含三个预测变量x1
,x2
,x3
以及响应变量y
按顺序x1
,x2
,x3
,y
.每行T
表示一项:
[0 0 0 0]
-常数项或截距[0 1 0 0]
- - - - - -x2
;同样,X1 ^0 * x2^1 * x3^0
[1 0 10 0]
- - - - - -x1 * x3
[2 0 0 0]
- - - - - -x1 ^ 2
[0 1 2 0]
- - - - - -x2 * (x3 ^ 2)
的0
在每一项的末尾表示响应变量。通常,项矩阵中的零列向量表示响应变量的位置。如果你在一个矩阵和列向量中有预测变量和响应变量,那么你必须包含0
对于每一行的最后一列中的响应变量。
公式
模型规范的公式是该形式的字符向量或字符串标量'
.y
~条款
'
y
响应名称。条款
用威尔金森符号表示模型中的预测项。
要表示预测变量和响应变量,请使用表输入的变量名资源描述
或使用指定的变量名VarNames
.的默认值VarNames
是{x1, x2,…,‘xn’,‘y’}
.
例如:
'y ~ x1 + x2 + x3'
指定带有截距的三变量线性模型。'y ~ x1 + x2 + x3 - 1'
指定一个无截距的三变量线性模型。注意,公式默认包含一个常数(截距)项。要从模型中排除常数项,必须包含1
在公式中。
公式中包含一个常数项,除非你明确地使用1
.
威尔金森符号
威尔金森符号描述模型中出现的项。符号与模型中出现的项有关,而不是那些项的乘数(系数)。
威尔金森记谱法使用这些符号:
+
意味着包含下一个变量。- - - - - -
意味着不包括下一个变量。:
定义一个交互,它是术语的产物。*
定义交互和所有低阶项。^
将预测器提升到幂,就像*
重复,所以^
也包括低阶项。()
组条件。
这个表显示了威尔金森符号的典型例子。
威尔金森符号 | 标准符号术语 |
---|---|
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 |
详情请参见威尔金森符号.
正则Link函数
广义线性模型的默认链接函数是正则链函数.
分布 | 正则链路函数名称 | 链接功能 | 均值(逆)函数 |
---|---|---|---|
“正常” |
“身份” |
f(μ) =μ | μ=Xb |
“二” |
分对数的 |
f(μ) = log(μ/ (1 -μ)) | μ= exp (Xb/ (1 + exp(Xb)) |
“泊松” |
“日志” |
f(μ) = log(μ) | μ= 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
认为南
,”
(空字符向量),""
(空字符串),< >失踪
,<定义>
值资源描述
,X
,Y
丢失的值。fitglm
不使用在拟合中缺少值的观测值。的ObservationInfo
拟合模型的性质表明是否fitglm
在拟合中使用每个观察结果。
选择功能
使用
stepwiseglm
自动选择模型规格。使用一步
,addTerms
,或removeTerms
调整拟合模型
参考文献
[1]科莱特D。二进制数据建模.纽约:查普曼和霍尔,2002年。
[2]多布森a.j.广义线性模型导论.纽约:查普曼和霍尔,1990年。
[3]麦cullagh P.和J. A. Nelder。广义线性模型.纽约:查普曼和霍尔,1990年。
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
此函数支持内存不足数据的高数万博1manbetx组,但有一些限制。
如果输入参数为
fitglm
是高数组,那么所有其他的输入也必须是高数组。类提供的非空变量“重量”
,“排除”
,“抵消”
,“BinomialSize”
名称-值对。默认的迭代次数是5。方法更改迭代次数
“选项”
用于传入选项结构的名称-值对。使用。创建选项结构statset
指定不同的值麦克斯特
.对于高数据,
fitglm
返回一个CompactGeneralizedLinearModel
对象的大部分相同属性GeneralizedLinearModel
对象。主要的区别是紧凑对象对内存需求很敏感。紧凑对象不包括包含数据的属性,也不包括与数据大小相同的数组的属性。紧凑对象不包含这些GeneralizedLinearModel
属性:诊断
安装
抵消
ObservationInfo
ObservationNames
残差
步骤
变量
返回的压缩对象可以直接计算残差
GLM = fitglm(X,Y)
使用RES = Y - predict(GLM,X);S =√(GLM.SSE/GLM.DFE);直方图(RES linspace (3 * S, 3 *年代,51))
有关更多信息,请参见内存不足数据的高数组.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
本功能完全支持GPU阵列。万博1manbetx有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
Matlab명령
다음matlab명령에해당하는링크를클릭했습니다。
명령을실행하려면matlab명령창에입력하십시오。웹브라우저는matlab명령을지원하지않습니다。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。