档案

Posts Tagged ‘数据预处理’

如何处理严重的缺省值问题?

2010/10/13 留下评论

L @ 2010-10-11:

您在博客中讲解如何报告回归分析时,提到:“但变量常有缺省值,这时模型的个案数就会小于样本数、有时两者相差很大(当然是个严重问题),所以一定要报告前者。”

我在处理一批调查数据,遇到了严重的缺省值问题。我的样本有近千人,用媒体使用的三个自变量和三个人口控制变量(简称X1-X6)对因变量(简称Y)做回归分析,只剩下300个案。请问对此如何处理。

庄主 @ 2010-10-13:

数据缺省值是定量研究者人人遇到都头痛的问题。因为缺省值就是数据里没有信息,巧妇难为无米之炊。

我看了你的数据,主要问题在于X1-X3等3个变量上的缺省值太多(各有200-400个缺省值不等)。如果去掉这三者,会有600余人个人留下来,大概可以接受。但是,这三个自变量是你研究的核心变量,如果删掉它们而只留下3个人口控制变量,也就难以成为传播学研究了。真是一个两难问题。

现在流行一种“Missing Value Analysis“(MVA,即“缺省值分析”),SPSS下属的结构方程模型软件AMOS中就有MVA工具。其基本思想是根据已知信息去预测(即填补)缺损信息。具体操作步骤如下:

1. 假定样本数据中有十个变量(已经用于回归分析的X1-X6和Y,以及没有用上的Z1-Z3),先把Y放一边,分别分析其中八个变量与第就个变量之间的关系。即:

X1 = b0 + b1X2 + b2X3 + b3X4 + b4X5 +b5X6 + b6Z1 + b7Z2 + b8Z3             (1)

X2 = b0 + b1X1 + b2X3 + b3X4 + b4X5 +b5X6 + b6Z1 + b7Z2 + b8Z3             (2)

X3 = b0 + b1X1 + b2X2 + b3X4 + b4X5 +b5X6 + b6Z1 + b7Z2 + b8Z3             (3)

注意,这里每个模型的有效样本数为该模型所有九个变量(包括因变量Y和八个自变量)上都没有非缺省值的个案数。在你的案例中大概是600多人。

2. 根据模型1-3的结果参数(即b0-b8)来分别预测X1-X3上的缺省值。假定模型1的结果是:

X1’ = 0.5 + 1.0X2 + 1.5X3 + 2.0X4 + 2.5X5 +3.0X6 – 2.0Z1 + 3.0Z2 + 1.0Z3    (4)

那么,就可以根据那些在X1上有缺省值的个案的X2-X6和Z1-Z3的实际数值而预测出(填补进)他们在X1上可能取的值(记为X1’)。同理,可以预测出X2或X3缺省值的可能取值(分别记为X2’和X3’)。

3. 最后将填补后的X1-X3(即X1’, X2’, X3’)放回你一开始想做的回归模型,即

Y = b0 + b1X1’ + b2X2’ + b3X3’ + b4Z1 + b5Z2 + b6Z3                                  (5)

MVA是否合理和有效,取决于以下三个条件能否同时被满足:

一、每个模型中的所有就个变量上上没有(或是很少)缺省值,否则“救”不回多少个案。假如每个变量有30个缺省值(即只占样本的3%),看来微不足道,但是如果每个变量上的30个缺省值发生在不一样的个案上,那么就有30X9=270个案无法就回。

二、每个模型有一定的解释力(如R平方在0.20以上,当然越高越好),这决定了用该模型中八个自变量去预测Y的validity(效度)。

三、每个变量上的缺省值是完全随机(completely random)产生的,即不受任何规律制约;不然,必须将影响缺省值产生的因素放进模型中去。

以上条件一和二是可以从已有数据中计算出来的。如果一和二无法成立,那么就则是彻彻底底的无米之炊了。如果条件一和二问题不大,那就需要看条件三了。

条件三一般是无从得道的。不过根据前人研究(包括我自己做过的一个大型研究),缺省值的发生一般都不是完全随机的。也就说,使用MVA在大部分情况下都是有风险的。缺省值产生的随机性越低、用MVA的风险就越高。

