700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > R语言学习笔记8_回归分析和相关分析

R语言学习笔记8_回归分析和相关分析

时间:2021-09-28 17:13:22

相关推荐

R语言学习笔记8_回归分析和相关分析

目录

八、回归分析和相关分析8.1 相关性及其度量8.1.1 相关性概念8.1.2 相关分析8.2 一元线性回归分析8.2.1 数学模型8.2.2 估计与检验8.2.3 预测与控制8.3 多元线性回归8.3.1 数学模型8.3.2 估计与检验回归方程显著性检验回归系数显著性检验8.3.3 预测与控制8.3.4 逐步回归法 step()8.4 回归诊断8.4.1 残差分析残差及残差图方差齐性的诊断及修正方法异常点的识别8.4.2 影响分析影响函数Cook距离DFFITS准则COVRATIO准则影响分析的概括函数 influen.mesures(model)8.4.3 共线性诊断特征值法条件指数方差膨胀因子VIF8.5 Logistic回归Logistic回归广义线性模型

八、回归分析和相关分析

8.1 相关性及其度量

8.1.1 相关性概念

相关关系是指两个变量的数值变化存在不完全确定的依存关系,它们之间的数值不能用方程表示出来,但可用某种相关性度量来刻画。

8.1.2 相关分析

cor.test(x, y,alternative = c("two.sided", "less", "greater"),method = c("pearson", "kendall", "spearman"),exact = NULL, conf.level = 0.95, continuity = FALSE, ...)

x, y是长度相同的向量; alternative是备择假设,默认为two.sided;method是选择检验方法。

cor.test(formula, data, subset, na.action, ...)

formula是公式,必须是具有相同长度的数值向量;data是数据框;subset是可选择向量,表示观察值的子集。

例:对以下数据进行相关性检验:

> test<-data.frame(x<-c(1.21,1.30,1.39,1.42,1.47,1.56,1.68,1.72,1.98,2.10),y<-c(3.90,4.50,4.20,4.83,4.16,4.93,4.32,4.99,4.70,5.20))> cor.test(x,y)Pearson's product-moment correlationdata: x and yt = 2.6, df = 8, p-value = 0.03alternative hypothesis: true correlation is not equal to 095 percent confidence interval:0.08943 0.91723sample estimates:cor 0.6807

由于p=0.03<0.05,故认为变量x与y相关。

8.2 一元线性回归分析

函数关系可以刻画变量之间的因果关系。

8.2.1 数学模型

设变量X和Y之间存在一定的相关关系,回归分析方法即找出Y的值是如何随X的值变化而变化的规律,称Y为因变量(响应变量),X为自变量(解释变量)。

Y=β0+β1X+ε

Y=β0+β1X表示Y随X变化而线性变化的部分,ε是随机误差(其他一切不确定因素影响的总和),通假定ε~ N(0,σ2),f(X)=β0+β1X为一元线性回归函数,β0为回归常数,β1为回归系数,统称回归参数。

8.2.2 估计与检验

β0、β1的估计(最小二乘估计)回归方程的显著性检验:

H0:β1=0,H1:β1≠0t检验法、F检验法、相关系数检验法

当拒绝H0时,认为线性回归方程是显著的。

-在R中,函数lm()求回归方程,confint()求参数的置信区间

lm(formula, data, subset, weights, na.action,method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE,singular.ok = TRUE, contrasts = NULL, offset, ...)

formula是回归模型;data是数据框;subset是样本观察的子集;weights用于拟合的加权向量;na.action显示数据是否包含缺失值;method指出用于拟合的方法;model, x, y , qr为T时返回其值。除了formula必选,其他都是可选。

confint(object, parm, level = 0.95, ...)

object指回归模型;parm要求指出所求区间估计的参数,默认为所有的回归参数;level置信水平。

例:有10个同类企业的生产性固定资产价值X和工业总产值Y资料如下。现试确定X与Y之间的关系,求出回归方程,并作检验。

