资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,结构方程中的缺失数据处理,EM、FIML、MI软件操作与理论探讨,李晓煦2006/10/06,香港中文大学教育心理系,lixiaoxucuhk.edu.hk,第一部分:软件操作,LISREL,8.7.2 专业的结构方程分析软件,FIML,EM,SAS,9.1.3 胜任大规模的数据,高强度的运算,MI,EM,R,2.3.1 开源的公共软件,灵活的自由编程,EM,MI,LISREL提供的例子,浏览LISREL的安装目录,打开子目录MISSINGEX,把数据文件grant.dat 和 程序文件MISSEX2A.ls8复制到自己创建的临时练习目录中,在应用任何一方法之前,检查数据是否因为缺失而错列,看最后,几,列数据的缺失率是否特别大,检查缺失值的标记,把不合理的数值改为缺失,用直方图、散点图概览,(尤其是,数据量,很,大时,),Excel中的数据预览,如何导入自由格式、列对齐格式数据到Excel,(数据,获取外部数据导入文本文件),如何在Excel中看直方图与描述统计量,(,工具,加载宏勾选“分析工具库”,确定,;工具数据分析选需要的统计分析功能,点“确定”在弹出窗口点“帮助”),当数据量大于65526或者变量多于256时,需要用LISREL或者SAS、R之类的软件,LISREL中的数据预览,导入数据:,File,Import Data选数据文件,确认设定临时数据文件名,确认手工设定变量个数、首行是否变量名,看多变量散点图、单变量直方图,Graphs,留意散点图中对鼠标右键功能的提示;,留意直方图中的样本量N,LISREL中需要定义缺失值,Data,Define Variables选变量,点Missing Values,LISREL图形界面中的缺失值设置,*全部的缺失值都写在下方Global missing values一栏;如果写在上方Missing values栏,Lisrel,8.7.2,会在某些场合不认。,*除了设置缺失值,Define Variables窗口中,还要点Variable Types设置变量类型,“EM”的两层意思,Expectation-Maximization(EM)是源自缺失数据处理的一种参数估计,算法,,在许多广泛应用的模型(比如HLM)上有重要的应用,缺失数据中的EM方法特指用EM算法从含缺失的数据估计出协方差/相关系数矩阵、均值向量。大部分多元统计模型只需要协方差和均值输入。SEM只是其中一种。,LISREL,8.7.2,中的EM方法,标记好缺失数据后,就可以在图形界面作EM估计(Statistics,Multiple Imputation在弹出的窗口按缺省设置点run拷贝编辑.out 文件输出的协方差矩阵,作为.ls8文件的输入数据,MI实际上是Multiple Imputation的缩写。但LISREL,8.7.2,并不提供完整的MI功能。EM是三个方法中最容易实现的方法,所以FIML和MI都缺省地利用EM方法来提供迭代的初值。,什么是,Full Information Maximizing-Likelihood,与EM、MI方法不同,FIML缺失数据方法只针对SEM。,假如所有的观测缺失的变量都相同,等同于缺失的变量从模型里去掉。,按缺失的模式把所有的观测分组,每组内的数据缺失的变量都相同。分组建模,再限制各组的参数相等,就是FIML方法。,FIML方法的具体实现变化很多,不同的软件有所差别。,LISREL,8.7.2,中的FIML法,FIML方法不计算协方差矩阵,而是直接对样本数据建模。看例子MISSEX2A.ls8,DA NI=6,MI=-9,RA FI=GRANT.dat,RA就是Raw data,FI就是File;这一句取代了通常CM/KM语句的协方差矩阵输入。,此外,在DA句中MI就是Missing Value,表示数据中-9用来标记缺失数据。,Multiple Imputation,方法,与,Single Imputation对比Single Imputation,就是把所有缺失位置给一个修补的数值,用修补的结果建模,Multiple Imputation,就是按某种特定的随机抽样法则去修补。对多个修补的版本分别建模,然后汇总各个版本的参数估计结果。,SAS中的MI与EM方法,SAS是昂贵的商业软件,胜任大规模(比如样本量超过10万)或高运算量的数据处理与统计。,SAS的帮助文档内容翔实,范例很具体。但规模太大,组织稍有些乱,初学者往往不能迅速查到。,MI方法适用于一般的多元统计模型,比如多层分析。SAS9的MI方法(附带EM)子程序是Proc MI,能提供原始数据替算缺失值的多组采样版本,此外还提供了Proc MIANALYZE用于合并各个采样版本对应的模型估计结果。,SAS,提供的,EM,与,MI,的范例,EM方法的范例,http:/ MIANALYZE汇总为最后的结果。,*例子中做的是多元回归模型。SAS中分析结构方程模型的子程序是Proc CALIS,参考,http:/ MIAnalyze中要把旧版本的var改成新版本的modeleffects,SAS的MI范例解析,原始含缺失的数据,(,Proc MI,),抽样,m份修补的数据,(,模型估计,),m份参数估计结果,(,Proc MIAnalyze,),合并一份最终结果,R中的EM、MI方法,Copyleft v.s.Copyright,Copyleft,或译为“公共版权”、“版权左派”。,Copyleft软件提供源代码,允许用户修改、传播,但禁止化公为私。任何人利用Copyleft源代码创作的软件也必须按Copyleft条款发布。但只限于软件,不包含书籍文章。,R程序任何的扩展程序包都免费并开放源代码。但关于R的文章或书籍仍可以有版权。,参考:https:/secure.wikimedia.org/wikipedia/zh/wiki/Copyleft/,在R中安装norm程序包,要在R中应用EM方法,需要安装专门处理缺失数据多元统计的norm程序包。norm包的主页是:,http:/cran.r-project.org/src/contrib/Descriptions/norm.html,可以下载norm压缩包,把压缩包里的norm文件夹保存到R安装目录的子目录.library 下;也可以在主窗口菜单下选择更新网站的镜像,Packages,Set CRAN Mirror,,然后点,Packages,Install Package(s),,在弹出的程序包选项里选择需要添装的项目)。,在R中启动程序包,每次启动norm程序包,需要在主窗口菜单点,Packages-Load package.,在弹出的窗口中选 norm,然后,点,确认。,在命令窗里输入:,help(em.norm),回车,弹出的帮助窗口解释,em.norm,的用法。首先从最后一段的实例入手。这段例子可以直接copy运行,得到EM估计的协方差矩阵,:,data(mdata)#这一句把数据框mdata载入 s thetahat getparam.norm(s,thetahat,corr=TRUE)$r#look at estimated correlations,1,2,3,4,51,1.00000000 0.88753257-0.09642342 0.4889176 0.71459532,0.88753257 1.00000000 0.09345297 0.5197721 0.54299593,-0.09642342 0.09345297 1.00000000 0.2930083-0.35982094,0.48891759 0.51977207 0.29300826 1.0000000 0.30290665,0.71459529 0.54299589-0.35982094 0.3029066 1.0000000,R中的EM方法,中的数据框,ageh agew edu inc kid,1 34 30 12 40000 12 45 44 16 60150 33 42 42 17 55300 24 30 22 12 60200 25 53 46 10 65800 46 33 35 12 34500 27 67 44 12 83500 58 28 28 16 41000 39 30 28 15 15000 010 43 NA NA 41260 211 34 30 17 55000 112 40 NA 7 67050 313 67 55 NA 78000 314 34 30 16 NA 215 25 26 12 NA 116 44 40 20 67800 217 36 NA 18 83200 118 42 37 NA NA 319 22 22 7 32000 220 38 NA 0 25000 321 65 NA 5 70000 422 34 36 12 85000 123 40 35 16 NA NA24 38 38 18 95000 225 41 37 12 NA 2,在命令窗口输入:mdata 回车,,,看这个例子所用的数据。其中NA在R中标记缺失数据。,实际应用中,用户还需要掌握与R交换数据的技术,把自己的数据输入到R形成例子中的mdata数据框,把计算出来的相关系数矩阵存成外部文件。,*建议初次接触R的读者首先花一个学时,通过在R中,作,练习,学习李东风老师的,在线入门,讲义,前半部分(至输入输出一节)。,R中的,“缺失模式”,报告,注意语句,s-prelim.norm(mdata)#do preliminary manipulations,输入 s 回车看这个预处理的结果,1,2,3,4,5,14 1 1 1 1 1,4 1 0 1 1 1,1 1 1 0 1 1,1 1 0 0 1 1,3 1 1 1 0 1,1 1 1 0 0 1,1 1 1 1 0 0,1 ,2 ,3 ,4 ,5,1,-0.53008882-0.63531440-0.1731410-0.8248034-1.1088319,2,0.41039134 1.05885733 0.6733260 0.1121561 0.6652991,14,-0.18809603 0.33278373 1.0965595 1.7326544-0.2217664,15,-0.01709964 NA-1.2312246 0.4330008 0.6652991,18,2.12035526 NA-1.6544581 0.5701736 1.5523647,19,2.29135165 2.38999225 NA 0.9421674 0.6652991,20,0.23939495 NA NA-0.7662143-0.2217664,.,R的MI方法与sem包,R的norm包还提供了应用于一般MI方法的子程序。在命令窗里输入help(mi.inference)和help(imp.norm)看相关的帮助。更专业的MI方法软件包是,mitools,。,在R中分析结构方程模型,需要安装运行,sem,程序包,参考,Fox,J.(2006),Structural equation modeling wiith the,sem,package in R,.,Structural Equation Modeling,13:465-486,第二部分:理论背景与方法比较,理念与现状,Rubin的理论框架,EM、FIML、MI各自的原理,三种方法对比,无偏性与效率,软件界面便利性,相互关系,实质性困难,现状
展开阅读全文