State

一、前言

回归分析时数据分析中最基础也是最重要的工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的任务就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。常见的回归分析有五类:线性回归、0‐1回归、定序回归、计数回归和生存回归,其划分的依据是因变量Y类型。这里主要学习线性回归。
1.1 回归分析的任务

任务一:回归分析要去识别并判断:哪些X变量是同Y真的相关,哪些不是。统计学中有一个非常重要的领域,叫做“变量选择”。(逐步回归法)
任务二:去除了那些同Y不相关的X变量,那么剩下的,就都是重要的、有用的X变量了。接下来回归分析要回答的问题是:这些有用的X变量同Y的相关关系是正的呢,还是负的?
任务三:在确定了重要的X变量的前提下,我们还想赋予不同X不同的权重,也就是不同的回归系数,进而我们可以知道不同变量之间的相对重要性。

1.2 回归的分类


1.3 数据的分类

横截面数据:在某一时间点收集的不同对象的数据,例如我们自己发放问卷得到的数据、全国各省份2018年GDP的数据、大一新生今年体测的得到的数据
时间序列数据:对同一对象在不同时间连续观察所取得的数据,例如从出生到现在,你的体重的数据(每年生日称一次)、中国历年来GDP的数据、在某地方每隔一小时测得的温度数据
面板数据:对同一对象在不同时间连续观察所取得的数据(多个对象,多个时间点),例如2008‐2018年,我国各省份GDP的数据

1.4 不同数据类型的处理方法


说明:

建模比赛中,前两种数据类型最常考到;面板数据较为复杂,是经管类学生在中级计量经济学中才会学到的模型
横截面数据往往可以使用回归来进行建模,我们通过回归可以得到自变量与因变量之间的相关关系以及自变量的重要程度
时间序列数据往往需要进行我们进行预测,时间序列模型的选择也很多,大家需要选择合适的模型对数据进行建模

二、一元线性回归


提醒:使用线性回归模型进行建模前,需要对数据进行预处理,用MATLAB、Excel、state等软件都可以
2.1 内生性的分析

说明:如果误差项 μ \mu μ含有与已经添加的自变量相关的变量,且该变量和因变量 y y y相关,则存在内生性(简单来说就是在进行回归分析的时候遗漏了变量)
2.2 核心解释变量和控制变量

无内生性要求所有解释变量均与扰动项不相关。这个假定通常太强,因为解释变量一般很多(比如,5‐15个解释变量),且需要保证它们全部外生。是否可能弱化此条件?答案是肯定的,如果你的解释变量可以区分为核心解释变量与控制变量两类。

核心解释变量:我们最感兴趣的变量,因此我们特别希望得到对其系数的一致估计(当样本容量无限增大时,收敛于待估计参数的真值)
控制变量:我们可能对于这些变量本身并无太大兴趣;而之所以把它们也放入回归方程,主要是为了“控制住” 那些对被解释变量有影响的遗漏因素

2.3 何时取对数

取对数意味着原被解释变量对解释变量的弹性,即百分比的变化而不是数值的变化

目前,对于什么时候取对数还没有固定的规则,但是有一些经验法则:

与市场价值相关的,例如,价格、销售额、工资等都可以取对数
以年度量的变量,如受教育年限、工作经历等通常不取对数
比例变量,如失业率、参与率等,两者均可
变量取值必须是非负数,如果包含0,则可以对y取对数ln(1+y)

取对数的好处:

减弱数据的异方差性
如果变量本身不符合正态分布,取了对数后可能渐近服从正态分布
模型形式的需要,让模型具有经济学意义

2.4 四类模型回归系数的解释

一元线性回归 : 𝑦 = 𝑎 + 𝑏𝑥 + 𝜇,x每增加1个单位,y平均变化b个单位

双对数模型 : 𝑙𝑛𝑦 = 𝑎 + 𝑏𝑙𝑛𝑥 + 𝜇,x每增加1%,y平均变化b%

半对数模型 : 𝑦 = 𝑎 + 𝑏𝑙𝑛𝑥 + 𝜇,x每增加1%,y平均变化b/100个单位

半对数模型:𝑙𝑛𝑦 =𝑎 +𝑏𝑥 + 𝜇,x每增加1个单位,y平均变化(100b)%

2.5 虚拟变量X的设置

如果自变量中有定性变量,例如性别、地域等,就需要在回归中设置虚拟变量,同时为了避免多重共线性的影响,引入的虚拟变量的个数一般是分类数减去1


三、示例
3.1 普通最小二乘估计法OSL