> x<-c(318,910,200,409,425,502,314,1210,1022,1225)> y<-c(524,1019,638,815,913,928,605,1516,1219,1624)> lm.reg<-lm(y~1+x)> summary(lm.reg)#提取模型计算结果Call:lm(formula = y ~ 1 + x)Residuals:Min1Q Median3Q Max -191.5 -86.6 45.3 79.3 138.2 Coefficients:Estimate Std. Error t value Pr(>|t|) (Intercept) 393.04379.651 4.93 0.0011 ** x 0.8980.106 8.50 2.8e-05 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 125 on 8 degrees of freedomMultiple R-squared: 0.9,Adjusted R-squared: 0.888 F-statistic: 72.2 on 1 and 8 DF, p-value: 2.82e-05#对误差项独立同正态分布的假设进行检验> par(mfrow=c(2,2))> plot(lm.reg)

从p值可以看出回归方程Y=393.043+0.898X通过检验。下图:

1)Residual vs Fitted是拟合值y对残差的图形。可以看出数据点都基本均匀的分布在直线y=0的两侧,无明显趋势。

2)Normal QQ中的数据点分布趋于一条直线,说明残差是服从正态分布的。

3)Scale Lcation 显示了标准化残差的平方根分布情况。最高点为残差最大值点。

4)Cook距离图显示了对回归的影响点。

8.2.3 预测与控制

对于X=x0,预测置信水平1-α下Y的取值区间。

控制可以看作预测的反问题:要求观察值Y在某一区间内取值时,应将X控制在什么范围内。

例1:求上例中X=x0=425时相应的Y在置信水平为0.95的预测区间。

> point<-data.frame(x=425)> pointx1 425> lm.pred<-predict(lm.reg,point,interval = "prediction",level=0.95)> lm.predfit lwr upr1 774.8 466.6 1083

选项interval = "prediction"表示同时要给出相应的预测区间。

由计算结果,当x=425时,y的预测值为774.8,预测区间为[466.6, 1083]。

例2:下表是有关15个地区某种食物年需求量(X,单位:10吨)和地区人口增加量(Y,单位:千人)的资料。利用此表数据展示一元回归模型的统计分析过程。

> #建立数据集,并画出散点图:考查数据点的分布趋势,看是否呈直线条状分布> x<-c(274,180,375,205,86,265,98,330,195,53,430,372,236,157,370)> y<-c(162,120,223,131,67,169,81,192,116,55,252,234,144,103,212)> A<-data.frame(x,y)> plot(x,y)

> #进行回归分析,并在散点图上显示回归直线> lm.reg<-lm(y~x)> summary(lm.reg)Call:lm(formula = y ~ x)Residuals:Min1Q Median3Q Max -9.961 -4.608 -0.262 3.150 14.215 Coefficients:Estimate Std. Error t value Pr(>|t|) (Intercept) 22.59593.9274 5.75 6.7e-05 ***x 0.53010.0147 36.01 2.1e-14 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 6.44 on 13 degrees of freedomMultiple R-squared: 0.99,Adjusted R-squared: 0.989 F-statistic: 1.3e+03 on 1 and 13 DF, p-value: 2.08e-14> abline(lm.reg)

结论:

回归参数的估计与检验:回归参数的估计为β0=22.5959,β1=0.5301,相应的标准差分别为3.9274, 0.0147 ,它们的p值都很小,故是非常显著的。相关分析:相关系数的平方R2=0.99,表明数据中99%可由回归方程来描述。方程的检验:F分布的p值为2.08x10-14,因此方程是非常显著的。

> #计算回归方程的残差,并画出关于残差的散点图。> res<-residuals(lm.reg)> plot(res)> text(12,res[12],labels = 12,adj=(.05))

从上图可以看出,第12个样本点可能有问题(图中已标记,它比其他样本点的残差大很多)或由于模型的假设不正确、σ2不是常数,异常点等等。

8.3 多元线性回归

8.3.1 数学模型

Y=β0+β1X1+β2X2+…+βpXp