以上是现有文献中对MVA的基本看法。此外,我个人觉得用数据中除了因变量之外的所有变量来预测缺省值的做法有totalogy(自我循环)之弊端。以本案为例,你比较一下模型4与模型5,就不难看出Z1-Z3对Y的影响出现了四次:一次是自己的直接影响(模型5)而另三次是分别通过X1’、X2’和X3’的间接影响。这在理论上和方法上都有问题(如X1’-X3’与它们的预测值Z1-Z3之间有共线性)。

我认为,解决上述问题的一个办法是将Z1-Z3从模型1-3中去掉。就是说,只用模型5之外的变量来预测X1-X3的缺省值。如此填补出来的X1’-X3’在模型5中与Z1-Z3应该没有过高的共线性;同时,Z1-Z3对Y的影响只被估计一次。当然,这种方法并无法解决X1-X3中缺省值非随机产生的问题。

最后还是那句话,缺省值就是数据中缺乏信息。MAV或其它任何统计方法(包括我提出的改进方法)都无法根本解决信息不足甚至信息匮乏的问题。

如何绘制个人增长曲线图?

2010/04/18 留下评论

>

Z @ 2010-04-15:

我们有一3个wave的panel样本,用GLM Repeated Measures分析数据,并从中画出三个时间点上样本的平均值。我们写了一篇论文投给某国际期刊,有位评审人要求我们随机抽取10人,在同一图里显示各自的growth curves。我们在SPSS中试了很久,怎么也无法制作这种图。不知是否可以在SPSS中“自动”做到?

庄主 @ 2010-04-18:

最近我教的统计课里,也有一位同学提出相同的问题,其答案在于纵向数据的特殊结构。一般说来,纵向数据的结构有“矮胖型”和“瘦长型”两种。但你们需要的是第三种结构。

矮胖型数据与更常见的横向数据相似,每一列是一个变量、每一行是一个个案,由于纵向数据的因变量有多个时点的观测值,每个观察值被当做一个变量,分别占领一列,一般在因变量名后加下标1、2、…、t(t=时间点个数)来显示各自的观测时间点。所以,这种结构的正式学名叫做“multivariate format”(因变量多列型)。如表一代表你们的数据,其中Y1、Y2和Y3是因变量Y在三个时间点上的观察值,注意它们是被当做三个变量分别各占据一列,X是自变量(只测量一次,所以只有一列)、最后的“…”表示还可以有其它自变量。GLM、SEM等都是使用这种结构的数据。但是,这种数据无法用来制作“intrapersonal growth curves”。

表一、因变量多列型数据结构(n行记录、t列因变量)

ID Y1 Y2 Y3 X
1 y11 y12 y13 x1
2 y21 y22 y23 x2
n yn1 yn2 yn3 xn

在瘦长型结构中,因变量只占一列,但是每个个案占三列,因此因变量y1、y2和y3分布在这三行之中(见表二)。为了保留Y的观测时间点,新增加了一个变量Time,取值1、2、…、t。这种结构的正式学名叫做“multirecord format”(个案多行型),是HLM和其他多层分析软件所要求的数据格式。在这种数据结构中,你可以通过选择个人的ID来显示一个人的增长曲线,但也无法在同一图中显示多人的增长曲线。

表二、个案多行型数据结构(n x t行记录、1列因变量)

ID Time Y X
1 1 y11 x1
1 2 y12 x1
1 3 y13 x1
2 1 y21 x2
2 2 y22 x2
2 3 y23 x2
n 1 yn1 xn
n 2 yn2 xn
n 3 yn3 xn

如要在同一图中显示多条增长曲线,需要将矮胖型或瘦长型数据转换成第三种结构,这在文献中还没有专门的名称,我姑且称之为individuals-as-variables format(“每人一列型”),如表三所示。这种结构更加“奇怪”,每一列是一个人的因变量或自变量,而每一行是一个时间点。本例t = 3,所以只有三行,比起矮胖型的n行来更加矮胖了。这种结构不适合做统计分析,但十分适合做各种图形,如可以做以Time为X-轴、单个或多个Y为Y-轴的增长曲线,也可以做以X为X-轴、Y为Y-轴的个人层面X-Y散点图。

表三、每人一列型数据结构(t行记录、n列因变量)

Time ID1_Y ID1_X ID2_Y ID2_X IDn_Y IDn_X
1 y11 x1 y21 x2 yn1 xn
2 y12 x1 y22 x2 yn2 xn
3 y13 x1 y23 x3 yn3 xn