题目:

现有某电商平台846条关于婴幼儿奶粉的销售信息,每条信息由11个指标组成。其中,评价量可以从一个侧面反映顾客对产品的关注度。请对所给数据进行以下方面的分析,要求最终的分析将不仅仅有益于商家,更有益于宝妈们为宝贝选择适合自己的奶粉。

以评价量为因变量,分析其它变量和评价量之间的关系;
以评价量为因变量,研究影响评价量的重要因素。

数据


数据描述性统计的结果(自己用state软件生成,然后用Excel制作)


代码:

state回归的语句

拟合优度 R 2 R^2 R2比较低的解决办法

回归分为解释型回归和预测型回归。预测型回归一般才会更看重 R 2 R^2 R2。解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著性即可。
可以对模型进行调整,例如对数据取对数或者平方后再进行回归
数据中可能有存在异常值或者数据的分布极度不均匀

关于拟合优度和调整后的拟合优度:

引入的自变量越多,拟合优度会变大。但我们倾向于使用调整后的拟合优度,如果新引入的自变量对SSE的减少程度特别少,那么调整后的拟合优度反而会减小(论文当中一般选择调整之后的拟合优度进行分析)
3.2 标准化回归

为了更为精准的研究影响评价量的重要因素(去除量纲的影响),我们可考虑使用标准化回归系数。对数据进行标准化,就是将原始数据减去它的均数后,再除以该变量的标准差,计算得到新的变量值,新变量构成的回归方程称为标准化回归方程,回归后相应可得到标准化回归系数。标准化系数的绝对值越大,说明对因变量的影响就越大(只关注显著的回归系数哦)

regress 评价量 团购价元 商品毛重kg, b

注意:在进行回归分析时,只需要分析回归系数显著的自变量


四、异方差问题

在之前的回归分析中,我们都默认了扰动项是球型扰动项。球型扰动项:满足“同方差”和“无自相关”两个条件


如果扰动项存在异方差:

OLS估计出来的回归系数是无偏、一致的
假设检验无法使用(构造的统计量失效了)
OLS估计量不再是最优线性无偏估计量

异方差的检验方法

图形法(只能大致的说明问题)

在进行回归之后,输入以下命令

rvfplot

// 残差与拟合值的散点图

graph export a1.png ,replace


分析:当拟合值增大时,数据变得分散,方差变大,所以存在异方差

在进行回归之后输入以下命令:


分析:数据在团购价格很低的时候,分散程度较大,存在异方差

假设检验法

Bp检验
 

结果:

分析:

原假设:扰动项不存在异方差。P值小于0.05,说明在95%的置信水平下拒绝原假设,即我们认为扰动项存在异方差。

怀特检验

结果:


分析:在95%置信水平下,P值小于0.05,拒绝原假设,即存在异方差
异方差的解决办法

  1. 使用OLS + 稳健的标准误

如果发现存在异方差,一种处理方法是,仍然进行OLS 回归,但使用稳健标准误。这是最简单,也是目前通用的方法。只要样本容量较大,即使在异方差的情况下,若使用稳健标准误,则所有参数估计、假设检验均可照常进行。换言之,只要使用了稳健标准误,就可以与异方差“和平共处”了。

代码:

结果:

  1. 广义最小二乘法GLS

原理:方差较大的数据包含的信息较少,我们可以给予信息量大的数据(即方差较小的数据更大的权重)
缺点:我们不知道扰动项真实的协方差矩阵,因此我们只能用样本数据来估计,这样得到的结果不稳健,存在偶然性。

提醒:在大多数情况下应该使用“OLS + 稳健标准误”
五、多重共线性



代码:

结果:


5.2多重共线性的处理办法

如果不关心具体的回归系数,而只关心整个方程预测被解释变量的能力,则通常可以不必理会多重共线性(假设你的整个方程是显著的)。这是因为,多重共线性的主要后果是使得对单个变量的贡献估计不准,但所有变量的整体效应仍可以较准确地估计
如果关心具体的回归系数,但多重共线性并不影响所关心变量的显著性,那么也可以不必理会。即使在有方差膨胀的情况下,这些系数依然显著;如果没有多重共线性,则只会更加显著
如果多重共线性影响到所关心变量的显著性,则需要增大样本容量,剔除导致严重共线性的变量(不要轻易删除哦,因为可能会有内生性的影响),或对模型设定进行修改

六、逐步回归分析
1.向前逐步回归