对n个观测值可写为:

 y1=β0+β1X11+β2X12+…+βpX1p+ε1 ,

 y1=β0+β1X21+β2X22+…+βpX2p+ε2 ,

 y1=β0+β1Xn1+β2Xn2+…+βpXnp+εn

8.3.2 估计与检验

回归方程显著性检验

H0:β0=β1=…=βP=0,H1:β0, β1…βP不全为0

回归系数显著性检验

H0j:βj=0,H1j:βj≠0

例:某公司在各地区销售一种特殊的化妆品,该公司观测了15个城市在某月对该化妆品的销售量Y,使用该化妆品的人数X1和人均收入X2,数据如下。试建立Y与X1,X2的线性回归方程,并作相应的检验。

> y<-c(162,120,223,131,67,169,81,192,116,55,252,232,144,103,212)> x1<-c(274,180,375,205,86,265,98,330,195,53,430,372,236,157,370)> x2<-c(2450,3250,3802,2838,2347,3782,3008,2450,2137,2560,4020,4427,2660,2088,2605)> sales<-data.frame(y,x1,x2)> lm.reg<-lm(y~x1+x2,data=sales)> summary(lm.reg)Call:lm(formula = y ~ x1 + x2, data = sales)Residuals:Min1Q Median3Q Max -3.831 -1.206 -0.244 1.482 3.302 Coefficients:Estimate Std. Error t value Pr(>|t|) (Intercept) 3.445728 2.426693 1.420.18 x10.495972 0.006046 82.04 < 2e-16 ***x20.009205 0.000967 9.52 6.1e-07 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 2.17 on 12 degrees of freedomMultiple R-squared: 0.999,Adjusted R-squared: 0.999 F-statistic: 5.7e+03 on 2 and 12 DF, p-value: <2e-16

由于F检验统计量的p<2e-16,用于回归系数检验的t统计量的p< 2e-16 和 =6.1e-07,均小于0.05,故回归方程与回归系数的检验都是显著的。回归方程为Y=3.445728+0.495972X1+0.009205X2

8.3.3 预测与控制

当多元线性回归方程经过检验是显著的,且其中每一个回归系数均显著时(不显著的先剔除),可以用此方程做预测。

求上例中X=x0=(200,3000)时相应Y的预测值与0.95的预测区间

> pre<-data.frame(x1=200,x2=3000)> lm.pred<-predict(lm.reg,pre,interval = "prediction",level=0.95)> lm.predfit lwr upr1 130.3 125.3 135.2

由此求得y0=130.3 ,相应的Y的0.95的预测区间为[125.3, 135.2]

8.3.4 逐步回归法 step()

若回归方程系数的显著性不高,说明变量的选择存在问题,可以用step()函数,通过选择最小的AIC信息统计量来达到删除或增加变量的目的。

step(object, scope, scale = 0,direction = c("both", "backward", "forward"),trace = 1, keep = NULL, steps = 1000, k = 2, ...)

object是线性模型或广义线性模型分析的结果(lm.reg);scope是确定逐步搜索的区域;direction 确定逐步搜索的方向,both向前向后,backward向后法,forward向前法。

8.4 回归诊断

8.4.1 残差分析

残差及残差图

1)残差

residuals(object, ...)resid(object, ...)

2)标准化残差

rstandard(model, infl = lm.influence(model, do.coef = FALSE),sd = sqrt(deviance(model)/df.residual(model)), type = c("sd.1", "predictive"), ...)

3)学生化残差

rstudent(model, infl = lm.influence(model, do.coef = FALSE),res = infl$wt.res, ...)

object 或 model 是由线性模型函数 lm() 或广义线性模型函数 glm() 生成的对象,infl是由lm.influence()返回值得到的影响结构,sd是模型的标准差,res是模型的残差。

凡是以残差为纵坐标,以观测值、预测值、自变量或序号、观测时间等为横坐标的散点图,均称为残差图。

计算8.3.2例的残差和标准残差,并画出相应的残差散点图。

