stata变量引用

news/2024/4/27 19:12:51/文章来源:https://blog.csdn.net/weixin_52185313/article/details/130119382

stata变量引用–潘登同学的stata笔记

文章目录

    • stata变量引用--潘登同学的stata笔记
  • 变量生成
    • gen命令
    • 通配符:*, ?, -
    • 因子变量
      • 时间序列
  • 变量命名、前缀与标签
    • 变量命名、添加前缀
    • 通配符与批量重命名
    • 变量标签
    • 数字-文字对应表
    • CSMAR数据处理
  • 查看、查找变量
  • 单值、暂元
    • 单值
    • 暂元
    • 利用暂元写循环语句

变量生成

gen命令

sysuse nlsw88, clear
gen lnwage = ln(wage)
gen yes_white = (race==1)  // [=exp]
tabstat lnwage hours married age, by(yes_white) s(mean) f(%3.2f) 

在这里插入图片描述

通配符:*, ?, -

sysuse nlsw88, clear
sum age race married never_married grade
sum age-grade    // 顺序出现的变量,列出头尾两个变量即可
sum s*           // "*" 是孙悟空,可以表示`任何'长度的字母或数字
sum *arr*        // 可以用在任何位置
sum ?a?e         // "?" 是猪八戒,只能替代`一个'长度的字母或数字 

在这里插入图片描述

因子变量

  • i: 表示将变量转换为虚拟变量
  • c: 表示变量为连续型变量(只有加上ci才能参与后续交乘项平方项的运算)
  • #: 相当于乘号
  • ##: 能同时具有更低阶的交乘项
sysuse nlsw88, clear
tab race                                 // 类别变量
reg wage tenure hours i.race i.industry  // 种族和行业虚拟变量
reg wage tenure hours age c.age#c.age    // 平方项        #
reg wage tenure hours     c.age##c.age   // 等价命令,简写 ##
reg wage tenure hours i.marr i.marr#c.hours // 交乘项
reg wage tenure     c.age##c.age##c.hours   // 能同时有5项

在这里插入图片描述

时间序列

sysuse sp500, clear
tsset date // 对日期排序
gen t = _n
tsset t
gen lnP = ln(close)
gen return = D.lnP       //收益率(D.表示一阶差分)
gen Lreturn  = L.return  //前一天的收益率(L.表示一阶滞后项)
gen L2return = L2.return //前两天的收益率reg return L.return L2.return
reg return L(1/3).return F(1/2).return // F表示滞后项的反义词 //回归时不必产生这些变量

在这里插入图片描述

在这里插入图片描述

变量命名、前缀与标签

变量命名、添加前缀

sysuse auto, clear
rename make mk
rename (price rep78) (Price REP78) //批量重命名
rename mpg foreign trunk, upper    //大写sysuse auto, clear // D2_gen.do
renvars price mpg wei, prefix(d1_) //批量添加前缀或后缀
des

在这里插入图片描述

通配符与批量重命名

