这个例子显示了如何适应一个广义线性模型和分析结果。典型的工作流程包括以下步骤:导入数据,拟合广义线性模型,检验其质量,修改模型,以提高其质量,并基于该模型进行预测。在这个例子中,使用费舍尔虹膜数据来计算,一个花两个类别之一的概率。
加载费希尔虹膜数据。
加载fisheriris
提取的行51至150,其具有的分类云芝或弗吉尼亚。
X = MEAS(51:端,:);
创建逻辑响应变量,这些变量真正
为花斑癣和假
对于弗吉尼亚。
Y =的strcmp(“花斑癣”,物种(51:端));
适合于该数据的二项式广义线性模型。
MDL = fitglm(X,Y,“线性”,'分配',“二项式”)
MDL =广义线性回归模型:分对数(y)的〜1 + X1 + X2 + X3 + X4分布=二项式估计系数:估计SE TSTAT p值________ ______ _______ ________(截距)42.638 25.708 1.6586 0.097204 X1 2.4652 2.3943 1.0296 0.30319×2 6.6809 4.47961.4914 0.13585×3 -9.4294 4.7372 -1.9905 0.046537×4 -18.286 9.7426 -1.8769 0.060529 100观察,95个错误自由度分散体:1驰^ 2统计量与常数模型:127,p值= 1.95e-26
根据模型显示,一些p在 - 值p值
列不小,这意味着您可以简化模型。
确定是否为系数95%置信区间包括0。如果是这样,你可以用这些时间间隔删除模型项。
confint = coefCI(MDL)
confint =5×2-8.3984 93.6740 -2.2881 7.2185 -2.2122 15.5739 -18.8339 -0.0248 -37.6277 1.0554
只有第四个预测X3
具有系数,其置信区间不包括0。
的系数X1
和X2
具有大p- 值和95%的可信区间包括0.1测试两个系数是否可以为零。指定假设矩阵选择系数X1
和X2
。
M = [0 1 0 0 0 0 0 1 0 0];P = coefTest(MDL,M)
p值= 0.1442
该p- 值是大约0.14,这是不小的。去掉X1
和X2
从模型。
mdl1 = removeTerms(MDL,'X1 + X2')
mdl1 =广义线性回归模型:分对数(y)的〜1个+ X3 + X4分布=二项式估计系数:估计SE TSTAT p值________ ______ _______ __________(截距)45.272 13.612 3.326 0.00088103×3 -5.7545 2.3059 -2.4956 0.012576 X4 -10.447 3.7557 -2.7816 0.0054092 100观察,97个错误自由度分散体:1驰^ 2统计量与常数模型:118,p值= 2.3E-26
另外,您也可以使用识别重要的预测stepwiseglm
。
MDL2 = stepwiseglm(X,Y,'不变','分配',“二项式”,'上',“线性”)
1.添加X4,越轨= 33.4208,Chi2Stat = 105.2086,p值= 1.099298e-24 2.添加X3,越轨= 20.5635,Chi2Stat = 12.8573,p值= 0.000336166 3.添加X2,越轨= 13.2658,Chi2Stat = 7.29767,p值=0.00690441
MDL2 =广义线性回归模型:分对数(y)的〜1个+ X2 + X3 + X4分布=二项式估计系数:估计SE TSTAT p值________ ______ _______ ________(截距)50.527 23.995 2.1057 0.035227×2 8.3761 4.7612 1.7592 0.078536×3 -7.8745 3.8407 -2.0503 0.040334×4 -21.43 10.707 -2.0014 0.04535 100观察,96个错误自由度分散体:1驰^ 2统计量与常数模型:125,p值= 5.4E-27
该p- 值(p值
)为X2
在系数表是大于0.05,但stepwiseglm
包括X2
在模型中,因为p- 值(p值
)添加X2
小于0.05。该stepwiseglm
函数计算p值
使用拟合有和无X2
,而函数计算p值
仅基于从最终模型计算的近似标准误差。因此,p值
比更可靠p值
。
检查杠杆情节寻找有影响力的异常值。
plotDiagnostics(MDL2,“杠杆”)
如果其杠杆实质上超过的观察可以被认为是异常值P / N
,其中p
是系数的数量和ñ
是观测值的数量。虚线参考线是一个推荐的阈值时,通过计算2 * P / N
,这对应于0.08这个情节。有些观测杠杆值大于10 * P / N
(即,0.40)。识别这些观测点。
idxOutliers =找到(mdl2.Diagnostics.Leverage> 10个* mdl2.NumCoefficients / mdl2.NumObservations)
idxOutliers =4×119 21 57 85
当你适合排除这些点的模型看看模型系数发生改变。
oldCoeffs = mdl2.Coefficients.Estimate;mdl3 = fitglm(X,Y,“线性”,'分配',“二项式”,...'PredictorVars',2:4,'排除',idxOutliers);newCoeffs = mdl3.Coefficients.Estimate;DISP([oldCoeffs newCoeffs])
50.5268 44.0085 8.3761 5.6361 -7.8745 -6.1145 -21.4296 -18.1236
在该模型的系数mdl3
与那些在MDL2不同。这一结果意味着,在高杠杆点的反应是不与简化模型的预测值一致。
用mdl3
预测概率平均测量花是花斑癣。产生预测置信区间。
[newf,NEWC] =预测(mdl3,平均值(X))
newf = 0.4558
NEWC =1×20.1234 0.8329
该模型给出了几乎46%的概率,平均花是云芝,具有广泛的置信区间。
GeneralizedLinearModel
|coefCI
|fitglm
|plotDiagnostics
|预测
|removeTerms
|stepwiseglm