> y.res<-residuals(lm.reg)#计算残差> print(y.res)1 2 3 4 5 6 7 8 9101112 0.1058 -2.6367 -1.4324 -0.2436 -0.7032 -0.6913 1.2607 2.3314 -3.8312 1.7032 -1.7175 3.3025 131415 -0.9802 2.4668 1.0657 > y.rst<-rstandard(lm.reg)#计算标准化残差> y.rst1 2 3 4 5 6 7 8 9 10 11 0.05281 -1.30636 -0.73053 -0.11643 -0.36046 -0.35064 0.66372 1.23228 -1.92771 0.91559 -0.93262 12 13 14 15 1.89069 -0.47083 1.24504 0.57928 > y.fit<-predict(lm.reg)#计算预测值> par(mfrow=c(1,2))> plot(y.res~y.fit)> plot(y.rst~y.fit)

方差齐性的诊断及修正方法

当残差的绝对值随预测值的增加也有明显增加(减少,或先增加后减少)的趋势时,表示关于误差的方差齐性假定不成立。

误差的方差非齐性时,有时可以通过对因变量作适当的变换,令Z=f(x),使得关于因变量Z在回归中误差的方差接近齐性。常见的方差稳定性变换有:

1)开方变换:Z=√Y(Y>0);

2)对数变换:Z=ln(Y) (Y>0);

3)倒数(逆)变换:Z=1/Y(Y≠0);

4)BOX-COX变换:Z=(Xλ-1)/λ,λ=0时为对数变换。

例:在对27家企业单位的研究中,记录了企业管理人数Y与工人X的资料。试建立Y对X的回归方程。

> x<-c(294,247,267,358,423,311,450,534,438,697,688,630,709,627,615,999,1022,1015,700,850,980,1025,1021,1200,1250,1500,1650)> y<-c(50,40,45,55,70,65,55,62,68,78,80,84,88,97,100,109,114,117,106,128,130,160,97,180,112,210,135)> persons<-data.frame(x,y)> #做线性回归模型> lm.reg<-lm(y~x)> summary(lm.reg)Call:lm(formula = y ~ x)Residuals:Min1Q Median3Q Max -47.65 -11.14 -4.28 11.68 41.68 Coefficients:Estimate Std. Error t value Pr(>|t|) (Intercept) 25.09439.2754 2.71 0.012 * x 0.09550.0110 8.69 5e-09 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 21.1 on 25 degrees of freedomMultiple R-squared: 0.751,Adjusted R-squared: 0.741 F-statistic: 75.5 on 1 and 25 DF, p-value: 5.02e-09> #回归系数、回归方程均通过检验,回归方程为Y=25.0943+0.0955X> #回归诊断:画出标准化残差散点图> y.rst<-rstandard(lm.reg)> y.fit<-predict(lm.reg)> plot(y.rst~y.fit)> #模型更新> lm.new<-update(lm.reg,sqrt(.)~.)> coef(lm.new)(Intercept) x 6.044644 0.004781 > yn.rst<-rstandard(lm.new)> yn.fit<-predict(lm.new)> plot(yn.rst~yn.fit)

图形如下图(左)所示,容易看出残差图从左向右逐渐散开,这是方差齐性不成立的典型征兆,因此考虑对响应变量做Y变换,得到右图,趋势大有改善。更新后的回归方程为Y=(6.044644 + 0.004781X)2

异常点的识别

如果拟合后的模型能够很好的描述这组数据,那么残差对预测值的散点图应该像一些随机分布的点。

如果出现了一小部分残差绝对值很大的点那么这些观测值很可能是异常点,它们不能用来与其他数据一起拟合模型。

一般把标准化残差绝对值≥2的观测点认为是可疑点;标准化残差绝对值≥3的观测点认为是异常点。

8.4.2 影响分析

找出对回归结果影响很大的观测点

影响函数

lm.influence(model, do.coef = TRUE)

