解决方案分类 第1篇
(1)语法
(2)参数
参数名称
数据类型
tree_model
TEXT
包含决策树模型的表名,应该是决策树训练函数的输出表。
new_data_table
TEXT
包含被预测数据的表名。该表应该和训练表具有相同的特征,也应该包含用于标识每行的id_col_name。
output_table
TEXT
预测结果的输出表名,如果表已经存在则报错。表中包含标识每个预测的id_col_name列,以及每个因变量的预测列。 如果type = 'response',表有单一预测列。此列的类型依赖于训练时使用的因变量的类型。 如果type = 'prob',每个因变量对应多列,每列表示因变量的一个可能值。列标识为‘estimated_prob_dep_value’,其中dep_value表示对应的因变量值。
type(可选)
TEXT
缺省值为‘response’。对于回归树,输出总是因变量的预测值。对于分类树,变量类型可以是‘response’或‘prob’。
表4 tree_predict函数参数说明
解决方案分类 第2篇
虚拟化是云计算的核心,所以我们看到计算、存储、网络等硬件设备在围绕虚拟化技术向前演进。不论是IBM、英特尔的处理器,还是华为、思科的网络设备,以及EMC、NetApp的存储方案,等等。至于虚拟化平台软件,作为生态系统的基础每时每刻都在优化进步,在实际应用中与企业云端业务结合紧密,不适合泛泛地讨论。
在服务器架构方面,从产品、技术和生态系统的健壮性来看,ARM还未形成气候,x86风头正劲,开放的Power最让人期待。存储技术和产品一直按照自己的节奏有条不紊的发展,这是一个最重要且最需要稳定性的产品应有的节奏,依靠SSD带来的性能提升,存储也在人们追逐热点的视线中刷出了存在感。网络方面则依靠SDN的理念高歌猛进,甚至连Openflow这个广为接受的标准是否正确都成为话题。
在解决方案方面,融合IT架构是当前IT基础设施的发展方向之一,其特点是单机框部署高性能,大规模部署高扩展。所谓单机框高性能,是指融合基础设施通过高性能接口和对软件的优化,实现的综合性能的提高;大规模部署的高扩展性在于,可以利用多机框的组合,实现规模的横向扩展,并且具有快速部署上线的特点。
云计算基础设施能力是一个定性定量并重的评估,对于有私有云建设需求的企业来讲,必须首先正确地评估自己的业务需求和未来演进方向,才能寻找到最适合自己的产品,获得最佳的基础设施解决方案。前一项功课做足之后,再来寻找理想的“托付者”。
解决方案分类 第3篇
(1)语法
(2)参数
参数名称
数据类型
training_table_name
TEXT
训练数据输入表名
output_table_name
TEXT
包含决策树模型的输出表名,如果表已经存在则报错。输出表列如表2所示。
id_col_name
TEXT
训练数据中,含有ID信息的列名。这是一个强制参数,用于预测和交叉验证。每行的ID值应该是唯一的。
dependent_variable
TEXT
包含用于训练的输出列名。分类的输出列是boolean、integer或text类型,回归的输出列是double precision类型。决策树的因变量可以为多个,训练函数的时间和空间复杂度,会随着因变量数量的增加呈线性增长。
list_of_features
TEXT
逗号分隔字符串,用于预测的特征列名,也可以用‘*’表示所有列都用于预测(除下一个参数中的列名外)。特征列的类型可以是boolean、integer、text或double precision。
list_of_features_to_exclude
TEXT
逗号分隔字符串,不用于预测的列名。如果自变量是一个表达式(包括列的类型转换),那么这个列表中应该包括用于自变量表达式的所有列名,否则那些列将被包含在特征中。
split_criterion
TEXT
缺省值为‘gini’,用于分类,而‘mse’用于回归。不纯度函数计算用于分裂的特征值。分类树支持的标准有‘gini’、‘entropy’或‘misclassification’,回归树的分裂标准总是使用‘mse’。
grouping_cols(可选)
TEXT
缺省值为NULL,逗号分隔字符串,分组的列名。将为每个分组产生一棵决策树。
weights(可选)
TEXT
权重列名
max_depth(可选)
INTEGER
缺省是10。最终决策树的最大深度,根的深度为0。
min_split(可选)
INTEGER
缺省值为20。一个试图被分裂的节点中,必须存在的元组的最小数量。此参数的最佳值取决于数据集的元组数目。
min_bucket(可选)
INTEGER
缺省值为min_split/3。任何叶节点对应的最小元组数量。如果min_split和min_bucket只指定一个,那么min_split设置成min_bucket*3,或者min_bucket设置成min_split/3。
num_splits(可选)
INTEGER
缺省值为100。为计算分割边界,需要将连续特征值分成离散型分位点。此全局参数用于计算连续特征的分割点,值越大预测越准,处理时间也越长。
pruning_params(可选)
TEXT
逗号分隔的键-值对,用于决策树剪枝,当前接受的值为: cp:缺省值为0。cp全称为complexity parameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度。试图分裂一个节点时,分裂增加的精确度必须提高cp,才进行分裂,否则剪枝该节点。该参数值用于在运行检查验证前,创建一棵初始树。 n_folds:缺省值为0。用于计算cp最佳值的交叉验证褶皱数。为执行交叉验证,n_folds的值应该大于2。执行交叉验证时,会产生一个名为
surrogate_params
TEXT
逗号分隔的键值对,控制替代分裂点的行为。替代变量是与主预测变量相关的另一种预测变量,当主预测变量的值为NULL时使用替代变量。此参数当前接受的值为: max_surrogates 缺省值为0,每个节点的替代变量数。
verbosity
BOOLEAN
是否提供训练结果的详细输出,缺省值为FALSE。
表1 tree_train函数参数说明
训练函数生成的模型表具有以下列:
数据类型
<...>
TEXT
当提供了grouping_cols入参时,该列存储分组列,依赖于grouping_cols入参的值,可能有多列,类型与训练表相同。
tree
BYTEA8
二进制格式存储的决策树模型。
cat_levels_in_text
TEXT[]
分类变量的层次。
cat_n_levels
INTEGER[]
每个分类变量的层号。
tree_depth
INTEGER
剪枝前的决策树最大深度(根的深度为0)。
pruning_cp
FLOAT8[]
用于剪枝决策树的复杂性成本参数。如果使用交叉验证,该值应与pruning_params入参的值不同。
表2 tree_train函数输出模型表列
生成模型表的同时还会生成一个名为
数据类型
method
TEXT
值为‘tree_train’。
is_classification
BOOLEAN
用于分类时为TRUE,用于回归时为FALSE。
source_table
TEXT
源表名。
model_table
TEXT
模型表名。
id_col_name
TEXT
ID列名。
dependent_varname
TEXT
因变量。
independent_varname
TEXT
自变量。
cat_features
TEXT
逗号分隔字符串,分类特征名称列表。
con_features
TEXT
逗号分隔字符串,连续特征名称列表。
grouping_col
TEXT
分组列名。
num_all_groups
INTEGER
训练决策树时的总分组数。
num_failed_groups
INTEGER
训练决策树时失败的分组数。
total_rows_processed
BIGINT
所有分组处理的总行数。
total_rows_skipped
BIGINT
所有分组中因为缺少值或失败而跳过的总行数。
dependent_var_levels
TEXT
对于分类,因变量的不同取值。
dependent_var_type
TEXT
因变量类型。
input_cp
FLOAT8[]
交叉验证前,用于剪枝决策树的复杂度参数。与pruning_params入参输入的值相同。
independent_var_types
TEXT
逗号分隔字符串,自变量类型。
表3 tree_train函数输出概要表列
(3)提示
解决方案分类 第4篇
决策树构建的主要步骤有三个:第一是选择适当的算法训练样本构建决策树,第二是适当地修剪决策树,第三则是从决策树中萃取知识规则。
决策树是通过递归分割(Recursive Partitioning)建立而成,递归分割是一种把数据分割成不同小的部分的迭代过程。构建决策树的归纳算法如下:
如果有以下情况发生,决策树将停止分割:
一般来说,决策树分类的正确性有赖于数据来源的多寡,若是透过庞大数据构建的决策树,其预测和分类结果往往是符合期望的。
决策树学习主要利用信息论中的信息增益(Information Gain),寻找数据集中有最大信息量的变量,建立数据的一个节点,再根据变量的不同值建立树的分枝,每个分枝集中重复建树的下层结果和分枝的过程,一直到完美建立整株决策树。决策树的每一条路径代表一个分类规则,与其它分类模型相比,决策树的最大优势在于模型图形化,让使用者容易理解,模型解释也更容易。
在树的每个节点上,使用信息增益选择测试的变量,信息增益是用来衡量给定变量区分训练样本的能力,选择最高信息增益或最大熵(Entropy)简化的变量,将之视为当前节点的分割变量,该变量促使需要分类的样本信息量最小,而且反映了最小随机性或不纯性(Impurity)。
若某一事件发生的概率是p,令此事件发生后所得的信息量为I(p),若p=1,则I(p)=0,因为某一事件一定会发生,因此该事件发生不能提供任何信息。反之,如果某一事件发生的概率很小,不确定性很大,则该事件发生带来的信息很多,因此I(p)为递减函数,并定义I(p)=-log(p)。
给定数据集S,假设类别变量A有m个不同的类别
。利用变量A将数据集分为m个子集
,其中
表示在S中属于
的样本。在分类过程中,对于每个样本,对应m种可能发生的概率为
,记第i 种结果的信息量为
,称为分类信息的熵。熵是测量一个随机变量不确定性的测量标准,可以用来测量训练数据集内纯度(Purity)的标准。熵的函数表示如下式:
其中,
是任意样本属于
的概率,对数函数以2为底,因为信息用二进制编码。
变量训练分类数据集的能力,可以利用信息增益来测量。算法计算每个标量的信息增益,具有最高信息增益的变量选为给定集合S 的分割变量,产生一个节点,同时以该变量为标记,对每个变量值产生分枝,以此划分样本。
决策树学习可能遭遇模型过度适配(Overfitting)的问题,过度适配是指模型过度训练,导致模型记住的不是训练集的一般性,而是训练集的局部特性。模型过度适配,将导致模型预测能力不准确,一旦将训练后的模型运用到新数据,将导致错误预测。因此,完整的决策树构造过程,除了决策树的构建外,还应该包含树剪枝(Tree Pruning),解决和避免模型过度适配的问题。
当决策树产生时,因为数据中的噪声或离群值,许多分枝反映的是训练资料中的异常情形,树剪枝就是在处理这些过度适配的问题。树剪枝通常使用统计测量值剪去最不可靠的分枝,可用的统计测量有卡方值或信息增益等,如此可以加速分类结果的产生,同时也可提高测试数据能够正确分类的能力。
树剪枝有两种方法:先剪枝(Prepruning)和后剪枝(Postpruning)。先剪枝是通过提前停止树的构造来对树剪枝,一旦停止分类,节点就成为树叶,该树叶可能持有子集样本中次数最高的类别。在构造决策树时,卡方值和信息增益等测量值可以用来评估分类的质量,如果在一个节点划分样本,将导致低于预先定义阈值的分裂,则给定子集的进一步划分将停止。选取适当的阈值是很困难的,较高的阈值可能导致过分简化的树,但是较低的阈值可能使得树的简化太少。后剪枝是由已经完全生长的树减去分枝,通过删减节点的分枝剪掉树节点,最底下没有剪掉的节点成为树叶,并使用先前划分次数最多的类别作标记。对于树中每个非树叶节点,算法计算减去该节点上的子树可能出现的期望错误率。再使用每个分枝的错误率,结合每个分枝观察的权重评估,计算不对该节点剪枝的期望错误率。如果减去该节点导致较高的期望错误率,则保留该子树,否则剪去该子树。产生一组逐渐剪枝后的树,使用一个独立的测试集评估每棵树的准确率,就能得到具有最小期望错误率的决策树。也可以交叉使用先剪枝和后剪枝形成组合式,后剪枝所需的计算比先剪枝多,但通常产生可靠的树。
解决方案分类 第5篇
决策树归纳算法必须为不同类型的属性提供表示属性测试条件和其对应输出的方法。
二元属性的测试条件产生两个可能的输出,如图1所示。
图1 二元属性的测试条件
由于标称属性有多个属性值,它的测试条件可以用两种方法表示。如图2所示。对于多路划分(图2a),其输出数取决于该属性不同值的个数。例如,如果属性婚姻状况有三个不同的属性值——单身、已婚、离异,则它的测试条件就会产生一个三路划分。另一方面,某些决策树算法(如CART)只产生二元划分,它们考虑创建k个属性值的二元划分的所有
种方法。图2b显示了把婚姻状况的属性划分为两个子集的三种不同的分组方法。
(a)多路划分
(b)二元划分(通过属性值分组)
图2 标称属性的测试条件
序数属性也可以产生二元或多路划分,只要不违背序数属性值的有序性,就可以对属性值进行分组。图3显示了按照属性“衬衣尺码”划分训练记录的不同方法。图3a和图3b中的分组保持了属性值间的序关系,而图3c所示的分组则违反了这一性质,因为它把“小号”和“大号”分为一组,把“中号”和“大号”放在另一组。
图3 序数属性值分组的不同方式
对于连续属性来说,测试条件可以是具有二元输出的比较测试
或
,也可以是具有形如
输出的范围查询,图4显示了这些方法的差别。对于二元划分,决策树算法必须考虑所有可能的划分点
,并从中选择产生最佳划分的点。对于多路划分,算法必须考虑所有可能的连续值区间。可以采用离散化的策略,离散化之后,每个离散化区间赋予一个新的序数值,只要保持有序性,相邻的值还可以聚集成较宽的区间。
图4 连续属性的测试条件
解决方案分类 第6篇
决策树最为显著的优点在于,利用它来解释一个受训模型是非常容易的,而且算法将最为重要的判断因素都很好地安排在了靠近树根位置。这意味着,决策树不仅对分类很有价值,而且对决策过程的解释也很有帮助。像贝叶斯分类器一样,可以通过观察内部结构来理解它的工作方式,同时这也有助于在分类过程之外进一步作出其它的决策。
因为决策树要寻找能够使信息增益最大化的分界线,因此它也可以接受数值型数据作为输入。能够同时处理分类数据和数值数据,对于许多问题的处理都是很有帮助的——这些问题往往是传统的统计方法(比如回归)所难以应对的。另外,决策树并不擅长对数值结果进行预测。一棵回归树可以将数据拆分成一系列具有最小方差的均值,但是如果数据非常复杂,则树就会变得非常庞大,以至于我们无法借此来做出准确的决策。
与贝叶斯决策相比,决策树的主要优点是它能够很容易地处理变量之间的相互影响。一个用决策树构建的垃圾邮件过滤器可以很容易地判断出:“online”和“pharmacy”在分开时并不代表垃圾信息,担当它们组合在一起时则为垃圾信息。
二、MADlib的决策树相关函数
MADlib中有三个决策树函数,分别为训练函数、预测函数和显示函数。训练函数接收输入的训练数据进行学习,生成决策树模型。预测函数用训练函数生成的决策树模型预测数据的所属分类。显示函数用来显示决策树模型。
解决方案分类 第7篇
决策树(Decision Tree)又称为分类树(Classification Tree),是最为广泛的归纳推理算法之一,处理类别型或连续型变量的分类预测问题,可以用图形和if-then的规则表示模型,可读性较高。决策树模型通过不断地划分数据,使因变量的差别最大,最终目的是将数据分类到不同的组织或不同的分枝,在因变量的值上建立最强的归类。
决策树是一种监督式的学习方法,产生一种类似流程图的树结构。决策树对数据进行处理是利用归纳算法产生分类规则和决策树,再对新数据进行预测分析。树的终端节点“叶节点”(Leaf Node),表示分类结果的类别(Class),每个内部节点表示一个变量的测试,分枝(Branch)为测试输出,代表变量的一个可能数值。为达到分类目的,变量值在数据上测试,每一条路径代表一个分类规则。
决策树在数据挖掘领域应用非常广泛,尤其在分类问题上是很有效的方法。除具备图形化分析结果易于了解的优点外,决策树还具有以下优点:
解决方案分类 第8篇
显示函数输出一个决策树的格式化表示。输出可以是dot格式,或者是一个简单的文本格式。dot格式可以使用GraphViz等程序进行可视化。
(1)语法
还有一个显示函数输出为每个内部节点选择的替代分裂点:
(2)参数
参数名称
数据类型
tree_model
TEXT
含有决策树模型的表名。
dot_format
BOOLEAN
缺省值为TRUE,使用dot格式,否则输出文本格式。
verbosity
BOOLEAN
缺省值为FALSE。如果设置为TRUE,dot格式输出中包含附加信息,如不纯度、样本大小、每个因变量的权重行数、被剪枝的分类或预测等。输出总是返回文本形式,对于dot格式,可以重定向输出到客户端文件,然后使用可视化程序处理。
表5 tree_display函数参数说明
我们将利用MADlib的决策树相关函数解决根据天气情况预测是否打高尔夫球的问题。问题描述及其已知数据参见“MADlib——基于SQL的数据挖掘解决方案(21)——分类之KNN”。
解决方案分类 第9篇
有很多度量可以用来确定划分记录的最佳方法,这些度量用划分前和划分后记录的类分布定义。
设
表示给定节点t中属于类i的记录所占的比例,有时,我们省略节点t,直接用
表示该比例。在两类问题中,任意节点的类分布都可以记作
,其中
。例如,考虑图5中的测试条件,划分前的类分布是(),因为来自每个类的记录数相等。如果使用“性别”属性来划分数据,则子节点的类分布分别为()和(),虽然划分后两个类的分布不再平衡,但是子节点仍然包含两个类的记录;按照第二个属性“车型”进行划分,将得到纯度更高的划分。
图5 多路划分与二元划分
选择最佳划分的度量通常是根据划分后子节点的不纯性的程度。不纯的程度越低,类分布就越倾斜。例如,类分布为(0,1)的节点具有零不纯性,而均衡分布()的节点具有最高的不纯性。不纯性度量的例子包括:
其中c是类的个数,并且在计算熵时,
。下面给出三种不纯性度量方法的计算实例。
从上面的例子可以看出,不同的不纯性度量是一致的。根据计算,节点
具有最低的不纯性度量值,接下来依次是
。虽然结果一致,但作为测试条件的属性选择仍然因不纯性度量的选择而异。
为了确定测试条件的效果,我们需要比较父节点(划分前)的不纯程度和子节点(划分后)的不纯程度,它们的差越大,测试条件的效果越好。增益
是一种可以用来确定划分效果的标准:
其中,
是给定节点的不纯性度量,N 是父节点上的记录数,k 是属性值的个数,
是与子节点
相关联的记录个数。决策树归纳算法通常选择最大化增益
的测试条件,因为对所有的测试条件来说,
是一个不变的值,所以最大化增益等价于最小化子节点的不纯性度量的加权平均值。当选择熵(entropy)作为不纯性度量时,熵的差就是所谓信息增益(informationgain)
熵和Gini指标等不纯性度量趋向有利于具有最大不同值的属性。图5显示了三种可供选择的测试条件。第一个测试条件“性别”与第二个测试条件“车型”相比,容易看出“车型”似乎提供了更好的划分数据的方法,因为它产生更纯的派生节点。然而,如果将这两个条件与“顾客ID”相比,后者看来产生更纯的划分,但“顾客ID”却不是一个有预测性的属性,因为每个样本在该属性上的值都是唯一的。即使在不太极端的情形下,也不会希望产生大量输出的测试条件,因为与每个划分相关联的记录太少,以致不能做出可靠的预测。
解决该问题的策略有两种。第一种策略是限制测试条件只能是二元划分,CART这样的决策树算法采用的就是这种策略;另一种策略是修改评估划分的标准,把属性测试条件产生的输出数也考虑进去。例如,决策树算法采用称作增益率(gain ratio)的划分标准来评估划分。增益率定义如下:
其中,划分信息
,而k 是划分的总数。例如,如果每个属性值具有相同的记录数,则
,而划分信息等于
。这说明如果某个属性产生了大量的划分,它的划分信息将会很大,从而降低了增益率。
解决方案分类 第10篇
(1)查询概要表
说明:
(2)查询决策树表
说明:
(3)以dot格式显示决策树
生成dot文件后,使用第三方图形软件GraphViz画出决策树,执行以下shell命令:
生成的决策树如图6所示。
图6 图形化显示dot格式决策树
图中显示的决策树与文本的输出一致,矩形为叶子节点,椭圆形为内部测试节点。除了文本输出的信息外,图中还多了一个impurity,代表不纯度,是指将来自集合中的某种结果随机应用在集合中,某一数据项的预期误差率。不纯度越小,集合的有序程度越高,分类的效果越好。叶子节点的不纯度为0。
本例中的四个自变量中,天气情况是具有三个值的标称属性,温度、湿度是连续数值属性,而是否有风为二元属性。下面我们手工计算Gini指标,验证上图决策树的划分。
1. 整个训练样本集关于类属性的Gini值
2. 天气情况的信息增益
正如前面提到的,标称属性可以产生二元划分和多路划分,由于MADlib使用的是CART算法,因此采用二元划分。天气情况有sunny、overcast、rain三种取值,因此有三种二元划分:{sunny} {overcast,rain},{sunny,overcast} {rain},{sunny,rain} {overcast}。每种划分的Gini指标计算如下:
天气情况
sunny
overcast,rain
Play数
Don’t Play数
Gini
加权平均的Gini
5/14* + 9/14* =
天气情况
sunny,overcast
rain
Play数
Don’t Play数
Gini
加权平均的Gini
9/14* + 5/14* =
天气情况
sunny,rain
overcast
Play数
Don’t Play数
Gini
加权平均的Gini
10/14* + 4/14*0 =
第三种划分得到的Gini值最小,信息增益最大,因此如果按照“天气情况”,应该按第三种划分。
3. 是否有风的信息增益
是否有风
TRUE
FALSE
Play数
Don’t Play数
Gini
加权平均的Gini
6/14* + 8/14* =
由于Gini指标大于天气情况划分,增益小于天气划分,故不作为优先的划分方法。
4. 温度增益
排序后的温度
划分点
Play数
Don’t Play数
Gini
加权平均的Gini
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
显然,每种温度划分的信息增益都小于天气情况({sunny,rain} {overcast})。
5. 湿度增益
排序后的湿度
划分点
Play数
Don’t Play数
Gini
加权平均的Gini
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
<=
>
显然,每种湿度划分的信息增益都小于天气情况({sunny,rain} {overcast})。
根据以上信息增益情况,MADlib的决策树函数首次选择{sunny,rain} {overcast}划分。同理,按照同样的Gini指标方式计算,递归构造出整颗决策树。
(4)查询交叉验证结果表
可以看到,随着cp值的增大,剪枝增多,精度降低。
5. 分析决策树
分类树算法可以通过特征,找出最好地解释因变量class(是否打高尔夫球)的方法。
这就通过分类树给出了一个解决方案。小王在晴天、雨天并且气温过高或过低时解雇了大部分员工,因为这种天气不会有人打高尔夫。而其他的天气会有很多人打高尔夫,因此可以雇用一些临时员工来工作。
6. 用决策树模型进行预测
从交叉验证结果看,即便是初始cp=0,得到的标准差仍然较大,这和我们的样本数据过少有关。从本示例的分析中就可以看到,65到70度、72到75度会打高尔夫,而70到72度之间没人打,这个预测显然有悖常理。现在就用此模型预测一下原始数据,再和实际情况对比一下。这里只是演示一下如何用模型进行预测,实践中训练数据集与预测数据集相同意义不大。
查询结果如下:
解决方案分类 第11篇
两阶段是指以下两个阶段: 第一阶段回归:
内生解释变量对所有外生解释变量和工具变量进行回归,得到内生解释变量的估计值,这一步的目的是为了分离出内生解释变量的外生部分,即得到x的拟合值 x^(外生部分)。
第二阶段回归:
用因变量y对第一阶段回归得到的拟合值x^进行回归,即可达到对内生解释变量进行修正的目的。
工具变量选取应满足以下两个条件:
一是与自变量x相关(相关性);
二是与误差项 ε 不相关(外生性)。
如果没有内生性问题,那么2SLS的结果和OLS的结果是一致的,不过OLS结果更有效率,因为其标准差更小。如果有内生性问题,那么2SLS和OLS结果差异较大,以2SLS结果为准。所以在2SLS之前,要检验模型是否存在内生性问题,Hausman 检验。 reg y x1 x2
estimates store ols
ivregress 2sls y x1(x2=z1 z2)(假设你认为x2是内生解释变量,找到了两个工具变量)
estimates store iv
hausman iv ols, constant sigmamore (Hausman 检验)
如果p值大于或(具体取决于自己的设置的显著性),说没有内生性问题,小于则说明有内生性问题。
在stata中,2SLS的两步是一行代码完成的,不需要手动两步回归,其命令是
ivregress 2sls y x1 x2 (x2=z1 z2), r first
x1和 x2是解释变量,其中x2内生,z1和z2两个工具变量。R表示使用稳健标准差,first表示显示第一阶段的回归。如果是面板数据,原理一样,代码变一下:xtivreg2 2sls x1 x2 (x2=z1 z2), fe(还得控制时间)
注意的是工具变量的回归结果不会呈现,并且,如果x2真的内生,那么此时回归结果会与OLS回归结果有较大差别。
解决方案分类 第12篇
固定效应模型是值首先对面板数据中的各样本i(例如公司i)的历年数据取均值,然后用均值变量替代原方程中的各个变量构成一个新方程,最后用原方程减去新方程,其目的是为了消除所有不随时间变化无法观测的因素,如果这些因素不消除,则会融入误差项中,若与解释变量相关,则会造成估计偏差。由此可见,固定效应模型部分控制了内生性问题,因为它并没有控制哪些随时间变化无法观察的因素。(在修正内生性问题时,固定效应模型只能作为一种辅助方法,需要配合其他的一些方法。)
Stata代码:
use
xtset id year
global y "y34;
xi:reg $y $x //时间固定
xi:reg $y $x //个体固定
xi:reg $y $x //双固定
补充:
对文章的一些修正及补充。如果确定有内生性问题,打算用IV法。一般来说,经济学top期刊对IV要求较高,要完全外生的IV。2020年Economic Journal一篇研究古代科举对现代人力资本影响的文章用一个地区到最近的竹林和松林分布地带的河流距离作为科举考试制度的成功程度。更经典的还有Acemoglu 2001的例子。这是完全外生的,很难想到。对于一些管理学文章,非完全外生的IV也是可行的,例如对于企业层面的研究,用滞后项,行业均值,行业除自身外的均值作为IV都是常用的办法。如果IV的个数与内生解释变量个数一致,则需要从理论上说明该IV的外生性和相关性,其中相关性可以通过2SLS第一阶段的F值或者相关系数做个大概判断。如果IV个数大于内生解释变量个数,则要用Hansen J test检验其外生性。
对于控制变量是否需要外生,控制变量可以内生。一般在讲OLS的理论部分时,常用的模型是这样写的:Y=β0+ β1X1+β2X2+β3X3+ε
在这里,所有的解释变量地位是一样的,没有重要不重要之分。因此,讲扰动项与解释变量不想关是指扰动项与所有的解释变量都不相关。这是一个非常强的假定,即使对于同期外生来说也很强。但在实际操作中,模型是这样的:Y=β0+ β1X1+β2X2+β3X3+β4C1+β5C2+β6C3ε
在这个模型中,X1,X2,X3是感兴趣的自变量,C1,C2,C3是不感兴趣的控制变量。保证扰动项与X1,X2,X3不相关是必须的,但扰动项与C1,C2,C3不相关就不是必须了。也就是,在给定控制变量的条件下,核心变量与扰动项不相关即可。但是,这里的前提条件是,核心解释变量与控制变量不存在严重的多重共线性。
样本选择偏差和一般的选择偏差的区别在于,如果是样本选择偏差,则需要Heckman两步法或者MLE解决,如果是一般的选择偏差,则会导致内生性,要按照处理内生性问题的方式处理,用IV,PSM,合成控制等方法处理。
对于面板数据的2SLS的命令
没有调节项:
xi: xtivreg2 y c1 c2 c3 (x1 = z1 z2), fe r gmm endog (x1)
有调节项:
xi: xtivreg2 y m c1 c2 c3 (x1 x1m = z1 z1*m z2 z2*m), fe r gmm endog (x1, x1*m)
如果认为x1内生,那么由x1生成的调节项也认为是内生的,要与x1一样当成内生解释变量对待。但调节变量m不必当作内生变量。
对于测量误差导致的内生性,假设X=X1+X2,X1是测量出来的部分,X2是测量误差,一般来说,X2与X相关,即测量误差与这个变量相关,因为测量误差本身就是这个变量的一部分,这就导致测量误差与测量出来的变量也相关,而测量误差划到了扰动项,进而导致测出亮的变量,也就是X1也与扰动项相关。
在同方差或者恰好识别情况下,2SLS与GMM等价,没有必要使用GMM。但是同方差很少见,多数都是异方差。文章里所说的2SLS指的是GMM,不过因为我个人把用于解决内生性的GMM叫做2SLS,把sys-GMM和diff-GMM叫做GMM。所以在异方差时,我说的2SLS指的是GMM。2SLS和GMM的命令高度相似。如果恰好识别,就用2SLS。
本文在文章的基础上进行改进与补充。欢迎大家补充!如有错误请批评指正!
参考文献:
[1]王宇,李海洋.管理学研究中的内生性问题及修正方法[J].管理学季刊,2017,2(03):20-47+170-171.
解决方案分类 第13篇
顾名思义,两次差分。
我们结合一个例子来说明双重差分分析方法,国家想推行某项新政策(这里新政策即为“测试”treatment),并在一些地区实施做试点。如果我们想知道实施这一政策是否会对经济发展(如 GDP)有所贡献,一次差分是比较实施新政策与没有实施新政策的地区之间的 GDP 差异。双重差分比一次差分多了一重时间的维度也就是政策实施前后地区 GDP 的差异。双重差分可以结合t检验来使用,也可以构造“测试”虚拟变量、时间虚拟变量以及它们的乘积项。
然后放人回归模型来使用。
举例:城市A实施了某一政策,先找一个未实施政策的城市B作为对照组(对照组的选取要尽量与实验组高度相似),构造一组虚拟变量,称它为个体虚拟变量,令城市A为1,城市B为0。此外还构造第二组虚拟变量,我们称它为时间虚拟变量,即城市实施前为0,实施后为1,那么将个体虚拟变量和时间虚拟变量的乘积项放入,若乘积项显著为正,则说明该项政策显著促进了城市A的被解释变量Y,若显著为负,则说明该项政策的实施对被解释变量Y具有消极影响。
Stata代码参考:_47805483/article/details/109389371?spm=