精华内容
下载资源
问答
  • 如何创建虚拟变量
    千次阅读
    更多相关内容
  • 对于一条观测属于多个类别的情况,考虑如何创建虚拟变量矩阵。

    《利用Python进行数据分析》一书中有这样一个创建虚拟变量的例子。
    原始数据:
    在这里插入图片描述
    我们需要根据类别列genres生成每个电影所属类别的虚拟变量。首先问题在于每个观测属于多个类别,不能直接应用pd.get_dummies函数。

    • 第一步:首先需要知道具体有多少种电影流派
    all_genres = []
    for x in movies.genres:
    	all_genres.extend(x.split('|'))
    genres = pd.unique(all_genres)
    
    • 第二步:创建一个用于储存虚拟变量的dataframe
    zero_matrix = np.zeros((len(movies), len(genres))
    dummies = pd.DataFrame(zero_matrix, columns = genres)
    
    • 第三步:遍历每一部电影,根据电影所属的类别在dummiesdataframe中进行标注
    for i, gen in enumerate(movies.genres):
    	#dummies.columns 返回dummies的列标签
    	#.get_indexer方法返回列表区的索引值
    	# indices返回一个数组,储存了该电影所属类别对应的列标签
    	indices = dummies.columns.get_indexer(gen.split('|'))
    	# 使用iloc方法进行索引
    	dummies.iloc[i, indices] = 1
    
    • 第四步:将虚拟变量结果与原始矩阵联合
    movies_windic = movies.join(dummies.add_prefix('Genre_'))
    
    展开全文
  • CustomCode_CreatingDummyVariables 编写自定义代码以创建变量
  • 1 前言 当预测变量是分类变量时,我们可以引入... 然后可以创建以下虚拟变量。 请注意,对七个类别进行编码只需要六个虚拟变量。 这是因为第七类(在本例中为星期日)被截距捕获,并在虚拟变量全部设置为零时...

    1 前言

    • 当预测变量是分类变量时,我们可以引入虚拟变量,作为回归的虚拟变量
    • 虚拟变量也可用于解释数据中的异常值。 虚拟变量不会忽略异常值,而是消除其影响。 在这种情况下,虚拟变量对该观察值取值为 1,而在其他任何正常的地方取值为 0。

    2 季节性虚拟变量

            假设我们正在预测每日数据,并且我们希望将星期几作为预测变量。 然后可以创建以下虚拟变量。

             请注意,对七个类别进行编码只需要六个虚拟变量。 这是因为第七类(在本例中为星期日)被截距捕获,并在虚拟变量全部设置为零时指定。

            与虚拟变量相关的每个系数的解释是,它是该类别相对于省略类别的影响的度量。 在上面的示例中,与星期一相关的 d1,t 系数将衡量星期一对预测变量的影响与星期日的影响相比。

    2.1 举例

    下面是一个解释虚拟变量系数含义的示例,该系数反映了澳大利亚啤酒生产的季度季节性。

     我们想预测未来啤酒生产的价值。 我们可以使用具有线性趋势和季度虚拟变量的回归模型对这些数据进行建模

             如果 t 在第 i 季度,则 di,t=1,否则为 0。 第一季度变量已被省略,因此与其他季度相关的系数是衡量这些季度与第一季度之间差异的指标。

    通过拟合,我们得到系数:

    β0

    441.8

    β1-0.34
    β2-34.66
    β3-17.82
    β472.80

    每季度平均下降趋势为 -0.34 兆升。 平均而言,第二季度的产量比第一季度低 34.7 兆升,第三季度的产量比第一季度低 17.8 兆升,第四季度的产量比第一季度高 72.8 兆升。

     

    3 虚拟变量陷阱

            许多人会尝试为第七类添加第七个虚拟变量。 这被称为“虚拟变量陷阱”,因为它会导致回归失败。 当还包括截距时,将有太多参数无法估计。

             一般规则是使用的虚拟变量比类别少一个。 所以对于季度数据,使用三个虚拟变量; 对于月度数据,使用 11 个虚拟变量; 对于星期数据,使用六个虚拟变量,依此类推。

    4 干预变量 Intervention variables

    通常有必要对可能影响要预测的变量的干预措施进行建模。例如,竞争对手的活动、广告支出、行业行动等都会产生影响。

    当效果只持续一个时期时,我们使用“尖峰”变量。这是一个虚拟变量,在干预期间取值为 1,在其他地方取值为 0。尖峰变量等效于用于处理异常值的虚拟变量。

    其他干预措施具有即时和永久的效果,那么我们使用“步长”变量。阶跃变量在干预之前取值为零,从干预开始时取值为 1。

    5 傅里叶级数

            使用季节性虚拟变量的替代方法,特别是对于长季节性周期,是使用傅立叶项。 

            如果 m 是季节性周期,则前几个傅立叶项由下式给出

             如果我们有每月的季节性,并且我们使用这些预测变量中的前 11 个,那么我们将得到与使用 11 个虚拟变量完全相同的预测。

            使用傅立叶项,我们通常需要比虚拟变量更少的预测变量,尤其是当 m 很大时。 对于较短的季节性周期(例如季度数据),使用傅立叶项相对于季节性虚拟变量几乎没有优势。

            包含傅立叶项的回归模型通常称为谐波回归,因为连续的傅立叶项表示前两个傅立叶项的谐波。

    6 R语言实现

    6.1 naive 线性回归

    library(forecast)
    
    y<-ts(c(5,3,3.1,3.2,3.3,3.4,3.5,3.3,3.2,4,4.1,4.2,
            6,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5,
            10,9,8,8.5,8.4,8.5,8.6,8.7,8.8,8.9,9,9.5),
           start = 2020,
           frequency = 12)
    
    x<-tslm(y~y)
    
    summary(x)
    
    #Call:
    #tslm(formula = y ~ y)
    
    #Residuals:
    #   Min     1Q Median     3Q    Max 
    #-2.686 -1.686 -1.036  2.814  4.314 
    
    #Coefficients:
    #            Estimate Std. Error t value
    #(Intercept)    5.686      0.392    14.5
    #            Pr(>|t|)    
    #(Intercept) 2.28e-16 ***
    #---
    #Signif. codes:  
    #0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    #Residual standard error: 2.352 on 35 degrees of freedom
    

    6.2 季节性虚拟变量

     x<-tslm(y~y+season)
    
    #Call:
    #tslm(formula = y ~ y + season)
    
    #Residuals:
    #   Min     1Q Median     3Q    Max 
    #-2.367 -1.975 -1.033  3.000  3.667 
    
    #Coefficients:
    #            Estimate Std. Error t value
    #(Intercept)   7.0000     1.6004   4.374
    #season2      -1.6667     2.2633  -0.736
    #season3      -1.9333     2.2633  -0.854
    #season4      -1.7000     2.2633  -0.751
    #season5      -1.6667     2.2633  -0.736
    #season6      -1.5667     2.2633  -0.692
    #season7      -1.4667     2.2633  -0.648
    #season8      -1.4667     2.2633  -0.648
    #season9      -1.4333     2.2633  -0.633
    #season10     -1.1000     2.2633  -0.486
    #season11     -1.0000     2.2633  -0.442
    #season12     -0.7667     2.2633  -0.339
    #            Pr(>|t|)    
    #(Intercept) 0.000204 ***
    #season2     0.468635    
    #season3     0.401438    
    #season4     0.459888    
    #season5     0.468635    
    #season6     0.495455    
    #season7     0.523126    
    #season8     0.523126    
    #season9     0.532534    
    #season10    0.631366    
    #season11    0.662568    
    #season12    0.737754    
    #---
    #Signif. codes:  
    #0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    #Residual standard error: 2.772 on 24 degrees of freedom
    #Multiple R-squared:  0.04766,	Adjusted R-squared:  -0.3888 
    #F-statistic: 0.1092 on 11 and 24 DF,  p-value: 0.9997

    6.3 傅里叶虚拟变量

    x<-tslm(y~y+fourier(y,K=2))
    
    #Call:
    #tslm(formula = y ~ y + fourier(y, K = 2))
    
    #Residuals:
    #   Min     1Q Median     3Q    Max 
    #-2.756 -1.889 -1.040  2.972  3.700 
    
    #Coefficients:
    #                       Estimate Std. Error
    #(Intercept)              5.6861     0.4095
    #fourier(y, K = 2)S1-12  -0.1321     0.5791
    #fourier(y, K = 2)C1-12   0.4746     0.5791
    #fourier(y, K = 2)S2-12   0.1251     0.5791
    #fourier(y, K = 2)C2-12   0.3222     0.5791
    #                       t value Pr(>|t|)    
    #(Intercept)             13.886 7.51e-15 ***
    #fourier(y, K = 2)S1-12  -0.228    0.821    
    #fourier(y, K = 2)C1-12   0.820    0.419    
    #fourier(y, K = 2)S2-12   0.216    0.830    
    #fourier(y, K = 2)C2-12   0.556    0.582    
    #---
    #Signif. codes:  
    #0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    #Residual standard error: 2.457 on 31 degrees of freedom
    #Multiple R-squared:  0.03367,	Adjusted R-squared:  -0.09102 
    #F-statistic:  0.27 on 4 and 31 DF,  p-value: 0.895

            Fourier() 的第一个参数允许它识别季节性周期 m 和要返回的预测变量的长度。 第二个参数 K 指定要包含多少对 sin 和 cos 项。 允许的最大值为 K = m / 2,其中 m 是季节性周期。

    展开全文
  • 虚拟变量模型
  • 如何用SPSS的Syntax设置虚拟变量,并控制生成结果的格式,以及初次接触SPSS语言时一定要注意的问题。

    笔者在最近的一项研究中需要反复设置超过30个虚拟变量,理论上用Excel并不难,写好一次if套用数据即可。但数据量多达6万  项,excel处理起来分分钟都可能崩溃。SPSS中虽然的确有内置的Create Dummy Variables功能,但这个功能颇为令人费解(  如果有人知道到底该如何使用请务必指教一下!),于是决定自己试试syntax(SPSS 24.0)。

    =======================================

    1. SPSS Syntax初体验

    SPSS的语法系统还是很容易学的,主要是因为所有“点鼠标”的操作几乎都可以通过paste功能显示源代码,这样我们就能快速上手或者直接进行必要的修改。

    图1:用了这么久SPSS,终于知道这个paste是干嘛的了

    图2:自动粘贴到Syntax中的代码。红圈中的DataSet1是表示这个syntax是对哪个dataset运行,这里不会显示保存的dataset的名字,所以建议用syntax时只打开需要操作的dataset,以防syntax执行到别的dataset中去了。

    2. 建立虚拟变量,设置格式并检查结果

    我这回要做的是设置大量的虚拟变量,可以用if compute写,也可以recode,但这样往往需要设置两次数值。有一个简单点的写法:COMPUTE Dummy = (Condition Variable = "Dummy Name"),这样就可以直接创建出包括1和0的虚拟变量了。对了,SPSS每一行代码都以“.”结束

    这次遇到的最大的障碍就是SPSS对Run的设置跟许多语言不一样,如果你直接点那个大大的绿色"Run”按钮,SPSS只会Run光标所在的那一行(我这个例子中就是只Run第14行),这真是令人醉醉的......我们需要点开菜单中的Run,选All,才能将所有的代码跑一遍。


    图3:这个设置真是别具一格......

    下面又是一个SPSS“与众不同”的地方。当我们点了Run以后,会发现新的虚拟变量已经创建好了,但是数值却没有显示!这是因为SPSS怕大家在数据计算时一步错,步步错,贴心的帮我们把计算暂停了(注意右下的Transformations pending),这里需要点Run Pending Transforms时才能继续计算,显示数据。更简单的解决方法是在代码的结尾写一个EXECUTE,这样SPSS就会一次性跑完全部代码了。(什么,为什么写了EXECUTE还不行?因为你点了绿色的只Run一行功能......别忘了点开Run菜单选All)


    图4:最后一个大坑了!

    然后我们要让控制虚拟变量的格式,我们想要只显示一位数字,这里要用FORMATS函数后面接需要控制变量的名称与(FA.B),A表示这个变量的宽度,B表示小数点后显示几位,我们这里设置(F2.0)就是宽度是2,小数点后不显示(作为虚拟变量,宽度是1也够;以及注意括号的位置,把F包在里面)。

    SPSS中,变量间以空格区分,理论来说,可以一个FORMATS后面接N个变量,每个都有自己的(FA.B)参数或者统一一个参数,但不知道是版本的问题还是怎样,笔者所用的SPSS并不支持这个功能,于是只好弄出N行FORMATS来。图中的信息栏虽然报错了,但实在是意义不明,而且函数也正常运行了,我们也就不理它了。

    设置完虚拟变量后最好检查一下结果,这里用频率统计FREQUENCIES。这个函数支持用空格分隔变量。但是这个函数中所有变量都必须存在(笔者需要设置的虚拟变量中有两个不存在于当前这组数据),否则会整个函数无法运行(FORMATS中如果遇到了不存在的变量只会那一行报错)。因此将不需要的变量或者函数分离出来,用“*”号注释掉就OK了。


    图5:终于完整的跑下来了!我的第一个SPSS Syntax(注意最后一个EXECUTE)

    =====================================

    总得来说,SPSS的Syntax除了个别反常的设置以外,学习起来感觉还是很容易上手的,祝大家科研愉快!

    展开全文
  • pandas生成虚拟变量(哑变量) import pandas as pd import numpy as np data = pd.read_csv('train.csv') data.Department Department 代表员工所在部门,Sales销售部,Research & Development研发部,Human ...
  • 第八章 虚拟变量回归,第八章 虚拟变量回归课件,第八章 虚拟变量回归PPT
  • 现实中系统行为特征序列常受到虚拟变量的影响,而此时传统GM(1,N)模型不能准确地描述系统特征的变化规律.将虚拟变量引入传统GM(1,N)模型的灰作用量,构建虚拟变量控制的GM(1,N)模型,讨论新模型的参数求解方法;鉴于背景...
  • 谦瑞数据https://www.bilibili.com/video/BV1L4411z7FF?spm_id_from=333.999.0.0刻意练习18:用SPSS创建虚拟变量/哑变量|数据小兵博客SPSS【转换】菜单下的【创建虚变量】功能,可以将分类变量转换为虚拟变量,在...
  • 第五章解释变量包含虚拟变量的回归模型.pptx
  • VVAR 使用预先存在的“暂存”文件来存储变量,并且可以比使用零更快地预分配一个巨大的数组。 在配备 64 位 MATLAB 和 4Gb RAM 的 MacBook Pro 上,使用 VVAR 创建 8Gb 双阵列比使用零快 100 倍(1.24s 与 122.3s)...
  • 第7章虚拟变量回归.pptx
  • 【038期】SPSS 虚拟变量.docx
  • 计量经济学课件第八章 虚拟变量回归.pdf计量经济学课件第八章 虚拟变量回归.pdf计量经济学课件第八章 虚拟变量回归.pdf计量经济学课件第八章 虚拟变量回归.pdf计量经济学课件第八章 虚拟变量回归.pdf计量经济学课件...
  • 基于滞后虚拟变量分位点回归模型的条件VaR估计,裴培,贺壬癸,在大多数文献中,分位点回归模型是线性的,但是在实际中,线性的分位点回归模型已经不能很好地满足需要,为此本文提出了含有滞后
  • 第五章虚拟变量-第八章虚拟变量.pptx
  • eviews分布滞后和虚拟变量模型
  • R语言与虚拟变量模型

    千次阅读 2020-04-16 10:05:19
    为了能够在模型中反映这些因素的影响,并提高模型的精度,需要将它们’量化’,这种’量化’通常是通过引入虚拟变量来完成的。根据这些因素的属性类型,构造取’0’或’1’的人工变量。通常称为虚拟变量,记为D。 ...
  • SQL 将变量定义为Table类型 在平时定义sql语句中的变量时通常我们定义的都是像char,varchar,nvarchar,int……..,那如何让变量作为一个像虚拟表一样呢,其实很简单。 基本语法: 代码如下: declare @t table(列名1 ...
  • [精选]计量经济学实验2[1]1虚拟变量回归.pptx
  • matlab开发-虚拟变量类格式实验室。vvar可用于预分配阵列,速度比使用零快得多。
  • 原文链接:https://www.lianxh.cn/news/8359a0353aa1d.html 作者:连玉君 | 杨柳 ...注:该文已发表: 连玉君, 杨柳.... 2. 什么是因子变量 3. 常用回归模型的因子变量表述 3.1 范例 1:邹氏检验 3.2 ...
  • 调用环境变量时,python的搜索路径依然会从默认的环境变量开始查找,导致包的路径无法调用我们所创建虚拟环境中,因此,这里介绍如何在vscode中配置虚拟环境以及创建虚拟的环境变量,彻底搭建一套python的虚拟环境...
  • 应用滞后虚拟变量分位点回归模型估计条件VaR,裴培,贺壬癸,众所周知,在实际生活中,线性的分位点回归模型已经不能很好地满足需要,为此本文提出了含有滞后虚拟变量的分位点回归模型,并应
  • 解释变量包含虚拟变量.pptx
  • 关注一下~,更多商业数据分析案例等你来撩前言构建多元线性回归模型时,如果能够充分的使用已有变量,或将其改造成另一种形式的可供...原理趣析至于虚拟变量的官方解释和值得参考的论文集和虚拟变量的深度应用及拓展...
  • 在不同的实证研究中,有些回归模型为每个年份设置了时间虚拟变量,另一些模型加入了时间趋势项。那么,在模型中加入时间虚拟变量和时间趋势项的区别是什么呢?在什么情况下,应该加入那种表示时间变化的变量呢? 1....
  • 虚拟变量陷阱原理及算例

    千次阅读 2019-09-21 13:10:34
    1.虚拟变量 直接在回归模型中加入定性因素(比如类别因素:男或女)存在困难,因此可以考虑把定性因素量化,使定性因素与定量因素在回归模型中起到相同的作用。这时就用到了虚拟变量。 计量经济学中,把取值为0...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 433,893
精华内容 173,557
关键字:

如何创建虚拟变量