model是回归模型;do.coef = TRUE表示结果要求给出去掉第i个观测点后的模型回归系数。

Cook距离

是从估计角度提出的一种度量第i个观测点对回归影响大小的统计量。当距离的绝对值>4/n时认为是强影响点。

cooks.distance(model, infl = lm.influence(model, do.coef = FALSE),res = weighted.residuals(model),sd = sqrt(deviance(model)/df.residual(model)),hat = infl$hat, ...)

DFFITS准则

统计量i的绝对值>2√(p+1)/n则认为第i个样本的影响较大,p+1是β的维数,n是样本容量。

dffits(model, infl = , res = )

COVRATIO准则

若有一个样本点所对应的COVRATIO值离1越远,则认为该样本点影响越大。

covratio(model, infl = lm.influence(model, do.coef = FALSE),res = weighted.residuals(model))

影响分析的概括函数 influen.mesures(model)

每种方法找到的点是否是真正的强影响点,还需要根据具体情况进行分析。该函数返回一个列表,包括DFFITS统计量,COVRATIO统计量,Cook距离等。

例:电影院老板调查电视广告的费用X1和报纸广告的费用X2对每周总收入Y的影响(单位:元)试给出回归分析,并进行回归诊断。

> x1<-c(1500,1500,3300,4200,2000,2500,2300,2500)> x2<-c(5000,4000,3000,2500,2000,2500,3500,3000)> y<-c(96000,95000,95000,94000,90000,92000,95000,94000)> money<-data.frame(x1,x2,y)> lm.reg<-lm(y~x1+x2,money)> summary(lm.reg)Call:lm(formula = y ~ x1 + x2, data = money)Residuals:1 2 3 4 5 6 7 8 -845 492 492 -508 -483 -301 622 531 Coefficients:Estimate Std. Error t value Pr(>|t|) (Intercept) 8.32e+04 1.71e+03 48.55 7e-08 ***x11.30e+00 3.49e-01 3.72 0.01374 * x22.34e+00 3.31e-01 7.06 0.00088 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 700 on 5 degrees of freedomMultiple R-squared: 0.909,Adjusted R-squared: 0.872 F-statistic: 24.9 on 2 and 5 DF, p-value: 0.00251> influence.measures(lm.reg)Influence measures oflm(formula = y ~ x1 + x2, data = money) :dfb.1_ dfb.x1 dfb.x2 dffit cov.r cook.d hat inf1 1.98495 0.06107 -3.8115 -5.167 0.0461 2.2838 0.633 *2 0.11517 -0.26496 0.1105 0.533 1.7687 0.1018 0.301 3 -0.19968 0.33167 0.1285 0.468 1.7188 0.0791 0.262 4 0.88978 -1.56524 -0.3538 -1.871 1.8860 1.0056 0.660 *5 -1.53634 1.11782 1.4109 -1.633 2.1558 0.8133 0.645 *6 -0.16907 0.08580 0.1621 -0.242 2.1804 0.0233 0.226 7 -0.00772 -0.00518 0.1016 0.383 1.2356 0.0499 0.140 8 0.10067 -0.03095 -0.0686 0.305 1.4686 0.0335 0.132

可以看出第1、4、5个观测点为强影响点。第1个样本点的cook.d=2.2838>>4/8=0.5;第4个样本点的cov.r=1.8860与1距离很远;第5个样本点的|dffit|=1.633>>2√2/8=1,故这三个点被认为是强影响点。

8.4.3 共线性诊断

共线性问题是指拟合多元线性回归时,自变量之间存在线性关系或近似线性关系。这将会隐蔽变量的显著性,增加参数估计的误差,还会产生一个不稳定的模型。因此,共线性诊断就是找出哪些变量之间存在共线关系,主要有以下几种方法:

特征值法

把X‘X变换为主对角线是1的矩阵,然后求特征值和特征向量。若有r个特征值近似等于0,则回归设计阵X中有r个共线性关系,且共线性关系的系数向量就是近似为0的特征值对应的特征向量。