好了,根据上述原理,你可以按需要而将数据在这三种结构之间互相转换。当然,如果你会使用SPSS的Syntax指令,确实可以用以下(或类似)的指令来“自动化”操作(注:指令中的大写字母是SPSS指令、小写字母是可以替代的变量名或文件名)。

*1. 假定你的数据是矮胖型结构,首先转换成瘦长数据.
VECTOR j=y1 to y3.
LOOP i=1 to 3.
COMPUTE y=j(i).
COMPUTE time=i.
XSAVE OUT ‘r:\temp.sav’/KEEP id time y x.
END LOOP.
EXE.

*2. 随机抽取10个个案.
SAMPLE 10 FROM 100.  
EXE.
MATCH FILES FILE */KEEP id.    /*只保留被抽取的id.
AUTORECODE id/into newid.      /*对id重新排序.

*3. 与瘦长数据并行对接.
MATCH FILES TABLE */FILE ‘r:\temp.sav’/BY id.
SELECT IF newid>0.     /*剔除没有newid的个案.
EXE.

*4. 从瘦长数据中逐个提取个案,分别保留到单独文件中.
DEFINE !newcase (!POS, !CMDEND).
!DO !i !IN (!1).
TEMP.
SELECT IF newid=!i.
SAVE OUT !QUOTE(!CONCAT(‘r:\newcase’, !i, ‘.sav’))
  /KEEP time y x
  /rename (y=!concat(‘y’, !i)/rename (x=!concat(‘x’, !i).
!DOEND.
!ENDDEFINE.
!newcase 1 2 3 4 5 6 7 8 9 10.
EXE.

*5. 将10个单独文件平行对接起来,构成最后的“个案每列”结构.
MATCH FILES FILE ‘r:\newcase1.sav’
  /FILE ‘r:\newcase2.sav’
  /FILE ‘r:\newcase3.sav’
  /FILE ‘r:\newcase4.sav’
  /FILE ‘r:\newcase5.sav’
  /FILE ‘r:\newcase6.sav’
  /FILE ‘r:\newcase7.sav’
  /FILE ‘r:\newcase8.sav’
  /FILE ‘r:\newcase9.sav’
  /FILE ‘r:\newcase10.sav’.
EXE.

*6. 打印10个因变量对时间的散点图.
TSPLOT y1 y2 y3 y4 y5 y6 y7 y8 y9 y10/ID=time.

以下是步骤6制作的10条“个人增长曲线“图,估计就是你们要画的那种了。

image

如何在SPSS里删除重复ID的个案?

2009/08/02 留下评论

>

L @ 2009-08-01:

如果在SPSS数据库里有一个变量是对case的编号,现在有可能某些case 是重复出现的,我想要将重复出现的case只保留一个,其余重复则删除掉,怎么完成这个任务?(除了手动的以外。)

庄主 @ 2009-08-02:

SPSS13版或之后的Data菜单下有一个“Identifying Duplicate Cases”的程序,应该可以解决你的问题。但我没有用过那个程序,而是用下述的syntax写一个程序来做,自己写的程序放心一点,不会错杀无辜的个案。(注:以下syntax其中的“ROW”和“ROW2”是两个临时变量,事后可以删去。如果你case的编号变量名不叫“ID”,请修改ID。)

sort cases by ID.
compute ROW=$casenum.
aggregate outfile ‘c:\temp.sav’/break ID/ROW2=first(ROW).
match files file */table ‘c:\temp.sav’/by ID.
select if ROW=ROW2.
delete variable ROW ROW2.
exe.

强烈建议你运行前,请先用下述模拟数据试一下,以检验上述程序是否对(即没有放过任何需要删的个案、也没有错删任何需要保留的个案)。

input program.
loop #i=1 to 10.
loop #j=1 to 3.
compute ID=#i.
end case.
end loop.
end loop.
end file.
end input program.
sort cases by ID.
compute ROW=$casenum.
aggregate outfile ‘c:\temp.sav’/break ID/ROW2=first(ROW).
match files file */table ‘c:\temp.sav’/by ID.
select if ROW=ROW2.
delete variable ROW ROW2.
exe.

数据a 数据b 数据c 数据d
image image image image

