建立广义线性回归模型
使用双向交互模型,建立吸烟概率作为年龄、体重和性别函数的逻辑二项式模型。
加载医院
数据集的数组。
负载医院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个预测器创建样本数据,用其中3个预测器加上一个常数创建泊松响应。
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
统计学意义。
资源描述
- - - - - -输入数据输入数据,包括预测器和响应变量,指定为表或数据集数组。预测变量和响应变量可以是数字、逻辑、分类、字符或字符串。只有在以下情况下,响应变量才可以具有非数字类型的数据类型“分布”
是“二”
.
默认情况下,fitglm
将最后一个变量作为响应变量,其余变量作为预测变量。
要将不同的列设置为响应变量,请使用ResponseVar
名称-值对的论点。
要使用列的子集作为预测器,请使用PredictorVars
名称-值对的论点。
要定义模型规范,请设置modelspec
使用公式或术语矩阵的参数。公式或术语矩阵指定使用哪些列作为预测器或响应变量。
表中的变量名不一定是有效的MATLAB®标识符。但是,如果名称无效,则在适合或调整模型时不能使用公式;例如:
你不能指定modelspec
使用一个公式。
属性时,不能使用公式指定要添加或删除的术语addTerms
函数或removeTerms
函数,分别。
属性时,不能使用公式来指定模型的上下限一步
或stepwiseglm
函数的名称-值对参数“低”
和“上”
,分别。
您可以验证变量名资源描述
通过使用isvarname
函数。如果变量名无效,则可以使用matlab.lang.makeValidName
函数。
X
- - - - - -预测变量预测变量,指定为n——- - - - - -p矩阵,n观察的次数是多少p为预测变量的数量。每一列的X
表示一个变量,每一行表示一个观察。
默认情况下,模型中有一个常数项,除非你明确地删除它,所以不要在其中包含一列1X
.
数据类型:单
|双
y
- - - - - -反应变量响应变量,指定为向量或矩阵。
如果“分布”
不是“二”
,然后y
必须是一个n1的向量,n为观察次数。中的每个条目y
对应一行的响应是X
.数据类型必须为单或双。
如果“分布”
是“二”
,然后y
可以是一个n1的向量或n- × 2矩阵,列1和BinomialSize
在第2列。
数据类型:单
|双
|逻辑
|分类
modelspec
- - - - - -模型规范“线性”
(默认)|命名模型的字符向量或字符串标量|t————(p+ 1)项矩阵|字符向量或字符串标量公式的形式“y ~条款”
模型规范,指定为这些值之一。
命名模型的字符向量或字符串标量。
价值 | 模型类型 |
---|---|
“不变” |
模型只包含一个常数(截距)项。 |
“线性” |
模型包含每个预测器的截距和线性项。 |
“互动” |
模型包含每个预测器的截距,线性项,以及对不同预测器的所有乘积(没有平方项)。下载188bet金宝搏 |
“purequadratic” |
模型包含截距项、线性项和平方项。 |
“二次” |
模型包含每个预测器的截距项、线性项和平方项,以及对不同预测器的所有乘积。下载188bet金宝搏 |
“聚 |
模型是一个多项式,所有项都达到次我 第一个预测因子是程度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,…,的家
.
“分布”、“正常”,“链接”、“概率单位”,“排除”,[23日59]
指定响应的分布是正常的,并指示fitglm
使用probit链接函数并从拟合中排除第23和59个观测值。
“BinomialSize”
- - - - - -二项分布的试验次数二项分布的试验次数,即样本容量,指定为逗号分隔对组成“BinomialSize”
变量名资源描述
、数字标量或与响应长度相同的数字向量。这是参数n
对于拟合的二项分布。BinomialSize
只适用于分布
参数是“二”
.
如果BinomialSize
是一个标量值,这意味着所有的观察有相同的试验次数。
作为替代BinomialSize
,您可以将响应指定为一个两列矩阵,在第1列和中包含计数BinomialSize
在第2列。
数据类型:单
|双
|字符
|字符串
“B0”
- - - - - -系数估计的初始值系数估计的初始值,指定为数字向量。默认值是源自输入数据的初始拟合值。
数据类型:单
|双
“CategoricalVars”
- - - - - -分类变量列表分类变量列表,指定为逗号分隔对,由“CategoricalVars”
以及在表或数据集数组中包含分类变量名的字符向量的字符串数组或单元格数组资源描述
,或指示哪些列是分类列的逻辑或数字索引向量。
如果数据在表或数据集数组中资源描述
,那么默认情况下,fitglm
将所有分类值、逻辑值、字符数组、字符串数组和字符向量的单元格数组视为分类变量。
如果数据在矩阵中X
,则为的默认值“CategoricalVars”
是一个空矩阵[]
.也就是说,没有一个变量是绝对的,除非你指定它为绝对的。
例如,您可以使用以下任意一种方法指定六个变量中的第二个和第三个变量为分类变量:
例子:“CategoricalVars”,[2,3]
例子:'CategoricalVars',逻辑([0 1 1 0 0])
数据类型:单
|双
|逻辑
|字符串
|细胞
“DispersionFlag”
- - - - - -计算色散参数的指示器假
为“二”
和“泊松”
分布(默认)|真正的
用于计算色散参数的指标“二”
和“泊松”
发行版,指定为逗号分隔对,由“DispersionFlag”
下面是其中之一。
真正的 |
在计算标准误差时估计一个离散参数。估计的色散参数值是皮尔逊残差的平方和除以误差自由度(DFE)。 |
假 |
违约。计算标准误差时,使用理论值1。 |
拟合函数总是估计其他分布的色散。
例子:“DispersionFlag”,真的
“分布”
- - - - - -响应变量的分布“正常”
(默认)|“二”
|“泊松”
|“伽马”
|逆高斯分布的
响应变量的分布,指定为逗号分隔对组成“分布”
下面是其中之一。
“正常” |
正态分布 |
“二” |
二项分布 |
“泊松” |
泊松分布 |
“伽马” |
伽马分布 |
逆高斯分布的 |
逆高斯分布 |
例子:“分布”、“伽马”
“排除”
- - - - - -观察排除要从匹配中排除的观察值,指定为由逗号分隔的对组成“排除”
以及逻辑或数字索引向量,指示要从拟合中排除哪些观测值。
例如,您可以使用下面的任何一个示例排除6个观察值中的2个和3个。
例子:“排除”,[2,3]
例子:'排除',逻辑([0 1 1 0 0])
数据类型:单
|双
|逻辑
“拦截”
- - - - - -常数项指示器真正的
(默认)|假
适应度中的常数项(截距)指示符,指定为逗号分隔的对组成“拦截”
,要么真正的
包括或假
从模型中移除常数项。
使用“拦截”
仅当使用字符向量或字符串标量指定模型时,而不是使用公式或矩阵。
例子:“拦截”,假的
“链接”
- - - - - -链接功能用来代替规范链接函数的链接函数,指定为逗号分隔对组成“链接”
下面是其中之一。
链接函数名 | 链接功能 | 意味着(逆)函数 |
---|---|---|
“身份” |
f(μ) =μ | μ=Xb |
“日志” |
f(μ) =日志(μ) | μ= exp (Xb) |
分对数的 |
f(μ) =日志(μ/ (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.
有关规范链接函数的更多信息,请参见规范的链接功能.
例子:“链接”、“概率单位”
数据类型:字符
|字符串
|单
|双
|结构体
“选项”
- - - - - -优化选项statset ('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',逻辑([0 1 1 0 0])
数据类型:单
|双
|逻辑
|字符串
|细胞
“ResponseVar”
- - - - - -反应变量资源描述
(默认)|包含变量名的字符向量或字符串标量|逻辑或数字索引向量响应变量要在适合中使用,指定为逗号分隔对组成“ResponseVar”
以及在表或数据集数组中包含变量名的字符向量或字符串标量资源描述
,或逻辑或数字索引向量,指示哪一列是响应变量。你通常需要使用“ResponseVar”
当拟合表或数据集数组时资源描述
.
例如,您可以指定第四个变量收益率
,作为对六个变量的响应,以下列方式之一。
例子:“ResponseVar”、“收益”
例子:“ResponseVar”,[4]
例子:'ResponseVar',逻辑([0 0 0 1 0 0])
数据类型:单
|双
|逻辑
|字符
|字符串
“VarNames”
- - - - - -变量的名字{x1, x2,…,‘xn’,‘y’}
(默认)|字符串数组|字符向量的单元格数组用逗号分隔的变量对指定的变量名,由“VarNames”
以及字符向量的字符串数组或单元格数组,其中包括的列的名称X
首先是响应变量的名称y
最后一次。
“VarNames”
不适用于表或数据集数组中的变量,因为这些变量已经有了名称。
变量名不必是有效的MATLAB标识符。但是,如果名称无效,则在适合或调整模型时不能使用公式;例如:
属性时,不能使用公式指定要添加或删除的术语addTerms
函数或removeTerms
函数,分别。
属性时,不能使用公式来指定模型的上下限一步
或stepwiseglm
函数的名称-值对参数“低”
和“上”
,分别。
在指定VarNames, VarNames
,可以验证变量名varNames
通过使用isvarname
函数。如果变量名无效,则可以使用matlab.lang.makeValidName
函数。
例子:VarNames,{“马力”,“加速”,“Model_Year”,“英里”}
数据类型:字符串
|细胞
“重量”
- - - - - -观察权重的(n, 1)
(默认)|n非负标量值的-乘1向量观察权值,指定为逗号分隔的对,由“重量”
和一个n非负标量值的-by-1向量,其中n为观察次数。
数据类型:单
|双
mdl
-广义线性回归模型GeneralizedLinearModel
对象广义线性回归模型,指定为GeneralizedLinearModel
对象创建使用fitglm
或stepwiseglm
.
一个条件矩阵T
是一个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
是响应名称。
条款
表示模型中使用威尔金森表示法的预测项。
要表示预测器和响应变量,请使用表输入的变量名资源描述
或使用指定的变量名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 |
有关详细信息,请参见威尔金森符号.
广义线性模型的默认链接函数为规范的链接功能.
分布 | 标准链接函数名称 | 链接功能 | 意味着(逆)函数 |
---|---|---|---|
“正常” |
“身份” |
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
认为南
,''
(空字符向量),""
(空字符串),< >失踪
,<定义>
值资源描述
,X
,Y
丢失值。fitglm
不使用缺少匹配值的观测值。的ObservationInfo
拟合模型的性质表明是否fitglm
把每个观察结果都用在合适的地方。
使用stepwiseglm
自动选择模型规范。使用一步
,addTerms
,或removeTerms
调整一个合适的模型。
[1] Collett D。二进制数据建模.纽约:查普曼与霍尔出版社,2002年出版。
多布森广义线性模型导论.纽约:查普曼与霍尔出版社,1990。
P. McCullagh和J. A. Nelder。广义线性模型.纽约:查普曼与霍尔出版社,1990。
对于内存不足的数据,这个函数金宝app支持高数组,但有一些限制。
如果有任何输入参数fitglm
是一个高数组,那么所有其他输入也必须是高数组。属性提供的非空变量“重量”
,“排除”
,“抵消”
,“BinomialSize”
名称-值对。
默认的迭代次数是5次。属性可以更改迭代次数“选项”
在选项结构中传递的名称-值对。使用。创建选项结构statset
指定一个不同的值麦克斯特
.
对于高数据,fitglm
返回一个CompactGeneralizedLinearModel
对象,该对象包含与GeneralizedLinearModel
对象。主要的区别是紧凑对象对内存需求很敏感。compact对象不包含包含数据或包含与数据大小相同的数组的属性。compact对象不包含这些GeneralizedLinearModel
属性:
诊断
安装
抵消
ObservationInfo
ObservationNames
残差
步骤
变量
可以直接从返回的compact对象中计算残差GLM = fitglm (X, Y)
使用
RES = Y - predict(GLM,X);S =√GLM.SSE / GLM.DFE);直方图(RES linspace (3 * S, 3 *年代,51))
有关更多信息,请参见用于内存不足数据的高数组.
该功能完全支持GPU阵列。金宝app有关更多信息,请参见在GPU上运行MATLAB函数(并行计算工具箱).
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。