计算矩阵特征值和特征向量的函数:

eigen(x, symmetric, only.values = FALSE, EISPACK = FALSE)

x是所求矩阵;symmetric规定矩阵的对称性;only.values = FALSE表示返回特征值和特征向量,否则只返回特征值。

条件指数

若自变量的交叉乘积矩阵X’X的特征值为d21≥d22≥…≥d2k,则X的条件数d1/dk就是刻画矩阵的奇异性的一个指标,故称d1/dj ( j=1,…,k)为条件指数。

一般认为条件指数在10~ 30为弱相关;30 ~100为中等相关;大于100表明有强相关性。

kappa(z, exact = FALSE, norm = NULL, method = c("qr", "direct"), ...)

z是矩阵;exact = FALSE近似计算条件数,否则精确计算条件数。

方差膨胀因子VIF

是指回归系数的估计量由于自变量共线性使得方差增加的一个相对度。

对第j个回归系数,它的膨胀因子为:

 VIFj = 第j个回归系数的方差/自变量不相关时第j个回归系数的方差

 = 1/(1-R2j) = 1/TOLj

其中1-R2j是自变量xj对模型中其余自变量线性回归模型的R平方,TOLj 也称容限(Tolerence)。

一般VIF>10,表明模型中有很强的共线性问题。

vif(obj, digits=5)

例:某种水泥在凝固时单位质量所释放的热量为Y卡/千克,它与水泥中的四种化学成分有关。试对自变量的共线性进行诊断。

> x1<-c(7,1,11,11,7,11,3,1,2,21,1,11,10)> x2<-c(26,29,56,31,52,55,71,31,54,47,40,66,68)> x3<-c(6,15,8,8,6,9,17,22,18,4,23,9,8)> x4<-c(60,52,20,57,33,22,6,44,22,18,34,12,12)> y<-c(78.5,74.3,104.3,87.6,95.9,109.2,102.7,72.5,93.1,115.9,83.8,113.3,109.4)> cement<-data.frame(x1,x2,x3,x4,y)> lm.reg<-lm(y~x1+x2+x3+x4,cement)> summary(lm.reg)Call:lm(formula = y ~ x1 + x2 + x3 + x4, data = cement)Residuals:Min1Q Median3Q Max -3.278 -1.396 -0.237 1.165 4.038 Coefficients:Estimate Std. Error t value Pr(>|t|) (Intercept) 64.80422.887 2.83 0.0221 * x1 1.4800.360 4.12 0.0034 **x2 0.4920.229 2.15 0.0635 . x3 0.0510.330 0.15 0.8810 x4 -0.1560.212 -0.74 0.4820 ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 2.37 on 8 degrees of freedomMultiple R-squared: 0.983,Adjusted R-squared: 0.975 F-statistic: 119 on 4 and 8 DF, p-value: 3.74e-07> library(DAAG)> vif(lm.reg,digits=3)x1x2x3x4 9.544 26.936 9.513 31.357 > cor(x2,x4)[1] -0.948

X2 与 X4 的VIF>10,且线性相关系数接近0.95,因此可以肯定他们之间存在严重的共线性。

8.5 Logistic回归

线性回归分析要求响应变量Y是连续型变量。在研究两元分类响应变量与诸多自变量之间的相互关系时,常选用logistic回归模型。

Logistic回归

将两元分类响应变量Y的一个结果记为“成功”,另一个结果记为“失败”,分别用1和0表示。对响应变量Y有影响的p个自变量(解释变量)记为X1, X2,…, Xp,在p个自变量的作用下出现成功的条件概率记为p=P(Y=1|X1, X2,…,Xp)

logit(p)=ln(p/(1-p))=β0+β1X1+β2X2+…+βpXp

logistic回归模型(略),对其作logit变换可将其写成上述线性形式,进而使用线性回归模型对参数β进行估计。

广义线性模型

logistic回归模型属于广义线性模型的一种,是通常的正态线性模型的推广,要求响应变量只能通过线性形式依赖于解释变量。

