创建广义线性回归模型
使用双向交互模型,建立吸烟概率作为年龄、体重和性别函数的逻辑二项式模型。
加载医院
数据集的数组。
负载医院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下)都是大的。这意味着没有一个系数是显着的。大 -Value用于模型的测试,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 _________ _____________________________________________________________________(拦截)0.88723 0.070969 12.502 7.3149e-3.6 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 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.
将最后一个变量作为响应变量,其余变量作为预测变量。
要将不同的列设置为响应变量,请使用响应官员
名称值对参数。
要使用列的子集作为预测器,请使用PredictorVars
名称值对参数。
要定义模型规范,请设置modelspec
参数使用公式或术语矩阵。公式或术语矩阵指定要用作预测器或响应变量的列。
表中的变量名称不必有效MATLAB®标识符。但是,如果名称无效,则在适合或调整模型时不能使用公式;例如:
你不能指定modelspec
使用公式。
您无法使用公式指定在使用时添加或删除的术语addTerms
函数或removeterms.
函数,分别。
您可以验证变量名资源描述
通过使用isvarname
函数。下面的代码返回逻辑的1
(真正的
)对于具有有效变量名的每个变量。
cellfun(@ isvarname,tbl.properties.variablenames)
资源描述
是无效的,则使用matlab.lang.makeValidName
函数。tbl.Properties.VariableNames = matlab.lang.makeValidName (tbl.Properties.VariableNames);
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〜术语'
模型规范,指定为其中一个值。
命名模型的字符向量或字符串标量。
价值 | 模型类型 |
---|---|
'常数' |
模型只包含一个常数(截距)项。 |
“线性” |
模型包含每个预测器的截距和线性术语。 |
“互动” |
模型包含每个预测器的截距,线性项,以及对不同预测器的所有乘积(没有平方项)。s manbetx 845 |
'purequadratic' |
模型包含每个预测器的截距项和线性和平方术语。 |
“二次” |
模型包含每个预测器的截距项、线性项和平方项,以及对不同预测器的所有乘积。s manbetx 845 |
“聚 |
模型是一种多项式,所有条款均可获得程度我 在第一个预测因子,学位j 在第二个预测中,等等。通过使用数字0到9指定每个预测器的最大程度。模型中包含交互项,但每个交互项的程度不超过指定程度的最大值。例如,“poly13” 有一个拦截和X.1那X.2那X.22那X.23.那X.1*X.2,X.1*X.22条款,X.1和X.2分别是第一和第二预测因素。 |
A.T.————(P.+ 1)矩阵,或者术语矩阵,在模型中指定项,其中T.是多少项和P.为预测变量的个数,+1表示响应变量。当预测器的数量很大且您希望以编程方式生成术语时,术语矩阵是很方便的。
字符向量或字符串标量公式在形式
'Y〜术语'
那
那里术语
在Wilkinson表示法.公式中的变量名称必须是变量名称资源描述
或指定的可变名称Varnames
.此外,变量名称必须是有效的MATLAB标识符。
该软件通过使用术语顺序确定拟合模型中的术语顺序资源描述
或X.
.因此,模型中的术语顺序可以与指定公式中的术语顺序不同。
例子:“二次”
指定可选的逗号分隔的对名称,值
参数。名称
参数名和价值
为对应值。名称
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“分布”、“正常”,“链接”、“概率单位”,“排除”,[23日59]
指定响应的分布是正常的,并指示Fitglm.
使用probit链接函数并从拟合中排除第23和59个观测值。
“BinomialSize”
-二项分布的试验次数二项份分布的试验数量,即样本大小,指定为逗号分隔对“BinomialSize”
和变量名称资源描述
、数字标量或与响应长度相同的数字向量。这是参数N
对于拟合的二项分布。Binomialsize.
仅适用于分布
参数是“二”
.
如果Binomialsize.
是一个标量值,这意味着所有的观察有相同的试验次数。
作为替代Binomialsize.
,您可以将响应指定为双列矩阵,其中包含列1中的计数Binomialsize.
在第2列。
数据类型:单
|双人间
|字符
|串
“CategoricalVars”
-分类变量列表分类变量列表,指定为逗号分隔的配对组成“CategoricalVars”
以及在表或数据集数组中包含分类变量名的字符向量的字符串数组或单元格数组资源描述
,或指示哪些列是分类列的逻辑或数字索引向量。
如果数据在表或数据集数组中资源描述
,那么默认情况下,Fitglm.
将所有分类值、逻辑值、字符数组、字符串数组和字符向量的单元格数组视为分类变量。
如果数据在矩阵中X.
,则为的默认值“CategoricalVars”
是一个空矩阵[]
.也就是说,没有一个变量是绝对的,除非你指定它为绝对的。
例如,您可以使用以下任意一个示例指定6个观察结果中的2个和3个为分类。
例子:'patoricalvars',[2,3]
例子:'pationoricalvars',逻辑([0 1 1 0 0 0])
数据类型:单
|双人间
|逻辑
|串
|细胞
'DispersensionFlag'
-计算色散参数的指示器假
为“二”
和'泊松'
分布(默认)|真正的
计算色散参数的指示器“二”
和'泊松'
发行版,指定为逗号分隔对,由'DispersensionFlag'
以及以下之一。
真正的 |
计算标准错误时估计分散参数。估计的色散参数值是平方皮尔逊残差除以误差(DFE)的自由度除外。 |
假 |
违约。计算标准误差时使用理论值。 |
拟合功能始终估计用于其他分布的色散。
例子:'DispersensionFlag',真实
“分布”
-分布响应变量'正常'
(默认)|“二”
|'泊松'
|'伽玛'
|逆高斯分布的
响应变量的分布,指定为逗号分隔的对组成“分布”
以及以下之一。
'正常' |
正态分布 |
“二” |
二项分布 |
'泊松' |
泊松分布 |
'伽玛' |
伽玛分布 |
逆高斯分布的 |
逆高斯分布 |
例子:“分布”、“伽马”
'排除'
-不排除的观察从拟合中排除的观察,指定为逗号分隔的配对'排除'
以及逻辑或数字索引向量,指示要从拟合中排除哪些观测值。
例如,您可以使用下面的任何一个示例排除6个观察值中的2个和3个。
例子:'排除',[2,3]
例子:'排除',逻辑([0 1 1 0 0])
数据类型:单
|双人间
|逻辑
“拦截”
-恒定术语指标真正的
(默认)|假
适应度中的常数项(截距)指示符,指定为逗号分隔的对组成“拦截”
,要么真正的
包括或假
从模型中移除常数项。
使用“拦截”
仅在使用字符向量或字符串标量指定模型时,而不是公式或矩阵。
例子:“拦截”,假的
“链接”
-链接功能用于代替规范链接功能的链接功能,指定为逗号分隔对组成“链接”
以及以下之一。
链接函数名称 | 链接功能 | 平均(逆)功能 |
---|---|---|
'身份' |
F.(μ) =μ | μ=XB. |
'log' |
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. | μ=XB.1/P. |
|
F.(μ) =S.Link. (μ) |
μ=S.Inverse (XB.) |
链接功能定义了关系F.(μ) =X.*B.在平均响应之间μ和预测器的线性组合X.*B..
有关规范链接函数的更多信息,请参见规范链接功能.
例子:“链接”、“概率单位”
数据类型:字符
|串
|单
|双人间
|结构体
“抵消”
-抵消变量匹配中的偏移量变量,指定为逗号分隔的对,由“抵消”
和变量名称资源描述
或者一个与响应长度相同的数字向量。
Fitglm.
用途偏移
作为一个系数值固定为1的附加预测器。换句话说,拟合公式为
F.(μ)=偏移+X.*B.
那
在哪里F.为链接函数,μ平均值是多少X.*B.是预测器的线性组合X..当偏移
预测器具有系数1
.
例如,考虑泊松回归模型。假设以与预测器成正比的理论原因已知数量A.
.通过使用日志链接函数和指定日志(a)
作为补偿,您可以强制模型满足这个理论约束。
数据类型:单
|双人间
|字符
|串
'predictorvars'
-预测变量要在适合的情况下使用的预测变量,指定为逗号分隔对组成'predictorvars'
以及表或数据集数组中变量名称的字符数阵列或单元格数组资源描述
,或逻辑或数字索引向量,指示哪些列是预测变量。
中的名称应包含字符串值或字符向量资源描述
或者使用您使用的名称“VarNames”
名称值对参数。
默认是所有的变量X.
,或所有变量资源描述
除了响应官员
.
例如,您可以使用以下任意一个示例指定第二个和第三个变量作为预测变量。
例子:“PredictorVars”,[2,3]
例子:'PredictorVars',逻辑([0 1 1 0 0])
数据类型:单
|双人间
|逻辑
|串
|细胞
“ResponseVar”
-反应变量资源描述
(默认)|包含变量名的字符向量或字符串标量|逻辑或数字索引向量用于适合的响应变量,指定为逗号分隔的对组成“ResponseVar”
以及在表或数据集数组中包含变量名的字符向量或字符串标量资源描述
,或逻辑或数字索引向量,指示哪一列是响应变量。你通常需要使用“ResponseVar”
拟合表或数据集数组时资源描述
.
例如,您可以指定第四个变量收益率
,作为对六个变量的响应,以下列方式之一。
例子:“ResponseVar”、“收益”
例子:'ResponalVar',[4]
例子:'ResponalVar',逻辑([0 0 0 1 0 0])
数据类型:单
|双人间
|逻辑
|字符
|串
“VarNames”
-变量的名字{x1, x2,…,‘xn’,‘y’}
(默认)|字符串数组|字符向量的单元格阵列变量的名称,指定为逗号分隔的配对组成“VarNames”
以及字符向量的字符串数组或单元格数组,其中包括的列的名称X.
首先是响应变量的名称y
最后一次。
“VarNames”
不适用于表或数据集数组中的变量,因为这些变量已经有了名称。
变量名不必是有效的MATLAB标识符。但是,如果名称无效,则在适合或调整模型时不能使用公式;例如:
您无法使用公式指定在使用时添加或删除的术语addTerms
函数或removeterms.
函数,分别。
在指定'varnames',varnames
,您可以验证变量名称varnames.
通过使用isvarname
函数。下面的代码返回逻辑的1
(真正的
)对于具有有效变量名的每个变量。
Cellfun(@ Isvarname,Varnames)
varnames.
是无效的,则使用matlab.lang.makeValidName
函数。varNames = matlab.lang.makeValidName (varNames);
例子: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
是响应名称。
术语
表示模型中使用威尔金森表示法的预测项。
要代表预测器和响应变量,请使用表输入的变量名称资源描述
或使用的变量名称VarNames
.的默认值VarNames
是{x1, x2,…,‘xn’,‘y’}
.
例如:
'y〜x1 + x2 + x3'
指定一个带有截距的三变量线性模型。
'y ~ x1 + x2 + x3 - 1'
指定一个无拦截的三变线性模型。请注意,默认情况下,公式包括常量(拦截)术语。要从模型中排除常量术语,您必须包含-1
在公式中。
公式包括常数术语,除非您明确地删除术语-1
.
Wilkinson表示法描述了模型中存在的术语。符号涉及模型中存在的术语,而不是那些术语的乘法器(系数)。
威尔金森表示法使用这些符号:
+
意味着包括下一个变量。
-
表示不包含下一个变量。
:
定义交互,这是术语的份额。
*
定义交互和所有低阶项。
^
将预测器提升到一个指数,就像*
重复,所以^
还包括较低的术语。
()
组条件。
该表显示了威尔金森表示法的典型例子。
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.)) |
'泊松' |
'log' |
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 Coder™.有关详细信息,请参见代码生成简介.
Fitglm.
对分类预测器的处理如下:
具有分类预测指标的模型L.包括水平(类别)L.- 1指标变量。模型使用第一个类别作为参考级别,因此不包含参考级别的指标变量。如果分类预测器的数据类型为分类
,则可以使用类别
并通过使用重新排序类别reordercats
自定义参考级别。有关创建指示器变量的更多详细信息,请参阅虚拟变量的自动创建.
Fitglm.
对待一组L.- 1指示器变量作为一个单独的变量。如果您想将指示器变量视为不同的预测变量,可以使用戴维尔
.然后在拟合模型时,使用除分类变量参考水平对应的指标变量外的其他指标变量。对于绝对预测器X.
,如果您指定所有列dummyvar (X)
并以截距项作为预测因子,使设计矩阵秩亏缺。
连续预测器和分类预测器之间的交互项L.层次由元素的乘积组成L.- 1具有连续预测器的指示器变量。
两个分类预测因子之间的交互条款L.和m级别包括(L.- 1)*(m- 1)指标变量包括两个分类预测水平的所有可能组合。
不能为绝对预测器指定高阶项,因为指示器的平方等于它本身。
Fitglm.
认为南
那”
(空字符向量),“
(空字符串),< >失踪
,<定义>
价值资源描述
那X.
,y
丢失值。Fitglm.
不使用符合缺失值的观察结果。当ObservationInfo
拟合模型的性质表明是否Fitglm.
把每个观察结果都用在合适的地方。
使用挺身油
自动选择模型规范。使用step
那addTerms
,或removeterms.
调整一个合适的模型。
[1] Collett D。二进制数据建模.纽约:2002年Chapman&Hall。
[2] Dobson,A. J.广义线性模型导论.纽约:查普曼与霍尔出版社,1990。
P. McCullagh和J. A. Nelder。广义线性模型.纽约:查普曼与霍尔出版社,1990。
此功能支持具有一些限制的内存万博1manbetx存储数据的高阵列。
如果有任何输入参数Fitglm.
是一个高数组,那么所有其他输入也必须是高数组。属性提供的非空变量'重量'
那'排除'
那“抵消”
,“BinomialSize”
名称-值对。
默认的迭代次数是5次。属性可以更改迭代次数'选项'
在选项结构中传递的名称-值对。使用。创建选项结构statset
指定不同的值maxiter.
.
对于高数据,Fitglm.
返回A.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阵列。万博1manbetx有关更多信息,请参见在GPU上运行matlab函数(并行计算工具箱).
你点击一个链接对应于这个MATLAB命令:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。