上述syntax的第1-11句生成一个含有两个变量(ID和ROW)、30个个案(其中仅10个独立个案,但每个个案重复3次)的数据(见下图数据a)。第12句将数据a中每三个重复个案中的第一条记录的ID和行序号ROW抽出来保存到临时文件temp.sav中(见数据b)。第13句将数据a和数据b合并成数据c。第14句将数据c中的ROW(即数据a中的行序号)与ROW2(即数据b中的每个个案第一行的行序号)相等者选出;也就是说,将ROW和ROW2不相等者(即每个个案的重复行)删除。最后,第15句将临时变量ROW和ROW2删除,结果就是你想要的数据d。

分类:统计, SPSS Syntax 标签:

如何处理Power-law(幂率)分布的数据?

2009/06/19 留下评论

>

Anonymous @ 2009-06-11:

祝老师:您好!看了您关于“如何在SPSS中做数据正态转化”的帖子受益匪浅。 我做的研究是关于web 2.0 的,所以数据来源都是secondary source,有很多变量的分布都是power law的形式,其中有的自变量数据有点类似count variable(0值有意义,非missing value)占了很大的比例。想就数据转化继续请教您两个问题:

1。比如两个自变量IV1和IV2都是高度偏态,在对其进行对数变换后转化为正态。但是IV1和IV2可能对因变量DV存在交互影响, 那么在检测交互影响的时候interaction term是应该用lnIV1*lnIV2么?因为这里有个疑问是lnIV1+lnIV2=ln(IV1*IV2),如果lnIV1和lnIV2进入后R Squared Change显著的话是不是就代表已经存在交互影响了么?还需要继续进入lnIV1*lnIV2么?对这个问题我感觉有点钻到牛角尖里了,想了很久都不太清楚?

2。另外是关于前面0值太多的自变量 (单峰非正态),有点类似于medical research里面的account variable,0代表没发生,但他们是自变量,而不是因变量, 所以感觉不能用Logistic回归。 我试着用了log之类的转换, 很难变成正态分布,目前我将其转换成了dummy variable 0 和1做了一个model,然后再选择所有不为0的obsevation做了一个model,但这样做得结果不是很理想。请问是否有一些特殊转换处理这方面的数据呢?

庄主 @ 2009-06-20:

问题一较简单:交互影响模型中的自变量是否可以取对数?答案是肯定的。因为在你的模型 Y = b0 + b1ln(IV1) + b2ln(IV2) + b3ln(IV1)ln(IV2) 中的右边前两项,即IV1和IV2各有一个回归系数b1和b2,所以它们不会被约简为另一个b3ln(IV1)ln(IV2) 。