将自变量逐个引入模型,每引入一个自变量后都要进行检验,显著时才加入回归模型。(缺点:随着以后其他自变量的引入,原来显著的自变量也可能又变为不显著了,但是,并没有将其及时从回归方程中剔除掉。)
2.向后逐步回归

与向前逐步回归相反,先将所有变量均放入模型,之后尝试将其中一个自变量从模型中剔除,看整个模型解释因变量的变异是否有显著变化,之后将最没有解释力的那个自变量剔除;此过程不断迭代,直到没有自变量符合剔除的条件。(缺点:一开始把全部变量都引入回归方程,这样计算量比较大。若对一些不重要的变量,一开始就不引入,这样就可以减少一些计算。当然这个缺点随着现在计算机的能力的提升,已经变得不算问题了)
3.实现代码

提醒

x1 x2 … xk之间不能有完全多重共线性(和regress不同哦),之前回归时,Stata告诉了我们哪些自变量是完全多重共线性的(实际上在每个分类变量中任意去除一个元素即可)
可以在后面再加参数b和r,即标准化回归系数或稳健标准误

4.逐步回归的说明

向前逐步回归和向后逐步回归的结果可能不同
不要轻易使用逐步回归分析,因为剔除了自变量后很有可能会产生新的问题,例如内生性问题

七、补充state语法

