回归分析 线性回归 Logistic回归 对数线性模型 吴喜之
回归分析 顾客对商品和服务的反映对于商家是至关重要的,但是仅仅有满意顾客的比例是不够的,商家希望了解什么是影响顾客观点的因素以及这些因素是如何起作用的。 一般来说,统计可以根据目前所拥有的信息(数据)建立人们所关心的变量和其他有关变量的关系(称为模型)。 假如用Y表示感兴趣的变量,用X表示其他可能有关的变量(可能是若干变量组成的向量)。则所需要的是建立一个函数关系Y=f(X)。这里Y称为因变量或响应变量,而X称为自变量或解释变量或协变量。 建立这种关系的过程就叫做回归。
回归分析 一旦建立了回归模型 可以对各种变量的关系有了进一步的定量理解 还可以利用该模型(函数)通过自变量对因变量做预测。 这里所说的预测,是用已知的自变量的值通过模型对未知的因变量值进行估计;它并不一定涉及时间先后的概念。
例1 有50个从初中升到高中的学生.为了比较初三的成绩是否和高中的成绩相关,得到了他们在初三和高一的各科平均成绩(数据:highschool.sav) 从这张图可以看出什么呢?
还有定性变量 该数据中,除了初三和高一的成绩之外,还有一个定性变量 它是学生在高一时的家庭收入状况;它有三个水平:低、中、高,分别在数据中用1、2、3表示。
还有定性变量 下面是对三种收入对高一成绩和高一与初三成绩差的盒形图
例1:相关系数
SPSS的相关分析 相关分析(hischool.sav) 利用SPSS选项:Analize-Correlate-Bivariate 再把两个有关的变量(这里为j3和s1)选入,选择Pearson,Spearman和Kendall就可以得出这三个相关系数和有关的检验结果了(零假设均为不相关)。
定量变量的线性回归分析 对例1中的两个变量的数据进行线性回归,就是要找到一条直线来最好地代表散点图中的那些点。
R2 (决定系数) =SSR/SST,可能会由于独立变量增加而增加(有按自由度修正的决定系数:adjusted R2), 检验问题等 对于系数b1=0的检验 对于拟合的F检验 R2 (决定系数) =SSR/SST,可能会由于独立变量增加而增加(有按自由度修正的决定系数:adjusted R2), 简单回归时R等于相关系数
回到例1:R2等
SPSS的回归分析 自变量和因变量都是定量变量时的线性回归分析(hischool.sav) 利用SPSS选项:Analize-Regression-Linear 再把有关的自变量选入Independent,把因变量选入Dependent,然后OK即可。如果自变量有多个(多元回归模型),只要都选入就行。
多个自变量的回归 如何解释拟合直线? 什么是逐步回归方法?
例子:RISKFAC.sav 不算序号和(192个)国家有21个变量 包括地区(Region)、(在城镇和乡村)使用干净水的%、生活污水处理的%、饮酒量(litre/yearperson)、(每万人中)内科医生数目、护士和助产士数、卫生工作者数、病床数、护士助产士和内科医生之比、卫生开支占总开支的%、占政府开支的%、人均卫生开支$、成人识字率、人均收入$、每千个出生中5岁前死亡人数、人口增长率%、(男女的)预期寿命(年)、每10万生育的母亲死亡数
例子:RISKFAC.sav 该数据有许多相关的变量和许多缺失值 假定要用各种变量描述每千个出生中5岁前死亡人数(因变量) 可以先做两两相关 也可以做定量变量的两两散点图等等 或者用逐步回归淘汰变量 目的在于摸清关系的底细
例子:RISKFAC.sav:相关
例子:RISKFAC.sav:逐步回归 选中女性预期寿命和农村干净水的%作为自变量(第二个自变量相对不那么显著pvalue=0.019) 模型:女性预期寿命 模型:农村干净水的% 选中女性预期寿命和农村干净水的%作为自变量(第二个自变量相对不那么显著pvalue=0.019)
RISKFAC.sav:散点图及自变量相关性Pearson相关
RISKFAC.sav:散点图及自变量相关性 非参数度量 Kendall Spearman
介绍三个检查异常点的统计量 残差(Residual).(本例用SPSS中的一种),它描述了样本点到回归直线的远近程度。 杠杆值(Levarage)。 它描述距离数据总体的远近。高杠杆点对回归的参数影响较大,但其残差通常较小。 Cook统计量。它结合了残差和杠杆值,因此反映了残差和杠杆二者的影响(较全面)
全模型(两个自变量:女性预期寿命和农村干净水的%)
RISKFAC.sav: 全模型异常点诊断: 残差 153(Sierra Leone ) 192(Zimbabwe ) 23(Botswana) 96(Lesotho ) 模型:女性预期寿命 模型:农村干净水的%
RISKFAC.sav: 全模型异常点诊断 高杠杆点 140(Romania ) 23(Botswana) 192 (Zimbabwe ) 模型:女性预期寿命 模型:农村干净水的%
RISKFAC.sav: 全模型异常点诊断 Cook距离 23(Botswana) 96(Lesotho) 192 (Zimbabwe ) 140(Romania ) 模型:女性预期寿命 模型:农村干净水的%
模型1 因变量和自变量之一的散点图 X:女性预期寿命(年) Y:每千个出生中5岁前死亡人数
RISKFAC.sav:只用女性预期寿命作为自变量 模型:全模型 模型:农村干净水的%
RISKFAC.sav 模型1异常点诊断 残差 192 (Zimbabwe ) 23(Botswana) 96(Lesotho) 模型:全模型 模型:农村干净水的% 23(Botswana) 96(Lesotho)
RISKFAC.sav: 模型1异常点诊断 高杠杆点 不太突出 模型:全模型 模型:农村干净水的%
RISKFAC.sav: 模型1异常点诊断 Cook距离 23(Botswana) 96(Lesotho) 192 (Zimbabwe ) 模型:全模型 模型:农村干净水的%
模型2 因变量和自变量之一的散点图 X:农村干净水使用% Y:每千个出生中5岁前死亡人数
RISKFAC.sav:只用农村净水使用% 模型:全模型 模型:女性预期寿命
RISKFAC.sav 模型2异常点诊断 残差 模型:全模型 模型:女性预期寿命 140(Romania )
RISKFAC.sav: 模型2异常点诊断 高杠杆点 不太突出 模型:全模型 模型:女性预期寿命
RISKFAC.sav: 模型2异常点诊断 Cook距离 140(Romania ) 模型:全模型 模型:女性预期寿命
对该例子(RISKFAC.sav)的结果解释 单独用第一个自变量比单独用第二个较好 模型1(相应于模型)的“异常点”为一些非洲国家;它们可能不适合用这个模型。 模型2(相应于模型)的“异常点”为Romania;它可能不适合用这个模型。 从散点图来看,第一个模型更加线性。 两个自变量的模型的“异常点”为单独模型“异常点”的混合。 其实,用一个自变量就够了。这两个自变量是相关的。当然是用第一个了。可能把异常点排除后再重新建模更好。
自变量中有定性变量的回归 例1的数据中,还有一个自变量是定性变量“收入”,以虚拟变量或哑元(dummy variable)的方式出现;这里收入的“低”,“中”,“高”,用1,2,3来代表.所以,如果要用这种哑元进行前面回归就没有道理了. 以例1数据为例,可以用下面的模型来描述:
自变量中有定性变量的回归 现在只要估计b0, b1,和a1, a2, a3即可。
例子:RISKFAC.sav:因变量:成人识字率, 自变量:区域(属性变量)、人口增长率、人均收入
SPSS实现(hischool.sav) Analyze-General linear model-Univariate, 在Options中选择Parameter Estimates, 再在主对话框中把因变量(s1)选入Dependent Variable,把定量自变量(j3)选入Covariate,把定量因变量(income)选入Factor中。 然后再点击Model,在Specify Model中选Custom, 再把两个有关的自变量选入右边,再在下面Building Term中选Main effect。 Continue-OK,就得到结果了(系数和检验等)
SPSS Syntax: UNIANOVA s1 BY income WITH j3 /METHOD = SSTYPE(3) /INTERCEPT = INCLUDE /CRITERIA = ALPHA(.05) /DESIGN = income j3 .
注意 这里进行的线性回归,仅仅是回归的一种,也是历史最悠久的一种。 但是,任何模型都是某种近似; 线性回归当然也不另外。 它被长期广泛深入地研究主要是因为数学上相对简单。 它已经成为其他回归的一个基础。 总应该用批判的眼光看这些模型。
例2 这是200个不同年龄和性别的人对某项服务产品的认可的数据(logi. sav) 从这两张图又可以看出什么呢?
Logistic 回归 例2是关于200个不同年龄,性别的人对某项服务产品的观点(二元定性变量)的数据(logi.sav). 这里观点是因变量, 只有两个值;所以可以把它看作成功概率为p的Bernoulli试验的结果. 但是和单纯的Bernoulli试验不同,这里的概率p为年龄和性别的函数. 可以假定下面的(logistic回归)模型
Logistic 回归 为了循序渐近,先拟合没有性别作为自变量(只有年龄x)的模型
Logistic模型拟合结果 依靠计算机,很容易得到b0和b1的估计分别为2.380和-0.069。拟合的模型为
Logistic模型拟合结果 再加上性别变量进行拟合,得到的b0, b1和a0, a1的估计(同样事先确定为a1=0)分别为1.722, -0.072, 1.778, 0.可以看出年龄影响对男女混和时(0.069)差不多,而女性相对于男性认可的可能性大(a0-a1=1.778)。
拟合的年龄-概率图
这里p值=0.602(不显著)。注意:在这里“显著”意味着拟合不好! 拟合优度检验 Hosmer-Lemeshow-goodness-of-fit 这里p值=0.602(不显著)。注意:在这里“显著”意味着拟合不好!
SPSS的Logistic回归(logi.sav) 自变量为定量变量时:利用SPSS选项:Analize-Regression-Binary Logistic, 再把因变量(opinion)选入DependentVariable,把自变量(age)选入Covariates,OK即可得到结果。 自变量为定量变量及定量变量时:利用SPSS选项:Analize-Regression-Binary Logistic, 再把因变量(opinion)选入DependentVariable,把自变量(age和sex)选入Covariates,然后点Categorical,再把定性变量sex选入Categorical Covariate,回到主对话框, 可在options选择Hosmer-Lemeshow-goodness-of-fit检验(检验拟合优度) 点击OK即可得到结果。
多项分布对数线性模型 Poisson对数线性模型
前面例子原始数据是个三维列联表,对三维列联表的检验也类似。 高维列联表和多项分布对数线性模型 前面例子原始数据是个三维列联表,对三维列联表的检验也类似。 但高维列联表在计算机软件的选项可有所不同,而且可以构造一个所谓(多项分布)对数线性模型(loglinear model)来进行分析。 利用对数线性模型的好处是不仅可以直接进行预测,而且可以增加定量变量作为模型的一部分。
多项分布对数线性模型 现在简单直观地通过二维表介绍一下对数线性模型,假定不同的行代表第一个变量的不同水平,而不同的列代表第二个变量的不同水平。用mij代表二维列联表第i行,第j列的频数。人们常假定这个频数可以用下面的公式来确定: 这就是所谓的多项分布对数线性模型。这里ai为行变量的第i个水平对ln(mij)的影响,而bj为列变量的第j个水平对ln(mij)的影响,这两个影响称为主效应(main effect);eij代表随机误差。
多项分布对数线性模型 这个模型看上去和回归模型很象,但由于对于分布的假设不同,不能简单地用线性回归的方法来套用(和Logistic回归类似);计算过程也很不一样。当然我们把这个留给计算机去操心了。只要利用数据来拟合这个模型就可以得到对于参数m的估计(没有意义),以及ai和bj的“估计”。 有了估计的参数,就可以预测出任何i,j水平组合的频数mij了(通过其对数)。 注意,这里的估计之所以打引号是因为一个变量的各个水平的影响是相对的,因此,只有事先固定一个参数值(比如a1=0),或者设定类似于Sai=0这样的约束,才可能估计出各个的值。没有约束,则这些参数是估计不出来的。
多项分布对数线性模型 二维列联表的更完全的对数线性模型为 这里的(ab)ij代表第一个变量的第i个水平和第二个变量的第j个水平对ln(mij)的共同影响(交叉效应)。即当单独作用时,每个变量的一个水平对ln(mij)的影响只有ai(或bj)大,但如果这两个变量一同影响就不仅是ai+bj,而且还多出一项。 这里的交叉项的诸参数的大小也是相对的,也需要约束条件来得到其“估计”;涉及的变量和水平越多,约束也越多。
注意,无论你对模型假定了多少种效应,并不见得都有意义;有些可能是多余的。本来没有交叉影响,但如果写入,也没有关系,在分析过程中一般可以知道哪些影响是显著的,而那些是不显著的。
用table7.sav数据拟合对数线性模型 假定(多项分布)对数线性模型为 这里ai为收入(i=1,2,3代表收入的低、中、高三个水平),bj为观点(j=1,2代表不赞成和赞成两个水平),gk为性别(k=1,2代表女性和男性两个水平), mijk代表三维列联表对于三个变量的第ijk水平组合的出现次数,eijk为残差 而从相应的参数估计输出结果,可以得到对ai的三个值的估计为0.5173, 0.2549,0.0000,对bj的两个值的估计为-0.6931,0.0000,对gk的两个值的估计为 0.1139,0.0000。(多项对数线性模型常数无意义,输出的常数项仅仅是数学意义)
SPSS输出 就这里的三维列联表问题,如只考虑各个变量单独的影响,而不考虑变量组合的综合影响,其SPSS输出的Pearson c2统计量和似然比c2统计量得到的p-值分别为0.0029和0.0011。
SPSS输出
SPSS的实现 [数据table7.sav] 假定已加权 (加权一次并存盘了既可) 这时的选项为Analyze-Loglinear-General, 首先选择格子中频数的分布,这里是多项分布 (其默认值是Poisson对数线性模型). 把三变量(sex,opinion,income)选入Factors(因子); 再选Model(模型),如果选Saturated(饱和模型),那就是所有交叉效应都要放入模型;但如果不想这样,可以选Custom(自定义),在Building Terms(构造模型的项)选Main effect(主效应),再把三个变量一个一个地选进来(如果两个或三个一同选入,等于选入交叉效应). 如果想要知道模型参数,在Options中选择Estimates。 最后Continue-OK即可得出结果. 在计算机输出的结果中可以找到我们感兴趣的结果。 如果SPSS的Viewer输出不完全,可以选中不完全的输出,利用Edit-Copy Objects来复制到例如记事本那样的文件中,就可以看到完整输出了
Poisson对数线性模型 有的时候,类似的高维表并不一定满足多项分布对数线性模型。下面看一个例子。这是关于哮喘病人个数和空气污染程度,年龄和性别的数据(asthma.sav) 后面表格为某地在一段时间记录的60组在不同空气污染状态的不同年龄及不同性别的人的发生哮喘的人数。 其中性别为定性变量S(sex, 1代表女性,2代表男性), 空气污染程度P也是定性变量(polut, 1、2、3分别代表轻度、中度和严重污染), 年龄A (age)为定量变量,为那一组人的平均年龄; 还有一列计数C (count)为这一组的哮喘人数。 这个表格和前面的列联表的不同点在于每一格的计数并不简单是前面三个变量的组合的数目(某个年龄段,某种性别及某种污染下的人数),而是代表了某个年龄段,某种性别及某种污染下发生哮喘的人数。
Poisson分布简介 在某些固定的条件下, 人们认为某些事件出现的次数服从Poisson分布, 比如在某一个时间段内某种疾病的发生病数, 显微镜下的微生物数, 血球数, 门诊病人数, 投保数, 商店的顾客数, 公共汽车到达数, 电话接通数等等. 然而, 条件是不断变化的. 因此, 所涉及的Poisson分布的参数也随着变化.
Poisson对数线性模型 假定哮喘发生服从Poisson分布;但是由于条件不同,Poisson分布的参数l也应该随着条件的变化而改变。这里的条件就是给出的性别、空气污染程度与年龄。当然,如何影响以及这些条件影响是否显著则是我们所关心的。这个模型可以写成 这里m为常数项,ai为性别(i=1,2分别代表女性和男性两个水平),bj为空气污染程度(j=1,2,3代表低、中高三个污染水平),x为连续变量年龄,而g为年龄前面的系数,eij为残差项。
Poisson对数线性模型 从对于数据(asthma.sav)的Poisson对数线性模型的相应SPSS输出,可以得到对m的估计为4.9820,对ai的两个值的“估计”为-0.0608、 0.0000,对bj的三个值的“估计”为-0.1484,0.1223、0.0000,对g的估计为 0.0126。 注意,这里的对主效应aI和bj的估计只有相对意义;它们在一个参数为0的约束条件下得到的。 从模型看上去,年龄和性别对哮喘影响都不那么重要。轻度污染显然比中度污染和严重污染哮喘要好。但是似乎严重污染时哮喘稍微比中度污染少些(差别不显著)。 通过更进一步的分析(这里不进行),可以发现,中度和严重空气污染(无论单独还是一起)和轻度空气污染比较都显著增加哮喘人数,而中度及严重污染时的哮喘人数并没有显著区别。
SPSS的实现 [数据asthma.sav] 假定已经加权 这时的选项为Analyze-Loglinear-General, 首先选择格子中频数的分布,这里是Poisson分布。 然后把两个变量(sex,polut)选入Factors(因子),把age选入Cell Covariate(s)。 再选Model(模型),这里以选Custom(自定义),在Building Terms(构造模型的项)选Main effect(主效应),再把三个变量一个一个地选进来。 如果想要知道模型参数,在Options中选择Estimates。最后Continue-OK即可得出结果。 在结果中可以找到有关Pearson c2统计量和似然比c2统计量的检验结果及参数的估计(如果SPSS的Viewer输出不完全,可以选中不完全的输出,利用Edit-Copy Objects来复制到例如记事本那样的文件中,就可以看到完整输出了)。
下面是实验数据的方差分析和一般线性模型