1)基于正态分布的广义线性模型:(默认)

glm(formula, family = gaussian(link = identity), data=data.frame)

formula是拟合公式;family是分布族;link指定使用的连接函数;data数据框;

2)基于二项分布的广义线性模型:

glm(formula, family = binominal(link = logit), data=data.frame)

公式formula有两种输入方法,一种像线性模型通常数据的输入法,另一种是输入成功与失败的次数。

3)基于泊松分布的广义线性模型:

glm(formula, family = poisson(link = log), data=data.frame)

4)基于伽马分布的广义线性模型:

glm(formula, family = gamma(link = inverse), data=data.frame)

例:下表为对45名驾驶员的调查结果,其中X1表示视力状况(是一个分类变量,1表示好,0表示有问题);X2表示年龄;X3表示驾车教育(是一个分类变量,1表示参加过驾车教育,0表示没有);Y是分类型输出变量(1表示去年出过事故,0表示去年没有出过事故),试考察前三个变量与发生事故的关系。

> #输入数据> x1<-rep(c(1,0,1,0,1),c(5,10,10,10,10))> x2<-c(17,44,48,55,75,35,42,57,28,20,38,45,47,52,55,68,18,68,48,17,70,72,35,19,62,39,40,55,68,25,17,45,44,67,55,61,19,69,23,19,72,74,31,16,61)> x3<-c(1,0,1,0,1,0,1,0,0,0,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,1,1,0,0,1,0,0,0,0,0,1,1,0,1,0,1,1,0,1,1)> y<-c(1,0,0,0,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0,1,0,1,0,1,0,0)> accident<-data.frame(x1,x2,x3,y)> > #作logistic回归> log.glm<-glm(y~x1+x2+x3,family = binomial,data = accident)> summary(log.glm)Call:glm(formula = y ~ x1 + x2 + x3, family = binomial, data = accident)Deviance Residuals: Min1Q Median3QMax -1.564 -0.913 -0.789 0.964 1.600 Coefficients:Estimate Std. Error z value Pr(>|z|) (Intercept) 0.59760.8948 0.67 0.504 x1 -1.49610.7049 -2.12 0.034 *x2 -0.00160.0168 -0.10 0.924 x3 0.31590.7011 0.45 0.652 ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)Null deviance: 62.183 on 44 degrees of freedomResidual deviance: 57.026 on 41 degrees of freedomAIC: 65.03Number of Fisher Scoring iterations: 4> #模型诊断与更新:由于参数β2,β3没有通过检验,故用step()做变量筛选> log.step<-step(log.glm)Start: AIC=65.03y ~ x1 + x2 + x3Df Deviance AIC- x2 157.0 63.0- x3 157.2 63.2<none> 57.0 65.0- x1 161.9 67.9Step: AIC=63.03y ~ x1 + x3Df Deviance AIC- x3 157.2 61.2<none> 57.0 63.0- x1 162.0 66.0Step: AIC=61.24y ~ x1Df Deviance AIC<none> 57.2 61.2- x1 162.2 64.2> summary(log.step)Call:glm(formula = y ~ x1, family = binomial, data = accident)Deviance Residuals: Min1Q Median3QMax -1.449 -0.878 -0.878 0.928 1.510 Coefficients:Estimate Std. Error z value Pr(>|z|) (Intercept) 0.6190.469 1.32 0.187 x1 -1.3730.635 -2.16 0.031 *---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)Null deviance: 62.183 on 44 degrees of freedomResidual deviance: 57.241 on 43 degrees of freedomAIC: 61.24Number of Fisher Scoring iterations: 4> #预测分析> log.pre<-predict(log.step,data.frame(x1=1))> p1<-exp(log.pre)/(1+exp(log.pre));p11 0.32 > log.pre<-predict(log.step,data.frame(x1=0))> p2<-exp(log.pre)/(1+exp(log.pre));p21 0.65 说明视力有问题的司机发生交通事故的概率是视力正常的司机的两倍以上

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。