One thought on “State

  • 2024-02-28 at 17:09
    Permalink

    1、input: 输入数据
    例:inpurt x y
    1 4
    2 3.5
    end
    2、by: 按照某一变量的取值来进行分析
    例:by group,sort: regress Y x1 x2 //按照不同的组,对Y做回归分析
    3、weight: 加权或者頻数
    例:fw=頻数变量 //多用在四格表资料中或者原资料未给出所有值,只给出了值和对应的頻数
    4、if: 用条件语句指定条件
    例:drop if group==1|group==2 //把group变量值为1或者2的记录删除掉
    5、in:指定观察值的范围,对在范围内的观察值做分析处理
    例:replace x1=”123″ in 100/200 //把第100-200条记录中的X1变量值改为123
    6、for: 用来指定变量
    例:for y1-y10 z1-z5: regress @x1-x22
    //把y1-y10,z1-z5分别于x1-x22做回归,一次性代表15次回归,其中@是替换符,代表y1-y10, z1-z5
    7、函数
    abs(x) 绝对值
    exp(x) 指数函数
    log(x) 自然对数
    log10(x) 常用对数
    sqrt(x) 平方根
    uniform(x) 生成(0,1)内均匀分布的伪随机数
    length(x) 计算长度
    substr(s,n1,n2) 获得从S的n1个字符开始的n2个字符组成的字符串
    real(x) 将字符串s转换为数值函数
    trim(x) 去除字符串前面和后面的空格
    int(x) 去掉x的小数部分,得到整数
    sum(X) 求和
    max(x) min(x) 最大值最小值
    _n 当前观察值的位置
    _N 观察值的总个数
    8、ren: 重命名
    例:ren var1 var123 // 把var1重新命名为var123
    9、des:描述数据库的基本情况
    10、label: 为变量添加一些说明,以示说明
    11、sort: 按照某一变量从小到大排序
    gsort +/-:按照某一变量从大到小或者从小到大排序
    sort var1 var2:按照var1大小排序,相同的var1按照var2大小排序
    12、drop:删除变量或者记录
    drop x1 x2
    drop x1-x5
    drop if x<0\
    drop in 1/100
    drop if x==.|y==.
    drop _all //清空数据库
    13、keep: 与drop对应,保存变量
    14、append:纵向连接数据库
    15、merge:横向连接数据库
    16、gen: 生成新变量
    gen bh=_n //将数据库的内部编号赋给变量bh
    17、replace:更改变量值
    replace z=. if z=9 //将所有z=9的值用缺失值代替
    renvars: 批量修改变量名
    renvars X1-X5, prefix(mono_) //把变量X1-X5的变量名前加前缀mono_;同理后缀是postfix
    18、set obs: 增加空记录
    set obs 20 //增加20条空白记录
    19、format: 改变数据格式
    format tjrq %td //将tjrq改成日期形式
    20、l: list 将结果列出
    21、su: 对分析数据进行描述,均值标准差等,与des不同,des是描述数据库变量个数,格式等
    su x, d // 对x进行统计描述,如果加了d,那么就会更加detail
    22、centile: 百分位数计算
    centile x, centile(2.5,50,97.5) //计算变量x的2.5,50.97.5百分位数
    23、tab:頻数表达
    tab sex //计算两个性别各自的頻数
    tab sex group //看看各组性别分布的情况
    tab group, sum(x1) //在各组内对x1统计分析
    24、ci: 计算可信区间
    25、直方图:gra x, bin(9) xlab(10,20,30,40) ylab(0,1,2,3) norm gap(4) b2("height (cm)")
    //对x画直方图,分为9组,X轴为10,20,30,40,y轴为0,1,2,3,加上正态分布曲线,标题与坐标轴的距离(1-8),下坐标轴加标题为height(cm)
    b1/t1/l1/r1("") 给各个坐标轴加标题
    b2/t2/l2/r2("") 给各个坐标轴加副标题
    title 给图加总标题
    条图:gra x1 x2, bar by(group) sh(31) l1("rate of die") b1("comparison of rate of die")
    // 对x1,x2画条图,分组变量为group,两组的明暗对比度为3:1,左标题rate of die,下标题comparison of rate of die
    饼图:gra x1 x2 x3 x4 x5, pie by(group) sh(31) total
    散点图与线图:connect(简写c)——连接散点的方式:
    . 不连接
    l 直线连接
    s 平滑曲线连接
    || 直线连接在同一纵向上的两点
    J 阶梯式线条连接
    symbol(简写s)——各个散点的图形:
    O 大圆圈
    S 大方块
    T 大三角型
    o 小圆圈
    d 小菱形
    p 小加号
    . 小点
    gra y x, xlab ylab c(l) s(d)
    箱式图:gra y x, oneway/twoway box
    26、单样本均数t检验:ttest x=14.02(总体均数μ)
    ttesti n mean sd μ
    配对t检验:ttest x1==x2
    两样本均数t检验:ttest x1==x2,unpaired
    ttest x, by(group)
    27、方差分析:
    方差齐性检验:sdtest x1=x2
    sdtest x, by (group)
    正态性检验:sktest x
    单因素方差分析:oneway 相应变量 分组变量
    两因素方差分析:anova 相应变量 分组变量1 分组变量2
    多因素方差分析:anova x a b c … a*b b*c a*b*c… //乘积项代表交互作用
    28、率、构成比的比较:
    tab var1 var2 [fw=頻数变量]
    chi2 pearson卡方检验
    exact fisher确切概率法
    如果是原始资料RXC列联表:tabi 第一行数字从左到右\第二行从左到右…\最后一行从左到右, row chi2 exact
    29、 队列研究(暴露,不暴露):
    ir 病例变量 暴露变量 时间变量 ./ irs a b n1 n2
    cs 病例变量 暴露变量 / csi a b c d
    病例对照研究(发病,不发病):cci a b c d
    30、等级资料:
    genrank 编秩 genrank rankx=x
    signtest 符号检验 类似t检验,signtest x=常数,signtest x1=x2, signrank x1=x2
    signrank 符号秩和检验
    ranksum/Wilcoxon 两样本秩和检验 wilcoxon var, by (group_var)
    kwallis 多样本秩和检验(Kruskal-Wallis) kwallis var,by (group_var)
    spearman 等级相关 spearman x y
    ktau 等级相关(kendall) ktau x y
    31、直线相关与回归:
    相关 corr y x
    回归 reg y x
    估计与预测 pre yhat
    画图 gra y yhat l1 l2 l3 l4 x, c(.lssss) s(oiiii) xlab() ylab()
    32、多元线性回归及逐步回归:
    散点图矩阵:gra y x1 x2, matrix
    相关系数矩阵: corr
    多元回归方程:reg y x1 x2 //标准化偏回归系数,reg y x1 x2, beta
    逐步回归:stepwise y x1-x4, forward fe(2.73) //α等于0.05时F界值为2.73,fe代表fenter选入标准,fs代表fstay剔除标准
    逐步回归法:forward,backward,stepwise,stepwise forward 例如:step y x1-x4, step fe(2.5) fs(2.6) back
    33、logistic回归:
    logit y x [fw=f]
    blogit y x1 x2 x3/ glogit y x1 x2 x3
    也可以同上做逐步Logistic回归
    34、生存曲线:
    中位生存时间:survsum 时间变量 截尾变量, by(分组变量)
    生存曲线:kapmeier 时间变量 截尾变量, by(分组变量) // kaplan-meier生存曲线
    生存率比较:两组:wilcoxon 时间变量 截尾变量, by(分组变量)
    多组:logrank 时间变量 截尾变量, by(分组变量)
    COX分析:cox 时间变量 自变量, dead(截尾变量)

    Reply

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注