精华内容
下载资源
问答
  • R语言创建新变量方法

    2021-01-07 04:18:49
    R语言创建新变量方法 数据分析,可能需要对数据进行求和、求均值等处理,并且将处理后的数据重新保存到原来的数据框,这里提供三种可供解决的方法: 数据框$变量名 <- 表达式。若原数据框含有该变量,则...
  • R中因子变量及处理

    万次阅读 2015-06-08 22:32:58
    定类的因子变量,可以利用哑变量(dummy variable),即0-1变量现将其转换为数值型的,再进行分析 计算各属性的相关系数 http://blog.csdn.net/jiabiao1602/article/details/42264853

    因子用来存储类别变量(categorical variables)和有序变量,这类变量不能用来计算而只能用来分类或
    者计数。因子表示分类变量,有序因子表示有序变量。

    1、用cut()函数将一般的数据转换成因子或有序因子

    例1:

    exam <- c(98, 97, 52, 88, 85, 75, 97, 92, 77, 74, 70, 63, 97, 71, 98,
                 65, 79, 74, 58, 59, 60, 63, 87, 82, 95, 75, 79, 96, 50, 88)

    exam1 <- cut(exam, breaks = 3) #切分成3组, Levels: (50,66] (66,82] (82,98]

    exam2 <- cut(exam, breaks = c(0, 59, 69, 79, 89, 100)) #切分成自己设置的组,Levels: (0,59] (59,69] (69,79] (79,89] (89,100]

    attr(exam1, 'levels');

    [1] "(50,66]" "(66,82]" "(82,98]"
    attr(exam2, 'levels');

    [1] "(0,59]"   "(59,69]"  "(69,79]"  "(79,89]"  "(89,100]"
    attr(exam2, 'class')

    [1] "factor"
    ordered(exam2, labels = c('bad', 'ok', 'average', 'good', 'excellent')) #一个有序因子

     [1] excellent excellent bad       good      good      average   excellent excellent average   average  
    [11] average   ok        excellent average   excellent ok        average   average   bad       bad      
    [21] ok        ok        good      good      excellent average   average   excellent bad       good     
    Levels: bad < ok < average < good < excellent

    2、stringsAsFactors的使用

    在一个data.frame里面,经常有某列数据原本放进去的时候是character类型,之后再用$往外提取的时候,R就会很自作多情地帮你把这个变量自动转化为factor类型…

    在调用as.data.frame的时候将stringsAsFactors设置为FALSE就可以避免

    可以在R脚本文件开头声明一下options(stringsAsFactors=F)


    1、按指定顺序将分类变量生成因子,按指定顺序的话,可以排出重要性,这样因子变量转换成numeric时,直接转过去就可以了,做聚类时,不用动权值了。

    > city=factor(1:11,levels=1:11,labels=c("北京", "上海", "广州", "深圳", "天津", "东莞", "青岛", "石家庄", "唐山", "湛江", "廊坊"))# 设置因子型数据
    > city [1] 北京   上海   广州   深圳   天津   东莞   青岛   石家庄 唐山   湛江   廊坊  
    Levels: 北京 上海 广州 深圳 天津 东莞 青岛 石家庄 唐山 湛江 廊坊
    > as.numeric(city)
     [1]  1  2  3  4  5  6  7  8  9 10 11
    
    如果不指定次序,则按汉语拼音生成因子

    > factor(c("北京", "上海", "广州", "深圳", "天津", "东莞", "青岛", "石家庄", "唐山", "湛江", "廊坊"))
     [1] 北京   上海   广州   深圳   天津   东莞   青岛   石家庄 唐山   湛江   廊坊  
    Levels: 北京 东莞 广州 廊坊 青岛 上海 深圳 石家庄 唐山 天津 湛江

    2、因子的排序

    house_all[,1]<-as.factor(house_all[,1]) ;
    按指定的排序

    house_all[,1]<-ordered(house_all[,1], labels=c("北京", "上海", "广州", "深圳", "天津", "东莞", "青岛", "石家庄", "唐山", "湛江", "廊坊"))

    转成numeric

    house_all[,1]<-as.numeric(house_all[,1])



    定类的因子变量,可以利用哑变量(dummy variable),即0-1变量现将其转换为数值型的,再进行分析


    计算各属性的相关系数

    http://blog.csdn.net/jiabiao1602/article/details/42264853

    展开全文
  • Stata中因子变量的使用方法

    万次阅读 2018-06-26 18:07:35
    注:该文已发表《郑州航空工业管理学院学报》, 2018, Vol. 36, No.2, pp.90-103. DOI: 10.19327/j.cnki.zuaxb.1007-9734.2018.02.008   ……Stata 现场培训报名……   事倍功半 vs. 事半功倍 当需...

    Stata中因子变量的使用方法.png

    作者:连玉君 | 杨柳 ( 知乎 | 简书 | 码云 )

    注:该文已发表在《郑州航空工业管理学院学报》, 2018, Vol. 36, No.2, pp.90-103. DOI: 10.19327/j.cnki.zuaxb.1007-9734.2018.02.008

    ……Stata 现场培训报名中……

    事倍功半 vs. 事半功倍
    当需要控制公司个体效应、面对成千上万家公司的数据资料时,你会如何处理?或许你会首先想到对每家公司生成虚拟变量,但是这种做法的工作量实在是太大了!那么,有没有事半功倍的方法呢?下面,小编就带你学习Stata软件中因子变量的使用方法。

    1. 问题背景

    实证分析中,我们经常需要在模型中加入反映类别的虚拟变量,以便控制不可观测的组间差异。而在另一些分析中,为了刻画调节效应,尚需在模型中加入变量的交乘项平方项。传统的做法是,预先生成虚拟变量或交乘项,进而将它们加入模型。然而,当虚拟变量或交乘项的数目较多时,上述方法就显得尤为不便,不但浪费计算机内存,也会严重降低我们的工作效率。

    在Stata中,我们可以使用因子变量(Factor Variable)简化操作步骤、快捷地在回归模型中加入虚拟变量交乘项平方项高次项。更为重要的是,由于引入交乘项或平方项后,解释变量对被解释变量的边际影响不再是常数,而是某个变量(调节变量)的函数,在有些模型设定下,这种关系可能是非线性的。此时,若使用因子变量,并配合Stata中的marginsmarginsplot命令,可以非常便捷、直观地分析关键变量的边际效应

    2. 什么是因子变量

    因子变量(Factor Variable)是对现有变量的延伸,是从类别变量中生成虚拟变量、设定类别变量之间的交乘项、类别变量与连续型变量之间的交乘项或连续变量之间的交乘项(或多项式)。在Stata中的大多数回归命令和回归后的估计命令中都可以使用这些因子变量^[1]^。

    因子变量的五种运算符及其含义如下表1所示:

    表1 因子变量的运算符及含义

    表1 因子变量的运算符及含义.png

    以研究妇女工资的决定因素为例,使用Stata软件自带的数据文件 nlsw88.dta。该数据包含了1988年采集的2246个美国妇女的资料,包括:小时工资wage、每周工作时数hours、种族race、职业occupation、年龄age、是否大学毕业collgrad、当前职业的工作年限tenure、是否结婚married、是否居住在南部地区south、合计工作年限ttl_exp等变量。其中,小时工资wage、每周工作时数hours、年龄age、当前职业的工作年限tenure、合计工作年限ttl_exp为连续型变量;种族race为类别变量(1代表白种人white,2代表黑种人black,3代表其他人种other)、职业occupation为类别变量(13个职业类别);是否大学毕业collgrad、是否结婚married、是否居住在南部地区south为虚拟变量。

    在这份数据中有一个表示种族的类别变量race,取值为1、2、3,分别对应白人黑人其他人种。假设我们想在模型中加入一个反映种族的虚拟变量black,当某个妇女是黑人时,black取值为1,否则为0。则传统的做法如下^[3]^:

    . sysuse "nlsw88", clear
    . gen black=1
    . replace black=0 if race!=2
    . reg wage black

    若延续这一思路,但使用因子变量来生成black变量,则命令为:

    . gen black = 2.race

    只需要一条命令,而且含义非常明确。这里2.race本质上是一个条件判断语句:判断某一行观察值中的race变量取值是否为2,若是,则返回1到变量black中,否则返回0

    然而,在多数情况下,我们的目的只是希望得到虚拟变量black的估计系数,而不希望生成或存储这个变量^[4]^。Stata中的因子变量语法完全注意到了这个问题。使用因子变量的标准做法如下:

    . sysuse "nlsw88.dta", clear
    . reg wage 2.race

    注意,我们无需预先生成black变量,而是直接在回归模型中加入了2.race因子变量。有些读者注意到,race变量有三个取值,因此,我们可以在模型中放入两个虚拟变量,此时可以书写如下命令:

    . reg wage i.race

    回归结果如下所示:

    (部分回归结果省略)
    ------------------------------------------------------------------------------
            wage |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
    -------------+----------------------------------------------------------------
            race |
          black  |     -1.238      0.276    -4.48   0.000       -1.781      -0.696
          other  |      0.468      1.133     0.41   0.680       -1.754       2.690
                 |
           _cons |      8.083      0.142    57.06   0.000        7.805       8.361
    ------------------------------------------------------------------------------
    

    从上述结果中可以看到,回归模型中加入了black虚拟变量和other虚拟变量,分别对应race变量的第二个和第三个类别,而第一个类别white被Stata默认作为基准组,目的在于防止完全共线性。black变量的系数值为-1.238,表示黑人的平均工资比白人低1.238个单位,并在统计上显著;other变量的系数值为0.468,表示其他人种的平均工资比白人高0.468个单位,但是在统计上不显著。

    在实证分析中,有时会根据研究内容的需要改变基准组的设定,此时可使用ib.b.的前缀,具体写法如下表2中所描述:

    表2 基准组的运算符及含义

    表2 基准组的运算符及含义.png

    在实证分析中,变量的交乘项高次项往往是重要的解释变量。以研究妇女工资的决定因素为例,若我们想在模型中加入黑人每周工作时数的变量,则传统做法是预先生成一个虚拟变量 black 代表是否黑人,再生成一个新变量 black_x_hours 表示黑人与每周工作时数的交乘项,然后再将这个新变量放入回归模型中。Stata命令为:

    . gen black=1
    . replace black=0 if race!=2
    . gen black_x_hours = black * hours
    . reg wage black_x_hours

    若在Stata中使用因子变量实现上述过程,则命令十分简洁:

    . reg wage 2.race#c.hours

    下面,我们介绍如何在Stata中使用因子变量表示变量的交乘项高次项。我们以研究妇女工资的决定因素为例进行说明。

    (1) 两个类别变量的交乘项:
    在回归模型中加入种族race和职业类别occupation交乘项,Stata命令为:

    . reg wage i.race#i.occupation

    若在回归模型中既要放入种族race和职业类别occupation虚拟变量,又需要同时放入这两个变量的交乘项,则在回归命令中使用i.race##i.occupation,相应的命令为:

    . reg wage i.race##i.occupation

    (2) 类别变量与连续变量的交乘项:
    在回归模型中加入种族race和每周工作时数hours的交乘项,Stata命令为:

    . reg wage i.race#c.hours

    需要注意的是,在上例中,由于我们把hours变量视为连续变量,因此,需要在其前面加上c.符号以便告知Stata该变量是连续变量

    (3) 连续变量与连续变量的交乘项(高次项):
    在回归模型中加入年龄age变量,以及其平方项,Stata命令如下:

    . reg wage c.age##c.age

    上述命令中c.age表示年龄age变量被当成连续型变量。如果我们在Stata命令中使用i.age,则年龄age变量被当成类别变量处理,此时,类别的个数为年龄age变量中不同取值的个数。

    3. 常用回归模型的因子变量表述

    范例1:邹氏检验

    由于不同组别之间可能会存在差异(截距项或斜率项存在差异),因此,我们需要检验这些差异在统计上是否显著。这时,我们可以使用邹氏检验。以研究妇女工资的影响因素为例,我们可以使用chowtest命令检验工会成员与非工会成员两个样本组中工资影响因素是否存在差异(或称之为存在结构变化),Stata命令如下:

    . global xx "hours age tenure ttl_exp married"
    . chowtest wage $xx, group(union) detail

    事实上,我们也可以使用因子变量的语法,在回归模型中加入分组变量其他控制变量交乘项,然后再联合检验分组变量的系数以及所有交乘项的系数是否都等于0。此时,即使我们不使用chowtest命令,也可以轻松实现邹氏检验,Stata命令如下:

    . global xx "hours age tenure ttl_exp married"
    . reg wage $xx i.union i.union#c.($xx)
    . testparm i.union i.union#c.($xx)

    范例2:双向固定效应模型

    在实证分析过程中,经常需要在模型中加入反映年度、公司或行业特征虚拟变量。当虚拟变量的数目众多时,采用手动输入变量的方式会非常耗时。例如,下述模型(1)是文献中广泛应用的双向固定效应模型

    yit=αi+λt+xitβ+εit(1) y i t = α i + λ t + x i t ′ β + ε i t ( 1 )

    上式等价于
    yit=i=1NDi αi+t=2TWt λt+xitβ+εit(2) y i t = ∑ i = 1 N D i ⋅   α i + ∑ t = 2 T W t ⋅   λ t + x i t ′ β + ε i t ( 2 )

    其中, Di D i 是对应于每家公司的虚拟变量,对于公司 i i Di=1,否则 Di=0 D i = 0 。对于一个有 N=1000 N = 1000 家公司的面板数据而言,共有 1000 个虚拟变量。 Wt W t T1 T − 1 个年度虚拟变量^[5]^, 定义方式与 Di D i 相似。

    若使用因子变量,则语法很简单^[6]^:

    . reg y x1 x2 x3 i.id i.year

    其中,i.id 表示 N-1 个公司虚拟变量(Stata 会默认将一家公司作为基准组),即(1)式中的 αi α i

    当然,我们也可以用 xtreg 命令自带的 fe 选项来控制个体效应 ,同时使用 因子变量 来加入年度虚拟变量 ,命令如下:

    . xtreg y x1 x2 x3 i.year, fe

    范例3:DID模型

    在实证分析中,常常需要分析政策实施后带来的效果。这时,我们就需要采集实验组控制组两组样本(实验组的样本代表政策实施前后的情况,控制组的样本代表不实施政策的情况),再把这两组样本合并为一份数据后进行回归分析。在建模时,我们需要设定一个是否为实验组或控制组的处理虚拟变量 Treat 放入模型,还需要设定一个反映政策实施时间前与实施后的时间虚拟变量 Time 放入模型,此外,还需要在模型中加入 Treat 变量与 Time 变量的交乘项,该交乘项的系数估计值 a3 a 3 就是政策实施后带来的效果,即实验组在政策实施后与假设未实施政策的差异。回归模型如下式(3)所示:

    y=a0+a1Treat+a2Time+a3Treat×Time+xβ+ε(3) y = a 0 + a 1 T r e a t + a 2 T i m e + a 3 T r e a t × T i m e + x ′ β + ε ( 3 )

    在 Stata 中的命令写法如下:

    . reg y Treat Time Treat#Time x1 x2 x3
    *-或者写为
    . reg y Treat##Time x1 x2 x3

    在多期 DID 分析中,我们常常需要加入年度虚拟变量处理变量交乘项来检验共同趋势假设(common trend)以及政策效果。例如,在 Acemoglu and Angrist(2001) 文中,作者采集了1988年至1997年的人口调查数据,将样本分为残疾人与非残疾人,使用多期DID模型研究了1992年美国对残疾人工作保护法案(ADA)的实施效果。文中模型设定如下(pp.925):

    yit=a0+xitγ+pitη+xitpitβ+ditδ+ditpitαt+εit(4) y i t = a 0 + x i t ′ ⋅ γ + p i t ′ ⋅ η + x i t ′ ⋅ p i t ⋅ β + d i t ′ ⋅ δ + d i t ′ ⋅ p i t ⋅ α t + ε i t ( 4 )

    其中, i i 为残疾人个体;t 为年份; yit y i t 为工作周数或周平均工资; xit x i t ′ 为一系列控制变量, pit p i t 为时间趋势项; dit d i t 为是否残疾,其系数为 δ δ αt α t 为随年份变化的实施 ADA 与未实施 ADA 对残疾人工作保护效应的系数。当 t1992 t ≥ 1992 年时, αt α t 量化了实施ADA之后对残疾人工作保护的效果(使用非残疾人作为控制组);当 t<1992 t < 1992 年时, αt α t 检验了实施 ADA 之前的各年份中残疾人和非残疾人的工作周数或周平均工资是否在统计上具有显著差异,相当于同时进行了DID模型的 “共同趋势假设” 的检验,若 αt α t 系数在1992年之前不显著,表明存在“共同趋势”。Stata 命令如下^[7]^:

    . use "ABA_JPE2001.dta", clear
    . global controls "i.age_G i.edu_G i.race_G i.region"
    . reg wkswork1 i.year##($controls) i.disabled##i.year

    Stata回归结果如下:

    (部分回归结果省略)
    -----------------------------------------------------------------------------------
             wkswork1 |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
    ------------------+----------------------------------------------------------------
    ------------------|----------------------部分回归结果省略----------------------------
                      |
        disabled#year |
         Disabl#1988  |  -.6873656   .7197987    -0.95   0.340    -2.098154    .7234227
         Disabl#1989  |  -.5385104   .7056609    -0.76   0.445    -1.921589    .8445682
         Disabl#1990  |  -2.289956   .6945586    -3.30   0.001    -3.651274   -.9286372
         Disabl#1991  |  -2.158817   .6916205    -3.12   0.002    -3.514376    -.803257
         Disabl#1992  |  -1.386539   .6873483    -2.02   0.044    -2.733725   -.0393526
         Disabl#1993  |  -2.743325   .6953003    -3.95   0.000    -4.106097   -1.380553
         Disabl#1994  |  -3.917873   .7198205    -5.44   0.000    -5.328704   -2.507042
         Disabl#1995  |  -3.702671    .748066    -4.95   0.000    -5.168863    -2.23648
         Disabl#1996  |  -4.472484   .7373381    -6.07   0.000    -5.917649   -3.027319
                      |
                _cons |   41.05231   .4546278    90.30   0.000     40.16125    41.94337
    -----------------------------------------------------------------------------------

    范例4:超越对数生产函数

    很多文献使用超越对数生产函数估计生产效率,模型中会包含投入要素 KL 的高阶项,包括平方项和二者的交乘项^[8]^。例如在 Kumbhakar(1989) 中,作者通过在模型中加入二次项来捕捉要素的交互影响和潜在的非线性关系,模型如下式(5)所示。

    lny=α+k=1kβklnxk+12k=1km=1mγkmlnxklnxm(5) l n y = α + ∑ k = 1 k β k ⋅ l n x k + 1 2 ∑ k = 1 k ∑ m = 1 m γ k m ⋅ l n x k ⋅ l n x m ( 5 )

    此时,使用因子变量会让Stata中的命令变得异常简洁,如下所示:

    . webuse frontier1.dta, clear  
    . global y "lnoutput"            // y
    . global x "lnlaborlncapital"    // x1 x2
    *-超越对数生产函数
    . sfcross $y c.($x)##c.($x)      // Eq.(5)

    4. 边际效应分析和图形化呈现

    一些实证研究的文献中常常加入变量的交乘项以反映可能存在的调节效应,例如 Faulkender and Wang(2006)戴魁早和刘友金(2016)张苏和高扬(2012) ^[9]^,此时最重要的是分析 xy边际效应

    y=α1+xβ1+zβ2+(xz)β3+ε(6) y = α 1 + x β 1 + z β 2 + ( x ⋅ z ) β 3 + ε ( 6 )

    xy 的边际影响为:

    yx=β1+zβ3 ∂ y ∂ x = β 1 + z β 3

    显然,xy 的边际影响取决于 z 的取值。这种边际效应分析若是采用手动计算会非常繁琐,而后续的图形呈现则更为复杂。然而,若是借助因子变量,并配合Stata中的marginsmarginsplot命令,对于包含交乘项的模型中的边际效应的分析和图形化展示都变得异常轻松。

    下面,我们以研究妇女工资的决定因素为例进行说明。使用Stata软件的自带数据nlsw88.dta(1988年美国妇女小时工资),以wage(妇女的小时工资)作为被解释变量,以race(种族类别)collgrad(是否大学毕业)race与collgrad的交乘项作为解释变量建立线性回归模型,Stata中的命令如下:

    . sysuse "nlsw88.dta", clear
    . reg wage i.race##collgrad

    回归结果如下所示:

    (部分回归结果省略)
    -------------------------------------------------------------------------------------
                   wage |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
    --------------------+----------------------------------------------------------------
                   race |
                 black  |     -1.442      0.297    -4.85   0.000       -2.026      -0.859
                 other  |     -0.380      1.348    -0.28   0.778       -3.024       2.263
                        |
               collgrad |
          college grad  |      2.981      0.312     9.54   0.000        2.368       3.593
                        |
          race#collgrad |
    black#college grad  |      2.502      0.676     3.70   0.000        1.177       3.827
    other#college grad  |      1.678      2.297     0.73   0.465       -2.826       6.182
                        |
                  _cons |      7.318      0.158    46.25   0.000        7.008       7.629
    -------------------------------------------------------------------------------------

    我们使用margins命令来计算种族(race)与是否大学毕业(collgrad)的交乘项的各个类别妇女小时工资(wage)预测边际值,Stata命令和结果如下所示:

    . margins i.race#collgrad

    计算结果如下所示:

    Adjusted predictions                            Number of obs     =      2,246
    Model VCE    : OLS
    
    Expression   : Linear prediction, predict()
    
    -----------------------------------------------------------------------------------------
                            |            Delta-method
                            |     Margin   Std. Err.      t    P>|t|     [95% Conf. Interval]
    ------------------------+----------------------------------------------------------------
              race#collgrad |
    white#not college grad  |   7.318251   .1582176    46.25   0.000     7.007983     7.62852
        white#college grad  |   10.29895   .2693243    38.24   0.000     9.770797     10.8271
    black#not college grad  |   5.875918   .2519298    23.32   0.000     5.381878    6.369958
        black#college grad  |   11.35861    .543853    20.89   0.000      10.2921    12.42512
    other#not college grad  |   6.938195   1.338677     5.18   0.000     4.313019    9.563371
        other#college grad  |   11.59678   1.839835     6.30   0.000     7.988818    15.20474
    -----------------------------------------------------------------------------------------

    使用marginsplot命令将计算结果用图的形式表示,Stata命令和结果如下所示:

    . marginsplot

    图1 种族与是否大学毕业交乘项各类别的妇女小时工资的预测边际值

    图1 种族与是否大学毕业交乘项各类别的妇女小时工资的预测边际值.png

    从图1中可以直观的看到,不论种族类别,大学毕业的妇女的平均工资高于非大学毕业的妇女,该结果符合我们的一般认知;另外,我们从图中还发现一个有趣的结果,非大学毕业的白人妇女的平均工资高于非大学毕业的黑人妇女,而大学毕业的白人妇女的平均工资低于大学毕业的黑人妇女。

    下面,我们使用margins命令附加atmeans选项来计算当其他变量取均值不同种族类别的妇女小时工资的预测边际值,Stata命令和结果如下所示:

    . margins i.race, atmeans
    *-或者写为
    . margins race, atmeans

    计算结果如下所示:

    Adjusted predictions                            Number of obs     =      2,246
    Model VCE    : OLS
    
    Expression   : Linear prediction, predict()
    at           : 1.race          =    .7288513 (mean)
                   2.race          =    .2595726 (mean)
                   3.race          =    .0115761 (mean)
                   0.collgrad      =    .7631345 (mean)
                   1.collgrad      =    .2368655 (mean)
    
    ------------------------------------------------------------------------------
                 |            Delta-method
                 |     Margin   Std. Err.      t    P>|t|     [95% Conf. Interval]
    -------------+----------------------------------------------------------------
            race |
          white  |   8.024276    .136558    58.76   0.000     7.756482    8.292069
          black  |   7.174578    .231424    31.00   0.000      6.72075    7.628406
          other  |   8.041653   1.110659     7.24   0.000     5.863625    10.21968
    ------------------------------------------------------------------------------

    使用marginsplot命令将计算结果用图的形式表示,Stata命令和结果如下所示:

    . marginsplot

    图2 不同种族类别的妇女小时工资的预测边际值

    图2 不同种族类别的妇女小时工资的预测边际值.png

    从图2中可以直观的看到,白人与其他种族的妇女的平均工资高于黑人妇女。

    两个连续变量交乘项对被解释变量的边际效应也可以使用margins命令来计算。我们仍以研究妇女工资的决定因素为例进行说明。在回归模型中加入tenure(当前职业的工作年限)及其平方项,并将hours(每周工作时数)age(妇女年龄)married(是否结婚)south(是否居住在南部地区)race(种族类别)作为控制变量,Stata命令如下所示:

    . global xx "hours age married south i.race"
    . reg wage c.tenure##c.tenure $xx

    回归结果如下:

    (部分回归结果省略)
    -----------------------------------------------------------------------------------
                 wage |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
    ------------------+----------------------------------------------------------------
               tenure |   .3015859   .0704148     4.28   0.000        .1635    .4396718
                      |
    c.tenure#c.tenure |  -.0076366   .0037758    -2.02   0.043    -.0150411   -.0002321
                      |
                hours |   .0749604   .0115722     6.48   0.000     .0522669    .0976539
                  age |  -.0850009   .0388991    -2.19   0.029    -.1612832   -.0087185
              married |  -.4619864   .2544385    -1.82   0.070     -.960949    .0369761
                south |  -1.283751   .2493374    -5.15   0.000     -1.77271   -.7947914
                      |
                 race |
               black  |  -1.221256   .2870854    -4.25   0.000    -1.784241   -.6582719
               other  |   .3129332   1.098312     0.28   0.776    -1.840893     2.46676
                      |
                _cons |   8.183759   1.632092     5.01   0.000     4.983171    11.38435
    -----------------------------------------------------------------------------------

    由于在模型中加入了 tenure 的平方项,因此,tenurewage 的边际效应将会受到 tenure 取值的影响。上述Stata命令对应的模型设定如下:

    wage=α+tenureβ1+(tenuretenure)β2+x3β3++x8β8+ε(7) w a g e = α + t e n u r e β 1 + ( t e n u r e ⋅ t e n u r e ) β 2 + x 3 β 3 + ⋯ + x 8 β 8 + ε ( 7 )

    tenurewage 的边际影响为:

    wagetenure=β1+2tenureβ2 ∂ w a g e ∂ t e n u r e = β 1 + 2 ⋅ t e n u r e ⋅ β 2

    显然,当 tenure 取值不同时,tenurewage 的边际效应是不相同的。因此,需要先使用描述性统计分析的命令(如sum tenure)查看 tenure 取值的范围,然后再计算当 tenure 取不同的值所对应的边际效应,Stata命令如下:

    . preserve
    . keep if e(sample)
    . sum tenure
    . restore
    . margins, dydx(tenure) at(tenure=(0 1(3)25 25.9))

    计算结果如下所示:

    Average marginal effects                        Number of obs     =      2,227
    Model VCE    : OLS
    
    Expression   : Linear prediction, predict()
    dy/dx w.r.t. : tenure
    
    1._at        : tenure          =           0
    
    2._at        : tenure          =           1
    
    3._at        : tenure          =           4
    
    4._at        : tenure          =           7
    
    5._at        : tenure          =          10
    
    6._at        : tenure          =          13
    
    7._at        : tenure          =          16
    
    8._at        : tenure          =          19
    
    9._at        : tenure          =          22
    
    10._at       : tenure          =          25
    
    11._at       : tenure          =        25.9
    
    ------------------------------------------------------------------------------
                 |            Delta-method
                 |      dy/dx   Std. Err.      t    P>|t|     [95% Conf. Interval]
    -------------+----------------------------------------------------------------
    tenure       |
             _at |
              1  |   .3015859   .0704148     4.28   0.000        .1635    .4396718
              2  |   .2863127   .0632764     4.52   0.000     .1622256    .4103998
              3  |   .2404932   .0427222     5.63   0.000     .1567136    .3242728
              4  |   .1946737   .0259414     7.50   0.000     .1438016    .2455457
              5  |   .1488542   .0233928     6.36   0.000     .1029801    .1947282
              6  |   .1030346   .0380523     2.71   0.007     .0284127    .1776566
              7  |   .0572151   .0580967     0.98   0.325    -.0567145    .1711447
              8  |   .0113956   .0795548     0.14   0.886    -.1446141    .1674053
              9  |  -.0344239   .1015342    -0.34   0.735    -.2335359    .1646881
             10  |  -.0802434   .1237575    -0.65   0.517    -.3229361    .1624492
             11  |  -.0939893   .1304534    -0.72   0.471    -.3498129    .1618343
    ------------------------------------------------------------------------------

    使用marginsplot命令将计算结果用图的形式表示,Stata命令和结果如下所示:

    . marginsplot, xlabel(,format(%3.1f) angle(60))

    图3 工作年限对妇女工资的平均边际效应

    图3 工作年限对妇女工资的平均边际效应.png

    Stata中的多数命令都支持marginsmarginsplot命令。因此,即使对于非线性模型,如logit, tobit等,我们仍然可以借助这两个命令很方便地分析边际效应。

    5. 输出回归结果时的问题及解决办法

    以研究妇女工资的决定因素为例。wage(妇女的小时工资)作为回归模型的被解释变量,race(种族类别)collgrad(是否大学毕业)race与collgrad的交乘项作为解释变量,并将回归结果输出到Excel中,Stata命令和结果如下:

    . sysuse "nlsw88.dta", clear
    . reg wage i.race##collgrad
    . est store R1
    . esttab R1 using D:/Table_factor_1.csv, nogap replace

    表3 1988年美国妇女工资模型结果

    表3 1988年美国妇女工资模型结果.png

    我们发现在表3中有很多变量的系数值为 0,并缺失 t 统计量。造成这种情况的原因有二:一方面是由于有些虚拟变量作为了基准组,例如:1.race0.collgrad1.race#0.collgrad,Stata默认将它们作为基准组,所以就缺失这些基准组的估计系数值和标准误;另一方面是由于有些交乘项中的其中一个因子变量是基准组,其它变量与这个作为基准组的因子变量交乘后的交乘项就被忽略了,所以其估计系数值和标准误就会缺失,例如:1.race#1.collgrad2.race#0.collgrad3.race#0.collgrad。此时,可以使用esttab命令的drop()选项来屏蔽这些系数的显示,还可以使用nobasenoomit的选项,Stata命令和结果如下所示:

    *-输出结果(不显示基准组和忽略组的系数,使用drop选项)
    . esttab R1 using D:/Table_factor_2.csv, nogap      ///
             drop(1.race 0.collgrad 1.race#0.collgrad   ///
             1.race#1.collgrad 2.race#0.collgrad        ///
             3.race#0.collgrad) replace
    *-输出结果(不显示基准组和忽略组的系数,使用nobase与noomit选项)
    . esttab R1 using D:/Table_factor_3.csv, nogap nobase noomit replace

    表4 1988年美国妇女工资模型结果(删除缺失估计系数值的变量)

    表4 1988年美国妇女工资模型结果(删除缺失估计系数值的变量).png

    6. 小结

    本文介绍了Stata中因子变量产生虚拟变量交乘项的使用方法,以常用经典回归模型为例,提供了它们的Stata命令,并进一步提供了因子变量marginsmarginsplot命令相配合分析边际效应的示例。在Stata中的大多数命令中都可以使用因子变量的表述方法。该方法可以使Stata命令更加简洁,并能够大幅度提高实证分析的效率,但需要注意分析使用因子变量表述方法后得到的模型设定结构

    参考文献:

    Acemoglu, D., J. D. Angrist, 2001, Consequences of Employment Protection? The Case of the Americans with Disabilities Act, Journal of Political Economy, 109 (5): 915-957.
    Altunbas, Y., M.-H. Liu, P. Molyneux, R. Seth, 2000, Efficiency and Risk in Japanese Banking, Journal of Banking & Finance, 24 (10): 1605-1628.
    Faulkender, M., R. Wang, 2006, Corporate Financial Policy and the Value of Cash, Journal of Finance, 61 (4): 1957-1990.
    Kumbhakar, S. C., 1989, Estimation of Technical Efficiency Using Flexible Functional Form and Panel Data, Journal of Business and Economic Statistics, 7 (2): 253-258.
    Wang, E. C., 2007, R&D Efficiency and Economic Performance: A Cross-Country Analysis Using the Stochastic Frontier Approach, Journal of Policy Modeling, 29 (2): 345-360.
    戴魁早, 刘友金, 2016, 要素市场扭曲与创新效率——对中国高技术产业发展的经验分析, 经济研究, (7): 72-86.
    王德祥, 李建军, 2009, 我国税收征管效率及其影响因素——基于随机前沿分析(SFA)技术的实证研究, 数量经济技术经济研究, (4): 152-160.
    张苏, 高扬, 2012, 大学生学习行为与国家竞争力关联关系的实证研究, 管理世界, (4): 175-176.


    注释:
    [1] 详情参阅Stata帮助文件help fvvarlist
    [2] 详情参见Stata帮助文件help varlist
    [3] 为了便于说明,后续多数回归命令中都省略了控制变量。
    [4] 事实上,只要你的数据中存储了race变量,我们只需要保存好dofile文件,就无需生成black这个中间变量。
    [5] 之所以加入T - 1 个年度虚拟变量,是为了防止完全共线性。
    [6] 此处设定i.year会自动加入 T 个年度虚拟变量,但Stata会自动删除一个,以防完全共线性。
    [7] 文中实证分析所用的原始数据和相关程序可以从作者主页上下载:http://economics.mit.edu/faculty/acemoglu/data/aa2001
    [8] 例如,Altunbas, Liu, Molyneux and Seth(2000) 使用超越对数成本函数估算了日本银行的效率和风险;Wang(2007) 则使用超越对数生产函数研究30个国家R&D效率;王德祥和李建军(2009) 基于超越对数生产函数估算了我国的税收流失率。
    [9] Faulkender and Wang(2006) 检验了由公司融资约束对现金持有边际市场价值的影响。戴魁早和刘友金(2016) 研究发现了要素市场扭曲对创新效率的影响存在着企业差异,企业规模在规避要素市场扭曲对创新效率的抑制效应中具有积极作用。张苏和高扬(2012) 的实证研究发现学生来源于城市或农村地区对国家竞争力的影响作用受到每周上网时间的影响,如果上网时间在每周8小时以下,城市大学生的学习行为落入“增进国家竞争力导向”上高效率区域而不是低效率区域的概率比农村大学生要高,否则要低。


    关于我们

    联系我们

    • 欢迎赐稿: 欢迎将您的文章或笔记投稿至Stata连享会(公众号: StataChina),我们会保留您的署名;录用稿件达五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
    • 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
    • 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
    • 联系邮件: StataChina@163.com

    往期精彩推文

    Stata连享会推文列表


    欢迎加入Stata连享会(公众号: StataChina)

    Stata 现场培训报名中

    连玉君Stata现场班报名中

    展开全文
  • R 语言因子转化为虚拟变量

    千次阅读 2020-05-18 08:28:28
    回归分析时,有时候我们需要知道每个因子每个水平的回归系数,这样就需要将因子转化为虚拟变量R语言中有model.matrix进行转换,但是只能一个转换一个因子,这里我们用R包useful,可以支持多个因子同时转换。...

    1. 背景

    在回归分析时,有时候我们需要知道每个因子每个水平的回归系数,这样就需要将因子转化为虚拟变量,R语言中有model.matrix进行转换,但是只能一个转换一个因子,这里我们用R包useful,可以支持多个因子同时转换。

    2. 示例数据

    Herd <- c(1,1,2,2,2,3,3,3,3)
    Year = c(rep(c(2018,2019),each=4),2020)
    Sire <- c("ZA","AD","BB","AD","AD","CC","CC","AD","AD")
    Yield <- c(110,100,110,100,100,110,110,100,100)
    dat <- data.frame(Herd,Year,Sire,Yield)
    dat$Herd <- as.factor(dat$Herd)
    dat$Year <- as.factor(dat$Year)
    dat
    


    这里,Herd,Year,Sire都是因子,如果在构建矩阵时,需要转化为虚拟变量。

    3. R中model.matrix转化方法

    一个因子,一个因子的转化,然后进行合并:

    X1 = model.matrix(~Herd-1,data=dat)
    X1
    
    X2 = model.matrix(~Year-1,data=dat)
    X2
    
    X = cbind(X1,X2)
    X
    

    4. 更简单的方法

    # 简单的方法
    # install.packages("useful") # 如果没有安装useful这个包,运行这行命令进行安装。
    library(useful)
    build.x(~Herd+Year-1,data=dat,contrasts = F)
    

    5. 全部代码

    # 示例数据
    Herd <- c(1,1,2,2,2,3,3,3,3)
    Year = c(rep(c(2018,2019),each=4),2020)
    Sire <- c("ZA","AD","BB","AD","AD","CC","CC","AD","AD")
    Yield <- c(110,100,110,100,100,110,110,100,100)
    dat <- data.frame(Herd,Year,Sire,Yield)
    dat$Herd <- as.factor(dat$Herd)
    dat$Year <- as.factor(dat$Year)
    dat
    
    
    # R中model.matrix
    X1 = model.matrix(~Herd-1,data=dat)
    X1
    
    X2 = model.matrix(~Year-1,data=dat)
    X2
    
    X = cbind(X1,X2)
    X
    
    
    # 简单的方法
    library(useful)
    build.x(~Herd+Year-1,data=dat,contrasts = F)
    
    

    6. 怎么样,学会了么

    快来关注我吧!
    公众号:育种数据分析之放飞自我

    展开全文
  • 这是刚刚探索出来的一个小技巧,这里记录一下!对于个别变量的类型转换,例如从其他类型转化为因子变量,base包中的transform()函数或者dplyr包中的mutate()函数就可以快...

    这是刚刚探索出来的一个小技巧,在这里记录一下!

    对于个别变量的类型转换,例如从其他类型转化为因子变量,base包中的transform()函数或者dplyr包中的mutate()函数就可以快速完成:

    library(tidyverse)
    dta <- mtcars
    
    # transform函数
    dta %>%
      transform(cyl = factor(cyl),
                hp = factor(hp)) %>%
      as_tibble()
    
    # mutate函数
    dta %>%
      mutate(cyl = factor(cyl),
             hp = factor(hp)) %>%
      as_tibble() 
    

    可以看出两个函数在管道操作符中的使用方式还是比较相似的,都是将所有需要转换的变量依次写入即可。

    但是,当需要转换类型的变量比较多时,这种挨个写入变量名的方式就很不适用了。这里就需要使用dplyr包中的辅助函数across()了。

    across()函数功能之一就是选择(select)指定变量名或符合约束条件的变量名,然后对这些变量进行函数运算,语法结构如下:

    across(.cols = everything(), .fns = NULL, ..., .names = NULL)
    

    上面.cols就是选择出的变量,.fns是应用于这些变量的函数。先列举几个常与它连用的辅助函数:

    • everyyhing():选择所有变量;

    • starts_with():选择变量名以特定字符开始的变量;

    • ends_with():选择变量名以特定字符结束的变量名。

    上面的这些函数都来自于dplyr包,这里先不做详细介绍,后面会有推文总结dplyr中所有的辅助函数。另外关于dplyr包中“选择(select)”的含义前面推文已有介绍(dplyr | 数据导入和预处理的常用函数)。

    为了批量地将一个数据框中所有的整型变量都转换为因子,第一步是要选择出所有整型变量。

    首先想到判断整型变量的函数应该是is.integer(),但是在实操中发现,数据框的整型变量大多是以double(双精度)类型存在的,使用is.integer不会选择出任何变量,也就达不到目的;而由于double类型也包括小数,所以使用is.double会选择出多余的变量,同样达不到目的。对比结果如下:

    dta %>%
      mutate(across(where(is.integer), factor)) %>%
      as_tibble()
    
    dta %>%
      mutate(across(where(is.double), factor)) %>%
      as_tibble()
    
    # 输出结果
    > dta %>%
    +   mutate(across(where(is.integer), factor)) %>%
    +   as_tibble()
    # A tibble: 32 x 11
         mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
       <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
     1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
     2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
     3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
     4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
     5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
     6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
     7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
     8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
     9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
    10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
    # ... with 22 more rows
    
    > dta %>%
    +   mutate(across(where(is.double), factor)) %>%
    +   as_tibble()
    # A tibble: 32 x 11
       mpg   cyl   disp  hp    drat  wt    qsec  vs    am    gear  carb 
       <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct>
     1 21    6     160   110   3.9   2.62  16.46 0     1     4     4    
     2 21    6     160   110   3.9   2.875 17.02 0     1     4     4    
     3 22.8  4     108   93    3.85  2.32  18.61 1     1     4     1    
     4 21.4  6     258   110   3.08  3.215 19.44 1     0     3     1    
     5 18.7  8     360   175   3.15  3.44  17.02 0     0     3     2    
     6 18.1  6     225   105   2.76  3.46  20.22 1     0     3     1    
     7 14.3  8     360   245   3.21  3.57  15.84 0     0     3     4    
     8 24.4  4     146.7 62    3.69  3.19  20    1     0     4     2    
     9 22.8  4     140.8 95    3.92  3.15  22.9  1     0     4     2    
    10 19.2  6     167.6 123   3.92  3.44  18.3  1     0     4     4    
    # ... with 22 more rows
    

    可以看出,使用is.integer没有任何变量被转化为factor类型,说明across()中没有被添加任何变量名;而使用is.double所有的变量都会被转化为factor类型。

    由于上面两个函数都达不到目标,可以考虑从整数的特点出发,即整数除以1后的余数为0。R语言中的取余函数为%%,基于此,可以自定义一个“选择”函数:

    function(x) all(x %% 1 == 0)
    

    all()函数来自基础包base,如果函数内的判断条件成立会返回TRUE,否则返回FALSE。

    把自定义函数应用到across()中:

    dta %>%
      mutate(across(function(col) all(col %% 1==0), factor)) %>%
      as_tibble()
    
    # 输出结果
    > dta %>%
    +   mutate(across(function(col) all(col %% 1==0), factor)) %>%
    +   as_tibble()
    # A tibble: 32 x 11
         mpg cyl    disp hp     drat    wt  qsec vs    am    gear  carb 
       <dbl> <fct> <dbl> <fct> <dbl> <dbl> <dbl> <fct> <fct> <fct> <fct>
     1  21   6      160  110    3.9   2.62  16.5 0     1     4     4    
     2  21   6      160  110    3.9   2.88  17.0 0     1     4     4    
     3  22.8 4      108  93     3.85  2.32  18.6 1     1     4     1    
     4  21.4 6      258  110    3.08  3.22  19.4 1     0     3     1    
     5  18.7 8      360  175    3.15  3.44  17.0 0     0     3     2    
     6  18.1 6      225  105    2.76  3.46  20.2 1     0     3     1    
     7  14.3 8      360  245    3.21  3.57  15.8 0     0     3     4    
     8  24.4 4      147. 62     3.69  3.19  20   1     0     4     2    
     9  22.8 4      141. 95     3.92  3.15  22.9 1     0     4     2    
    10  19.2 6      168. 123    3.92  3.44  18.3 1     0     4     4    
    # ... with 22 more rows
    

    可以看出,数据框中所有的整型变量都已经被转化为factor类型了,而非整型变量依然是原本的double类型,也就达到了批量转换变量类型的目的了。如果有其他类似的需求,对自定义函数进行对应的修改就可以了。

     

     

    展开全文
  • R语言as.numeric函数将因子变量(factor)转化为数值变量(Numeric) 目录 R语言as.numeric函数将因子变量(factor)转化为数值变量(Numeric) #基本语法 #从因子变量到数值变量 # 转化为数值 # 错误的转化方式...
  • R语言可视化包ggplot2包通过因子变量设置图像颜色实战 目录 R语言可视化包ggplot2包通过因子变量设置图像颜色实战 #ggplot2包通过因子变量设置图像颜色语法 #使用iris数据集 #ggplot2包通过因子变量设置图像...
  • R因子变量的等级进行重新排序(Reorder Factor Levels) 目录 R因子变量的等级进行重新排序(Reorder Factor Levels) 因子等级重排 因子等级重排语法 因子等级重排 # 仿真数据 # 其中region...
  • R语言droplevels函数删除因子变量(factor)没有用到的级别(level)实战 目录 R语言droplevels函数删除因子变量(factor)没有用到的级别(level)实战 #基本语法 #删除因子向量的级别 #删除dataframe因子向量的...
  • R语言 因子

    千次阅读 2020-04-04 06:07:51
    因子,也称为因子变量R中用于对数据进行分类...在R中,使用因子来表示名义变量或有序变量,其中factor()函数是一种定义因子的方法。它是将一个向量转换成因子,其使用格式为 factor(x = character(),levels,lab...
  • 1.数据框多个变量是分类变量,但值是1,2,3,读进去的时候是整数格式。手动一个一个设置太浪费时间,有没有好的办法批量设置? 2.尝试了自写函数 ``` fac(x){ x(x) } with(fat, apply(fat[,64:233],2,fac)) ``` ...
  • R变量聚类提取体型因子中的应用.pdf
  • R变量聚类提取胜任力因子中的应用研究.pdf
  • R语言使用dplyr包基于因子变量(factor)将原dataframe拆分为每一个因子对应的单独数据集dataframe实战 目录 R语言使用dplyr包基于因子变量(factor)将原dataframe拆分为每一个因子对应的单独数据集dataframe...
  • R 如何给因子的类型变量修改元素

    千次阅读 2016-08-15 23:14:05
    #将x转换成因子类型存处在x1 x1(x) #我们可以用levels函数查看他的水平 levels(x1) #获取因子水平为2的位置 num(levels(x1)==2) #将水平为2的重新赋值为1212,这样我们就完成了修改 levels(x1)[num]<-1212
  • 新的甘特图功能,丰富你的文章 Mon 06Mon 13Mon 20已完成 进行 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid 关于 甘特图 语法,参考 这儿, UML 图表 可以使用UML图表进行渲染。...
  • R语言创建自定义颜色(分类变量与颜色形成稳定映射)实战:设置因子变量(分类变量)到可视化颜色的稳定映射 目录 R语言创建自定义颜色(分类变量与颜色形成稳定映射)实战:设置因子变量(分类变量)到可视化...
  • 本篇描述分类变量如何进行回归(翻译自...因此,当研究者希望回归模型包含一
  • R语言基础——因子

    2020-03-14 09:07:07
    R语言基础——因子 变量分类 1、名义型变量 2、有序型变量 3、连续型变量 因子 因子R名义型变量和有序型变量称为因子,factor。这些分类变量的可能值称为一个水平,level,例如good,better,best,都称为一个...
  • R语言的一般线性模型 R语言的一般线性模型用函数:lm(),即可轻松实现。 例子 建立一般线性模型 NC.glm1 = lm(fmri.SFG_R_CerebellumGM_L ~ age + gender + race,data = NC) summary(NC.glm1) 这里解释一下变量(我...
  • R语言因子分析

    万次阅读 多人点赞 2017-02-27 16:31:08
    部分参考薛毅的《统计建模与R软件》和《R语言实战》因子模型: X=μ + A*F* + ε 其中F=[(f1,f2,…,fm)]^T为公共因子向量,[ε=(ε1,ε2,…,εp)]^T为特殊因子向量,A=[(aij)]^(p×m)为因子载荷矩阵。I.参数估计...
  • 当我们提到“线性”回归时,特指的是因变量(结果变量)为连续性变量,与自变量(预测变量)有线性关系,而对自变量(预测变量)并没有要求一定要是连续性变量。前面我们已经提到,当自变量是连续变量时,线性回归...
  • 本课程旨在帮助学习者快速入门R语言: 课程系统详细地介绍了使用R语言进行数据处理的基本思路和方法。 课程能够帮助初学者快速入门数据处理。 课程通过大量的案例详细地介绍了如何使用R...
  • R语言中自带“iris”数据最后一列是因子变量,但是是以单词区分的,我想把同样的单词变成一样的数字,该怎么办?
  • 变量(Dummy Variables)也称虚拟变量回归是一个很重要的概念。哑变量的引入使得回归模型变得更复杂,但对问题描述更简明而且接近现实。 对于二分类变量,实际模型的取值只有“0”和“1”两个值,无论...
  • R语言数据框中变量重编码

    千次阅读 2020-06-03 02:02:34
    重编码就是根据同意变量...要重编码数据,可以使用R中的一个或者多个逻辑运算符 逻辑运算后会返回TRUE 或者FALSE 重编码方法(举例说明): 对于名为mydata数据框: mydata x1 x2 sum mean 1 1 5 6 3 2 2 6 8 4 3 3 7
  • 基于R语言因子分析

    2021-10-26 20:46:38
    目录 1.基本理论 1.1因子分析的基本思想 1.2因子分析模型 1.3因子分析的基本步骤 2.因子载荷求解 ... 2.3主成分方差最大化正交因子旋转...因子分析法是从研究变量内部相关的依赖关系出发,把一些具有错综复杂关系...
  • R语言里面的因子

    千次阅读 2019-09-25 11:02:09
    R语言中因子确实不好理解,很多人都这么觉得。在R语言中因子(factor)表示的是一个符号、一个编号或者一个等级,即,一个点。例如,人的个数可以是1,2,3,4......

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,430
精华内容 15,772
关键字:

在r中因子变量