同理,模型右边第三项 b3ln(IV1)ln(IV2) 简约后成为 b3 (IV1 + IV2),也不等同于前两项 b1ln(IV1) + b2ln(IV2)。当然,第三项的变量 (IV1 + IV2 中的联合分布比IV1和IV2原先的独立分布更加不对称,即更加偏离正态分布。但是,据我的理解,当你将 ln(IV1)ln(IV2) 输入OLS回归时,计算程序是将 ln(IV1)ln(IV2) 当做一个值处理而不会将它分析成IV1 + IV2的。

问题二很复杂:如何处理服从power-law(幂律)分布的数据?这种分布特征的数据,具有很多个最小值、而这些最小值由于受到某种机制的限制而无法再往更小的方向延伸(left-censored),而全部堆积在一起。也有人称其为 "floor effects” (“地板效应”)数据(如下图a)。初看,这些最小值(本例是1)堆起来不像是地板效应、而像 “ceiling effects”(“天花板”效应)。但如果将图a作90度旋转,就可以理解“地板”的意思。当然,这种分布的反面,即一组数据中有很多个无法更大的最大值(right-censored values),就是“天花板”了。

image

以上图a中的X,按三个不同的幂律值(1、2、4)而形成三种不同的“地板”分布(即P(X)=X-1、P(X)=X-2、和P(X)=X-4。具体说来,当幂律=-1时,X的最小值占了总体的19%;当幂律=-2时,X的最小值占了总体的61%;而当当幂律=-3时,X的最小值占了总体的92%!在经典的“正态分布世界”(the world of normal distribution) 里,我们都是用log来转换服从幂律分布的数据。以下图b就是对图a中的三组X用log转换以后的分布形状:

image

与图a相比,图b中的三种分布的形状不那么“地板”了,但是还远远不是正态分布的。如果将X的频数(即P(X))也作log转换,即得到一个单调递减的线性分布(图c):

image

图c也不是正态分布。但在“正态世界”里,线性分布是我们对付幂律数据的(相对)最好方法了;就是说,幂律分布的数据永远不可能转换为正态的。真的没有其它方法了吗?有,那就要离开正态世界而进入“变态世界”(the world of abnormality)、做一个研究“变态行为”的“变态学者”。“变态”这个字太刺眼。做“变态研究”的绝大多数是拘谨的物理学家,当然无法承受世俗的歧视,所以将变态世界叫做“复杂系统”(complex system)。我一开始说“这个问题很复杂”,意思就是“这是一个复杂世界的问题”。当然,复杂系统也不能点石为金,将幂律分布数据变成正态分布数据、而是用整个一套完全不同的思想和方法来看变量的分布和变量之间的关系。(参见A. Clauset, C.R. Shalizi, and M.E.J. Newman, "Power-law distributions in empirical data" SIAM Review, 2009)。

好了,别再继续问我变态世界的事,我刚刚开始接触他们的那些事,可能受正态世界的毒害太深,无论理智上或感情上都还没有入门。

回到你的实际问题,你可以试试以下几种方法:一、对X取log之后、再取log(当然,如果log(X)有非正值、需要先对其做线性转换成正值);二、将X转换成0-1值的dummy variable后直接进入模型(而不是用来分拆成两个模型);三、将X与其他相关的自变量合成新的变量;等等。注意,上述任何一种方法都不会产生正态分布、所以其结果都是差强人意的。

如何处理和报告含高度相关自变量的回归分析?

2009/03/28 4 条评论

>

Michael @ 2009-03-27:

祝老师您好,我看到很多多元线性回归没有报告自变量之间的相关性,是否只需要通过共线性检验就可以忽略自变量之间的相关性呢?另,我想分析两个高度相关(相关系数=0.8)的自变量A、B与Y的关系;CFA分析显示A、B具有显著差异(卡方值变化),我能否先用其中一个变量如A作用因变量,B作为自变量构建一个回归模型F,然后,用B和F模型形成的残差与Y回归呢?还是直接把AB放入回归模型?非常感谢!

庄主 @ 2009-03-28:

一、是否需要报告自变量之间相关程度?据我所知,绝大部分期刊确实没有将其作为必须报告之信息,也许是因为这一信息并不影响读者对回归模型的总解释力(即R平方)的理解。当然,高度相关的自变量即使能通过共线性检验,其统计显著性甚至系数的正负符号还是有可能受到影响(参见“如何在回归分析中检验和解读交互影响”和其他前贴)。所以,作为作者,不但有责任报告自变量之间的相关程度(但并不一定需要一个表格,用一两句话注明那些相关系数高于0.5的自变量即可),更需要根据R平方之变化值(“如何用block方法检验交互影响?”)或semi-partial R平方(“ΔR2与Semipartial R2”)等结果来检验和解读有关自变量的显著性。

二、如何将高度相关的自变量输入回归模型?一般的做法是将所有自变量(即你的A和B)同时引入回归分析,然后用上述方法来检验各自的显著性和独立贡献程度。这些方法不但在统计理论是成熟的,而且在解读时也是便利的。你建议的方法,其实就是将A和B之间的共同影响部分全部划归为B(这种做法与我在block方法中讲的先引入B、再引入A的结果一模一样),这就需要你有充分的理论根据(如B是A的自变量)才有意义,不然会导致人为夸大B的影响而缩小A的影响。

为了便于其他读者理解我们这里的讨论,让我用几个公式来说明一下。你的回归模型是

Y = b0 + b1A + b2B + e (公式一)

其中e是Y中无法被A和B解释的残差。因为A和B高度相关(r = 0.8),你打算分两步来检验公式一:

A = c0 + c1B + f (公式二)

Y = b0′ + b1’f + b2’B + e’ (公式三)

其中公式二中的f是A中无法被B解释的残差(也即A与B无关的部分),因此当作一个自变量进入公式三。如果用R平方来考察上述模型,其与block方法中的部分结果是一样的。在block方法中,你可以先检验

Y = b0 + b2B + e (公式四)

得到R42,它反映了B对Y的影响(其中包括了B和A的共同影响),然后再加入A(即检验公式一)而得到R12,而ΔR = R12 – R42的差即反映了A对Y的独立影响。

注意,R12,与公式三的R32应该是等值的、e和e’也应该相同;但b0和b’0、b1和b’1、b2和b’2则有可能不同,一般来说,b2’会大于b2、b1’则小于b1,因此我认为你的方法可能会“人为夸大B的影响而缩小A的影响”。当然,这种风险在上述的(不完整)block方法中也同样存在。

那么,应该如何处理呢?我在上述的几贴中已详细介绍过,这里只简单重复一下。先分别检验公式一、四和五(见下),

Y = b0 + b1A + e (公式五)

然后分别计算Δ1 = R12 – R42、Δ2 = R12 – R52和Δ3 = R12– R42 – R52,其中Δ1反映了B的独立影响;Δ2反映了A的独立影响;Δ3反映了A和B的共同影响。如果A和B完全无关,Δ3则为0,但在本例中,因为A和B高度相关,所以Δ3可能远远大于Δ1和Δ2。因此,这部分影响归功于谁,是十分重要而又复杂的问题,不能随意处置。

如何运用缺省值分析(MVA)方法?

2009/03/20 1条评论

>

wjgxm:

有几个关于缺失值处理的问题想请教祝老师:

我在用little’s MCAR检验时发现,以往不少国内的研究在用此检验时,大多数时候并非是针对整个问卷进行的,而是选取部分指标进行检验,如:1、只针对几个缺失较严重的选;2、只针对问卷中核心部分的指标;3、将问卷分为几个部分,如基本情况项目、满意度量表、其它情况项目等,分别检验。

我对自己的问卷(包括三个部分:基本情况项、5级量表、其它项)分别进行了几次检验,结果如下:1、全部选项纳入检验,结果Sig. = .044;2、只检验5级量表项,结果Sig. = .083;3、剔除最后的4个跳选项,结果结果Sig. = .398。这些结果差异较大,大于或小于0.05的都有。我对little’s MCAR检验的适用性感到一定困惑,因为我是非统计学的学生,非常的业余。

此外,我对跳选项的处理也非常困惑,我的问卷是做关于居民满意度的,最后5项如下:
1、你对XXX的总体满意度?1、很不满意;2、较不满意;3、一般;4、较满意;5、很满意

如果满意:
(1)你会xxxxx?1、一定不会;2、….;5、一定会
(2)你会xxxxx?1、一定不会;2、….;5、一定会
如果不满意:
(1)你会XXXXX?1、一定不会;2、….;5、一定会
(2)你会XXXXX?1、一定不会;2、….;5、一定会

我现在觉得这些跳选项设计的非常没头脑,感到懊恼,因为不管是否满意,居民都应该可能会有这双方面的行动的!问题是,正常情况下,如何处理这些跳选项?我现在首先要做的是缺失处理,后期还要用到SEM,关于这个问题思考的非常之艰难,因为身边没有可帮助之人,网络搜索和学术论文搜索也难解惑,特向您求助!

庄主:

我读过Missing Value Analysis(MVA,缺省值分析)的文献,但从来没有用过,没有第一手的经验或教训可以分享,所以我只简略回答你的问题。(我的原则是,对于自己没有第一手体验的问题,回答尽量简略,以免误人子弟。)

为了便于其他读者的理解,先简介一下MVA。缺省值指调查、实验、内容分析等实证数据中“拒答”、“不知道”、“无意见”等没有实际信息的值。传统的数据分析是将其排除在外,或者用均值或中位数来取代。MVA是一种data-driven(数据导向)而非theory-driven的方法,即根据那些不含缺省值的个案(“样本一”)中的相关信息来预测(即填补)含缺省值的个案(“样本二”)中的缺省值。

我至所以不用MVA,主要是对其的基本假定(即缺省值是完全随机或基本随机产生、或样本一和二没有本质差别)存有很大疑虑。这种疑虑,即来自传统文献,也源于我自己的实证研究。我曾用中国大陆的十来个调查、共几万个案的数据做过一个item non-responses(INR,问题拒答)的研究(Zhu, 1996),发现INR不是随机的、而是受到问卷设计、问题性质、调查环境以及被访者特征等各个层面变量的影响。既然如此,我们应该而且可以根据具体数据的情况(即INR与上述自变量的关系)来决定如何处理INR,如有时应该将INR当作neutral position(中立立场)、有时则应将其当作真正的缺省值而从分析中剔除,而不应盲目和机械地依赖SPSS或其它软件中的MVA工具来替我们做这个重要决定。(同学们大家起来,我们不要做SPSS的奴隶!)

当然,我的上述看法也许是过分保守和落伍。如果你的样本太小,如果不用MVA来“拯救”(?)那些缺省值,有效个案(即样本一)所剩无几,无法做分析,你应该对做MVA之前(即样本一)和之后(即样本一+样本二)的数据分别检验你的理论假设,然后比较两者的参数(如均值、回归或相关系数等)、但不必比较两者的标准误差或显著程度(因为两者样本大小不一而自然不同)。如果两者有明显区别,说明样本二不是样本一的一个随机子样本、而是另一个具有系统差别的样本(但要害问题是我们不知道这种系统从何而来和如何纠正)。在这种情况下,我会放弃样本二。只依靠样本一的代价是Type II误差(即可能拒绝了真实的差别或关系);加入了有系统偏差的样本二,虽然减少了Type II误差、但同时大大提高了Type I误差(可能接受了虚假的差别或关系)。前者的后果是害己(无法发表);后者则是害人(最终也害己)。两害之间,我们应该取其轻者。

我基本认同你对国内运用MVA时的流行做法的批评。既然MVA完全依赖样本一中各变量之间的关系,那么变量越多、其中的信息也就越多,所以应该尽量利用所有现有的变量来做MVA。但是(非常重要的条件),假定你要通过MVA填补的是因变量中的缺省值,你就绝对不应该包括你的理论假设或模型中的所有自变量。否则,你用了自变量填补了因变量中的缺省值,然后再检验两者的相关关系,不就成了自我循环了吗?

你在介绍你的三种检验结果时,没有讲清楚其“显著”差别的意思是什么:是指你用三者不同的MVA方法生成三个新数据(即三个上述的样本一+样本二),然后分别检验你的理论假设的结果?如是,它们之间的差别就与我上一段讲的有关了。你“全部纳入”的问题中也许也包含了自变量,所以其关系容易显著。其实,在没有弄清你的样本二是否为随机样本之前,这种变量之间的比较没有意义。你需要的是我前一段中讲的个案之间的比较。

对于你的第二个问题,即如何填补你的那些被跳过的问题的值。这种想法很大胆、很有创意,但可惜没有道理、非常危险。这里,你不是在填补缺省值、而是在凭空制造新数据。

Zhu, J. H. (1996). "I don’t know" in public opinion surveys in China: Individual and contextual causes of item non-response. Journal of Contemporary China, 5, 223-244.

分类:统计 标签:,

如何处理回归中30多个虚拟变量?

2009/01/19 留下评论

>

afeiwu @ 2009-01-07:

祝老师,你好。有几个问题想向您请教

1、看了很多会计文章。对年份、地区和行业分别用虚拟变量来处理。有的有30几个居多,这种处理方式正确吗?比如年份,一定要把每一年都放入吗?是否只用根据理论或者逻辑,来自行设定呢?比如这一年前后有重大的事项发生?

2、另外对这些虚拟变量,大部分文章也不汇报相关系数等输出结果。这种处理方式对吗?

3、如果用stata进行面板数据处理。其中的交互项处理方式和spss的处理方式有什么区别?哪一种分析效果跟好呢?谢谢!

庄主 @ 2009-01-20:

你的问题虽然来自会计期刊,但其涉及到的是一般的统计问题(即回归分析),对适用传播学和其它社会科学。

1. 你看到的文章,是否是将年份、地区和行业三个变量分解成30多个虚拟变量(dummy variables)之后放入回归分析?如是,这种做法并不算错,但肯定属于低效和繁琐。可以从多方面来理解其中的问题。

首先,将定距变量的年份转换成虚拟变量,实属低效。一般说来,每个自变量(不论其测量水平)至少要有30个案。如果年份涉及10年,如果作为定距变量,只要求有30个案,但如果转换成9(=10-1)个虚拟变量,则要求有30 X 9 = 270个案。此乃严重低效也。当然,作者也许有其它考虑而将年份转换成虚拟变量,如因此来检验年份与因变量的非线性关系。即使如此,只须在线性的年份变量之后,加上年份的二次方变量甚至三次方变量(详见“如何在SPSS中做数据正态转化?”)就可以了。这时,自然要增加30或60个案,但还是远远少于270个。

其次,如果地区或行业也有10来个甚至更多组别,解读回归分析结果时将会很繁琐,可以转用Analysis of Covariance(简称ANCOVA,或协方差分析)来做。ANCOVA与常见的ANOVA(Analysis of Variance,方差分析)之区别在于前者可以包括定距变量作为covariate(如本例中的年份),但对定类变量(如地区和行业等)的处理则与ANOVA完全一样,直接而简洁。在SPSS中,以前是用MANOVA来实现的,现在也改用Generalized Linear Model(GLM)中的Univariate模型来做(参见“如何解读GLM回归系数的方向?”)。

你问道,将年份转换成虚拟变量时,是否要把每一年都放入? 答案是如果把“每一年”都放入,这组变量就出现完全共线性问题,所以必须抽掉一年(作为基准年份)。

你还问道,是否只用根据理论或者逻辑,来自行设定呢?当然可以。但是,从效率(即对样本数的要求)来说,这种做法仍不如将年份作为定距变量(包括多次方项)来得有效。

2. 你说“大部分文章也不汇报相关系数等输出结果”,不知这里指的是自变量(即虚拟变量)与因变量之间的相关系数还是自变量之间的相关系数?如果是前者,既然有回归系数,就没有必要报告原始相关系数。如果是后者,那么要看各虚拟变量之间的相关系数之强度,如果较强(如大于0.5以上),有必要用文字或附录表交代一下。其实,各虚拟变量之间的相关系数强度,完全与该原始变量各组的大小有关,如果每组大小完全相等,其虚拟变量之间的相关系数一定为0,不需计算或更不必报告。只有当各组规模悬殊时,各虚拟变量之间的相关关系才会成一个问题。所以,在生成虚拟变量之前,应该检查原始变量的分布,并在必要时调整各组规模。

3. 我对Stata也是初学者,只知道可以在其回归分析中直接写X*Z的交互项而不必像SPSS里需要事先另行生成(详见”如何生成交互影响变量?”),但自己没有用Stata做过带交互影响的回归分析,所以不知道其输出结果是否容易解读。我觉得SPSS回归分析的输出结果还是很简洁易懂的。当然,无论用那个软件,如何解读交互影响都是一个较难的事,需要对回归分析有比较透彻的理解。可参见竹家庄里有关的数帖(如“如何在回归分析中检验和解读交互影响?”)。

如何确定满意度中指标的权重?

2008/12/31 1条评论

>

pehcio @ 2008-12-17:

老师你好,想请教您一下关于关于满意度方面的问题:结构方程中的路径系数(载荷系数)是否可以作为权重来计算总体满意度?

庄主 @ 2009-01-01:

不是很清楚你的问题。从你提供的信息来看,你已有若干个观测变量,并在此基础上构建了一个latent factor(隐含因子)叫做“满意度”。既然如此,为何还要“计算”满意度?到底要“计算”满意度的什么东西,如每个个体的满意度得分、还是该隐含因子的mean score、等等?不清楚。

回归分析前是否需要对变量进行正态性检验?

2008/12/31 留下评论

>

dylan @ 2008-12-23:

祝老师,你好!有的书上讲在进行回归分析之前首先要对自变量和因变量都要进行正态性检验,如果检验失败,则进行对数变换,而有的书上在讲回归分析时,则根本不提对于变量的正态性检验问题,只是对残差进行正态性检验,某些论坛上也有讨论,但是没有权威结论,因此想请您给个明确答案,谢谢!

庄主 @ 2009-01-01:

是的,不仅是回归分析,而且几乎所有的parametric statistical tools (参数统计工具),都有这种要求。如回归分析、相关分析、结构方程模型等,要求自变量和因变量都服从正态分布;logistic回归要求自变量服从正态分布;t-检验和方差分析要求因变量服从正态分布。只有non-parametric tools(非参数统计工具),如卡方分析、loglinear等,才没有这种要求。

也就是说,如果自变量和/或因变量不服从正态分布,就不能直接使用参数统计工具,而先要对有关变量做正态转换。具体参见前几天的帖子“如何在SPSS中做数据正态转化?”。

你提到,有些统计书建议在回归分析之后,对残差做正态检验,这完全是另一回事。即使一对自变量和因变量都服从正态分布,但其残差也可能不服从正态分布,其原因或者在于没有控制“第三者”变量、或自变量与因变量之间的关系是非线性等等。残差分析的目的在于寻找如何进一步提高回归模型的拟合度的线索。

分类:统计 标签:,