// 把前缀为 jan 的变量全部重命名为后缀为 1 的变量名,如 janstat → stat1
rename jan* *1
// 去掉 jan 前缀
rename jan* *
// * 去掉 jan 后缀
rename *jan *
// 将前缀为 jan 的四位字符重命名为后缀为 1 的两位字符,如 jans → s1,janstat 不会发生变化
rename jan? ?1
// 删除 jan,如 janstat 重命名为 stat,injanstat → instat,subjan → sub
rename *jan* **
// 命名为 jan 前的字符,如 injanstat → in,statjan → stat(与下一个进行区分)
rename *jan* *
// 命名为 jan 后的字符,如 injanstat → stat
rename *jan* .*
// 为后缀为 pop 的变量名增加前缀 jan,如 age1pop → janage1pop
rename *pop jan=
// 所有变量增加前缀 pre
rename whatever pre=
// * 所有变量增加后缀 jan
rename whatever =jan
// 所有变量增加前缀 pre 且增加后缀 fix
rename whatever pre=fix
// 将由字母 v+ 数字的变量名重命名为 stat+ 数字,如 v1→stat1 v10→stat10
rename v# stat#
// 增加括号后表示重命名 v 后面跟 1 位数字的变量,v10 不会被重命名
rename v(#) stat(#)
// stat10 → stat_2010,stat2 不会发生改变
rename stat(##) stat_20(##)
// * stat1 → stat_2001,stat10 不会发生改变
rename stat(#) stat_200(#)
// 重命名为倒序变量名,如 v8 → v1,v7 → v2,v6 → v3
rename v# v#, renumber sort
// * 数字起始值 10,如 v1 → v10,v2 → v11
rename v# v#, renumber(10)
// a → v1,b → v2,c → v3
rename (a b c) v#, addnumber
// a12 → a21,a32 → a23
rename a(#)(#) a(#)[2](#)[1]

rename命令选项:

  • addnumber:在末尾添加顺序编号;
  • addnumber(#):在末尾添加指定起始值的顺序编号;
  • renumber:按顺序重新编号;
  • renumber(#):指定起始值开始顺序编号;
  • sort:编号前进行排序;
  • dryrun:报告但不进行重命名;
  • r:将变量名储存在 r() 中,编程时调用;
  • upper:将字母转换为大写;
  • lower:将字母转换为小写;
  • proper:将字母转换为首字母大写。

变量标签

sysuse auto, clear
des
label var price "汽车价格($)"
label var rep78 "维修次数"
des          //查看效果

在这里插入图片描述

数字-文字对应表

sysuse auto, clear
*-Step1: label define, 定义标签内容
label define rep78_label 1 "很好" 2 "较好" 3 "中等" 4 "较差" 5 "很差"*-Step2: label value, 将变量与标签内容关联起来
label value  rep78 rep78_labellabel list rep78_label     //查看对应关系
des2 rep78           //建议采用这种方式, 简洁
br   rep78tab rep78 foreign

在这里插入图片描述

在这里插入图片描述

CSMAR数据处理

从CSMAR数据库中下载的企业财报数据,会把第一行作为独特代码,第二行作为变量标注(label),第三行写单位。在导入Stata中时,第一行可以自动转化为变量名,但第二行标注会在导入时成为第一个标量。

下面这段代码可以至直接将第三行删除,第二行转为变量label。

drop if _n == 2foreach var of varlist * {                                // 对每一个变量label     variable    `var'             "`=`var'[1]'"   // 把变量标注为第一行的内容replace               `var' = ""   if   _n == 1         // 把第一行改为空destring              `var'        ,    replace         // 把变量destring}
drop in 1                                                 // 删除第一行

查看、查找变量

sysuse nlsw88, clear
des        //几乎每一笔数据进来都要先执行该命令
des2       //完全替代了 des 命令

在这里插入图片描述

查找变量:lookfor

use "$path\_Data\d_lookfor", clear
lookfor "现金流"
lookfor "报酬"

在这里插入图片描述

单值、暂元

单值

定义单值: 存放数字

scalar a = 3
scalar b = ln(a) + 3^a
dis a
dis b

定义单值: 存放字符串

scalar c = .a
dis c
scalar s1 = "hello, Arlion"
scalar s2 = substr(s1,1,5)   // 单值的引用很简单
dis s1
dis s2

执行命令后的单值结果:

sysuse auto,clearsum price 
return list // sum之后return list能将sum的结果保存到r中
dis r(N)
dis r(sd)

在这里插入图片描述

reg price weight length mpg         // see R9_esttab.do
ereturn list 
est store r1reg price weight length mpg foreign
est store r2esttab r1 r2, nogap scalar(r2 r2_a F N)

在这里插入图片描述

一些特殊的单值:

help _variables  // 系统变量
sysuse nlsw88, clear
dis _N          //样本数creturn list // 系统参数设置
dis c(current_time)

暂元

局域暂元 (local) :只能存在于一次运行之中

local a = 5
display `a'  
// 注意应用方法 左边是` 右边是'local b = `a' + 7
dis `b'

在stata中,他能通过字符串来引用变量(面向对象的编程语言是不行的(如py))

scalar x_1 = 7
local y = "x"
dis `y'_1

在这里插入图片描述

用于存放变量名称

sysuse auto, clear
local xx "price weight mpg foreign"
// *local xx "price weight mpg foreign i.rep78"
sum `xx'
reg `xx'

在这里插入图片描述

sysuse nlsw88, clear
reg wage hours i.race
local b0 = _b[_cons]     //常数项估计值
local b1 = _b[hours]     //系数估计值
local b2 = _b[2.race]    //虚拟变量的估计值
local b3 = _b[3.race]
local se_b1 = _se[hours] //标准误dis "wage = `b0' + `b1'*hours + `b2'*2.race + `b3'*3.race"
gen wage_fit = `b0' + `b1'*hours + `b2'*2.race + `b3'*3.race
br wage*
dis "SE(b1) = " `se_b1'

暂元中的暂元:

local a1 = 2
local a2 "var"
local a3 = 2*`a1'
local a4 `a`a1''dis  `a1'
dis "`a2'" // 因为a2是var所以需要用双引号扩住)
dis  `a3' 
dis "`a4'"

在这里插入图片描述

全局暂元:能长期存在内存中

sysuse nlsw88, clear
global xx "hours ttl_exp married union"reg wage $xx // 全局暂元的引用方式
est store homo
reg wage $xx, robust
est store het
reg wage $xx i.occupation, robust
est store het_occu

利用暂元写循环语句

while循环:

local j = 0
while `j'<5{dis  `j'local j = `j'+1
}

forvalues 语句:

forvalues i = 1(2)14{dis  `i'}

用forvalues语句做分行业回归分析:

sysuse nlsw88, clear
global yx "wage hours collgrad ttl_exp"
forvalues i = 1/4{        //公差为 1 的等差数列dis _n(2) in yellow "Occupation == " in green `i' reg $yx if occupation==`i'est store m`i'
}
esttab m1 m2 m3 m4, nogap s(r2_a N)
des2 occu

在这里插入图片描述

使用foreach导入多个文件,追加多个样本

global vlist "id year invest market stock"
// *-将 txt 文件转化为 dta 格式
foreach file in  Audi Benz BMW{insheet $vlist using `file'.txt,clearsave `file'.dta, replace }
// 追加样本
use Audi.dta, clear
foreach file in  Benz BMW{append using `file'.dta
}
list

在这里插入图片描述

变量名循环:foreach v of varlist …

// 1:多变量的缩尾处理
sysuse nlsw88, clear
local vars "wage hours ttl_exp grade"
foreach v of varlist `vars'{winsor `v' , gen(`v'_w) p(0.01)
}      
d *_w  

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_285823.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超详细!腾讯NLP算法岗面经(已offer)

作者 | ZipZou整理 | NewBeeNLP面试锦囊之面经分享系列&#xff0c;持续更新中 可以后台回复"面试"加入交流讨论组噢分享一篇旧文&#xff0c;希望大家都成功上岸~写在前面首先来段简单的自我介绍&#xff1a;2021届硕士&#xff0c;硕士期间未有实习经历&#xff0c…

FE_CSS 页面布局之浮动

网页布局的本质——用 CSS 来摆放盒子。 把盒子摆放到相应位置。CSS 提供了三种传统布局方式(简单说,就是盒子如何进行排列顺序)&#xff1a; 普通流&#xff08;标准流&#xff09;浮动定位 1 标准流&#xff08;普通流/文档流&#xff09; 所谓的标准流: 就是标签按照规定…

Runtime命令参数字符串和数组比较

问题 最近有个问题本地执行 ssh -p 8084 root10.224.122.51 \"ssh -p 22 root192.168.5.157 mkdir -p /opt/dw-release/pdld-admin\"程序执行总是报错&#xff1a; No such file or directory 但是直接在终端执行正常&#xff0c;这就很奇怪。肯定能推出是程序执行…

10.1 二重积分的概念与性质

学习目标&#xff1a; 学习二重积分&#xff0c;我会采取以下几个步骤&#xff1a; 了解基本概念&#xff1a;首先我会学习二重积分的定义及其意义&#xff0c;了解二重积分的性质和特点&#xff0c;以及二重积分的计算方法。 理解二重积分的几何意义&#xff1a;我会通过画图…

【无人机】基于灰狼优化算法的无人机路径规划问题研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

LeetCode——二叉树的非递归遍历

144. 二叉树的前序遍历 给你二叉树的根节点root&#xff0c;返回它节点值的前序遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a; 输入&#xff1…

PDF怎么转CAD文件?(免费!高效转换方法汇总)

一般而言&#xff0c;PDF图纸是不能修改的。若需修改&#xff0c;则需将PDF转CAD&#xff0c;此时如何满足PDF转CAD的需求呢&#xff1f;今天&#xff0c;我将教你两种免费的PDF转CAD的方法&#xff0c;助力高效办公。 1.本地软件转换法 这是用本地软件转换方法&#xff0c;支…

JVM之GC日志解读

通过阅读Gc日志&#xff0c;我们可以了解Java虚拟机内存分配与回收策略。 内存分配与垃圾回收的参数列表 -XX:PrintGC 输出GC日志。类似&#xff1a;-verbose:gc-XX:PrintGCDetails 输出GC的详细日志-XX:PrintGCTimestamps 输出GC的时间戳&#xff08;以基准时间的形式&#xf…

软件企业利用ChatGPT的正确姿势

先来看一下现在市场环境 ChatGPT作为现象级产品横空出世之后&#xff0c;极大地带动了大语言模型产业和生成式AI&#xff08;AIGC&#xff09;产业的蓬勃发展。海外市场上&#xff0c;OpenAI、微软、谷歌、Meta等巨头动作频频。中国市场更是风起云涌&#xff0c;百度、阿里、华…

Golang每日一练(leetDay0034) 二叉树专题(3)

目录 100. 相同的树 Same Tree &#x1f31f; 101. 对称二叉树 Symmetric Tree &#x1f31f; 102. 二叉树的层序遍历 Binary Tree Level-order Traversal &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一…

Talk预告 | 清华大学交叉信息研究院助理教授赵行:基于视觉感知的自动驾驶运动预测

本期为TechBeat人工智能社区第481期线上Talk&#xff01; 北京时间3月15日(周三)20:00&#xff0c;清华大学交叉信息研究院助理教授——赵行的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “基于视觉感知的自动驾驶运动预测”&#xff0c;届时将…

AIGC大模型时代下,该如何应用高性能计算PC集群打造游戏开发新模式?

ACT | SIM | ETC | FTG | RAC AVG | RPG | FPS | MUG | PUZ ACT、SIM、ETC、FTG、RAC、RTS、STG、AVG、RPG、FPS、MUG、PUZ、SLG、SPG等游戏类型&#xff0c;需要高性能的计算机来支持运行。为了满足这些游戏的需求&#xff0c;国内服务器厂商不断推出新的产品&#xff0c;采用…

AD20的PCB布线规则设定

目录 1、最小安全间距 2、线宽规则 3、过孔 4、盖油工艺设计 5、内电层焊盘模式设置 6、反焊盘间距设计 7、焊盘与覆铜连接类型 AD20的规则库设定是PCB布线的首要工作&#xff0c;在布线初期就要设置好&#xff0c;布线的过程中还需要动态的变更&#xff0c;因此本篇总结了PCB的…

基于逻辑回归构建肿瘤预测模型

使用逻辑回归构建肿瘤预测模型 描述 乳腺癌数据集包括569个样本&#xff0c;每个样本有30个特征值&#xff08;病灶特征数据&#xff09;&#xff0c;每个样本都属于恶性&#xff08;0&#xff09;或良性&#xff08;1&#xff09;两个类别之一&#xff0c;要求使用逻辑回归&…

九龙证券|服务器龙头获资金连续抢筹,尾盘主力抢筹前期大热门股

今天&#xff0c;核算机职业取得主力大手笔抢筹。 今天主力资金净流出53.89亿元&#xff0c;其间创业板净流出3.19亿元&#xff0c;沪深300成份股净流出7.61亿元。 申万一级职业中&#xff0c;今天有19个职业上涨&#xff0c;传媒职业接连两日均涨近5%&#xff0c;居首位&…

解密HTTP协议:探索其组成部分与工作原理

前言 欢迎来到今天的每日一题&#xff0c;每日一提。昨天有聊到&#xff0c;HTTP 和 HTTPS 之间有什么区别&#xff1f;面试官基本秉承着刨根问题的原则&#xff0c;肯定是不会轻易放过我们的&#xff0c;那么自然是要继续拷问了。所以我们今天就聊聊什么是 HTTP&#xff0c;它…

ERTEC200P-2 PROFINET设备完全开发手册(5-2)

5.2 TIA 数据记录操作 在PLC的程序中&#xff0c;可以通过指令RDREC和WRREC读写数据记录&#xff0c;在参考代码里可以看到读写操作都实现了index 2的记录数据&#xff0c;并且初始化为&#xff1a; #define DEMO_RECORD "ABCDEFGH" 首先定义要写入和读出的数据…

让技术造福残障人士,让开发助力无障碍

前言 随着互联网技术的快速发展&#xff0c;越来越多的领先技术运用到公益领域中来。运用科技来造福残障人士&#xff0c;比如前几年比较智能化的自动行走轮椅&#xff0c;盲人阅读器&#xff0c;以及聋哑人助听器等&#xff0c;都是通过科技来帮助残障人士方便生活的例子。作为…

pandas之DataFrame基础

pandas之DataFrame基础1. DataFrame定义2. DataFrame的创建形式3. DataFrame的属性4. DataFrame的运算5. pandas访问相关操作5.1 使用 loc[]显示访问5.2 iloc[] 隐式访问5.3 总结6. 单层索引和多层级索引6.1 索引种类与使用6.2 索引相关设置6.3 索引构造6.4 索引访问6.5 索引变…

【排序算法 上】带你手撕常见排序 (插入,希尔,选择,堆排序) (动图详解)

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; “东风随春归&#xff0c;发我枝上花。” 前言&#xff1a; 排序是日常生活中极其常见的一种算法&#xff0c;它的功能很简单&#xff0c;就是将数字按照升序/降序排列&#xff0c;最终形成一组有序的数字&a…