首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >笔记·Stata选修课快速入门

笔记·Stata选修课快速入门

原创
作者头像
Moemu
发布2025-06-11 17:29:38
发布2025-06-11 17:29:38
6190
举报
文章被收录于专栏:雪萌天文台雪萌天文台

本文将快速指导你如何快速入门 Stata 并通过选修课考试

开始之前

首先介绍一下我们这篇文章使用的数据源和结构

问卷组成

由于泄露老师的课题不太好,因此我们只能简要介绍一下问卷的结构和几道典型题目,但这对于我们来说已经够用了

本文使用到的问卷是由 8 道单选题、1 道矩阵量表题、3道填空题组成的问卷星问卷(其中有一题是建议题,在本文中可被忽略),导出的数据大致如下:

No

Q1

Q2

Q3

Q4_1

Q4_2

Q4_3

Q4_4

Q4_5

Q4_6

Q4_7

Q4_8

Q4_9

Q4_10

Q5

Q6

Q7

Q8

Q9

Q10

Q11

2

4

1

2

1996

0

2

2

3

1

10

5

1

1

1989

6000

2

2

其中 Q1~Q3, Q5~Q6, Q10~Q11 是单选题、Q4 是矩阵量表题、Q8~Q9是填空题,Q12是建议意见反馈题(在上表中被忽略),单选题的结构大致如下:

Q6.您的户籍性质:

农业户口 2. 非农业户口 3. 居民户口 4. 其他(请注明):___

了解完这些,我们就可以正式开始了

导入数据

若无特殊说明,H3 标题都代表的是对应的 Stata 命令

clear

用于清除内存中的所有数据

import

导入外部数据

导入 Excel 文件
代码语言:txt
复制
import excel using "path", sheet("sheet_name") firstrow

其中, firstrow 表示第一行是变量名,sheet 用于指示目标表

导入 CSV 文件 & 纯文本文件
代码语言:txt
复制
import delimited using "path", delimiter(",") clear

其中, clear 将在文件导入前清空历史数据, delimiter 指定分隔符,默认为逗号

批量导入
代码语言:txt
复制
import delimited using "C:\data\*.csv", delimiter(",") clear case(preserve)

其中,case(preserve) 表示保持原始变量大小写的形式

use

加载 Stata .dta 文件

一般用法: use file.dta

选项:

  • clear 加载之前清空内存中的数据

添加标签

在 Stata 中,label 语句用于给变量和变量值添加标签(描述性信息),它有以下形式

类型

功能

label variable

给变量添加描述性标签

label define

定义一个值标签(value label)

label values

将定义好的值标签应用到变量

其中,label definelabel values 经常被组合使用

label variable

换言之,给变量添加描述,描述内容通常对应问卷设问

示例

原始试题:

Q6.您的户籍性质:

农业户口 2. 非农业户口 3. 居民户口 4. 其他(请注明):___

数据文件组成:

No

Q6

1

1

2

3

Stata 语句:

代码语言:txt
复制
label variable Q6 "户籍性质" 

说明 Q6 变量表示的是户籍

label define

给变量中的值定义一个标签集合,标签内容通常对应问卷选项

Stata 语句:

代码语言:txt
复制
label define 户籍性质标签 1 "农业户口" 2 "非农业户口" 3 "居民户口" 4 "其他"

定义了一个名为 "户籍性质标签" 的标签集合,带有 4 个选项标签

label values

应用标签集合到变量中

Stata 语句:

代码语言:txt
复制
label values Q6 户籍性质标签

给变量 Q6 贴上"户籍性质标签"的标签集合


最终效果

代码语言:txt
复制
. tab Q6

     户籍性 |
         质 |      Freq.     Percent        Cum.
------------+-----------------------------------
   农业户口 |      6,594       65.06       65.06
 非农业户口 |      1,891       18.66       83.72
   居民户口 |      1,603       15.82       99.54
       其他 |         47        0.46      100.00
------------+-----------------------------------
      Total |     10,135      100.00

label other

  • label drop mylabel 删除一个值标签定义
  • label clear 清除变量上的值标签
  • label values q1 q2 q3 mylabel 批量加入多个值标签

清洗数据

tab(tabulate)

生成频数分布表(单变量)或列联表(双变量)

变体:

  • tab varname 生成单变量频数表

选项:

  • miss 查找缺省值,缩写 m
  • sort 按频率排序
  • tab var1 var2 生成双变量交叉表

选项:

  • row 显示每行的百分比(即每个单元格占该行总的比例)
  • col 显示每列的百分比
  • cell 显示每个单元格占总样本的比例
  • chi2 添加卡方检验结果(判断两个变量是否独立)
  • nokey 不显示值标签解释

sum(summarize)

查看数据集中一个或多个变量的基本统计特征,包括:

  • 观测数(Number of observations)
  • 均值(Mean)
  • 标准差(Standard deviation)
  • 最小值(Min)
  • 最大值(Max)

一般用法: sum [varlist]

详细统计信息: sum [varlist], detail

带条件使用: sum [varlist] condition

示例:

代码语言:txt
复制
. sum Q6

    Variable |        Obs        Mean    Std. dev.       Min        Max
-------------+---------------------------------------------------------
          Q6 |     10,135    1.516823    .7706682          1          4

codebook

查看数据集中变量的结构和取值分布情况,一般用于检查缺失值或找出潜在的数据问题

内容包括:

  • 变量名(Variable)
  • 类型(type)
  • 标签(label)
  • 最小值 / 最大值(min/max)
  • 唯一值个数(unique values)
  • 缺失值比例(missing)
  • 频数最高的几个值(top patterns)

一般用法: codebook <varlist>

选项:

  • compact 简洁模式,只显示关键信息
  • notes 显示变量的注释信息(如果有)
  • tabulate(#) 对分类变量显示频数表(# 表示最多显示多少个类别)
  • problems 只显示可能有问题的变量(如异常值、缺失值过多等)

示例:

代码语言:txt
复制
. codebook Q9

-------------------------------------------------------------------------------------
Q9                                                                       2020年总收入
-------------------------------------------------------------------------------------

                  Type: Numeric (long)

                 Range: [90,1000000]                  Units: 1
         Unique values: 793                       Missing .: 0/8,103

                  Mean: 40227.2
             Std. dev.: 61677.8

           Percentiles:     10%       25%       50%       75%       90%
                           2500      9600     25000     50000     90000

drop

删除变量(列)或观测值(行)

变体:

  • drop var1 var2 ... 删除变量
  • drop if condition 删除观测值。删除缺失值: drop if missing(varname)

ren(rename)

重命名变量名或变量标签

一般用法: ren oldvar newvar

重命名多个变量: rename (old1 old2) (new1 new2)

gen(generate)

生成新变量(即创建新的列)

一般用法: gen 新变量名 = 表达式

使用条件控制: gen newvar = var if condition

示例:

原始试题:

Q9.2020年,您的年税后/可支配收入大约是()元。

数据文件组成:

No

Q9

1

21100

2

20000

Stata 语句及运行结果:

代码语言:txt
复制
. label variable Q9 "2020年总收入"
. sum Q9

    Variable |        Obs        Mean    Std. dev.       Min        Max
-------------+---------------------------------------------------------
          Q9 |     10,135    32605.92    66197.84         -2    3000000

. tab Q9

   2020年总 |
       收入 |      Freq.     Percent        Cum.
------------+-----------------------------------
         -2 |         88        0.87        0.87
         -1 |        320        3.16        4.03
          0 |      1,613       15.92       19.94
          1 |          1        0.01       19.95
          3 |          1        0.01       19.96
         20 |          1        0.01       19.97
         30 |          1        0.01       19.98
         50 |          1        0.01       19.99
         70 |          1        0.01       20.00
         75 |          1        0.01       20.01
         80 |          1        0.01       20.02
         82 |          1        0.01       20.03
         90 |          1        0.01       20.04
        100 |          6        0.06       20.10
...
    1500000 |          1        0.01       99.99
    3000000 |          1        0.01      100.00
------------+-----------------------------------
      Total |     10,135      100.00

. drop if Q9<90 | Q9>1000000
(2,033 observations deleted)

. sum Q9

    Variable |        Obs        Mean    Std. dev.       Min        Max
-------------+---------------------------------------------------------
          Q9 |      8,103    40227.21     61677.8         90    1000000

. gen 月收入=Q9/12 

. label variable 月收入  "2024年月收入"


. sum  月收入

    Variable |        Obs        Mean    Std. dev.       Min        Max
-------------+---------------------------------------------------------
      月收入 |      8,103    3352.267    5139.817        7.5   83333.34

recode

重新编码变量的取值

语法: recode varname (rule), gen(newvar) | into(newvar)

  • varname:需要重编码的原始变量。
  • (rule):指定如何将原始值映射到新值。
  • gen(newvar):生成一个新变量(推荐使用)。
  • into(newvar):在已有变量中覆盖结果(慎用)。

其中 rule 写法如下:

写法

含义

(min/val=new)

小于等于 val 的都变为 new

(val/max=new)

大于等于 val 的都变为 new

(lower/upper=new)

在 lower 到 upper 之间的变为 new

示例:

示例 1:将年龄分成年龄段(生成新变量)

代码语言:txt
复制
recode age (18/25=1 "18-25") (26/35=2 "26-35") (36/50=3 "36-50"), gen(age_group)

这会创建一个新变量 age_group,将 age 变量按区间划分:

原始值范围

新值

18 - 25

1

26 - 35

2

36 - 50

3

注意:括号中的 "标签" 是可选的,用于给每个组添加描述性标签(需要配合 label define 使用)。


示例 2:合并类别变量

假设你有一个性别变量 gender,取值为:

  • 1 = Male
  • 2 = Female
  • 3 = Other

你想把 Other 合并进 Female(即 2):

代码语言:txt
复制
recode gender (1=1) (2=2) (3=2), gen(gender_new)

这样 gender_new 的取值只有 12


示例 3:处理缺失值或异常值

如果你想把某些异常值设为缺失值:

代码语言:txt
复制
recode income (9999999=.) , gen(income_clean)

这会将所有等于 9999999 的值设置为缺失值(.)。

保存数据

save

保存内存中的数据到文件中

一般用法: save file.dta

选项:

  • replace 覆盖已有文件
  • version(x) 指定版本兼容格式

est(estimates)

存储、管理、比较和输出回归模型估计结果,通常与 reg 搭配使用

变体:

  • est store name 将当前估计结果保存为 name
  • est table name1 name2 ... 显示多个保存过的模型结果
  • est restore name 恢复之前保存的模型
  • est drop name 删除保存的模型
  • est clear 清除所有已保存的模型
  • estimates save / load 将估计结果保存到文件或从文件加载

esttab

将回归模型估计结果输出到 Word / Excel

使用前需要安装:

代码语言:txt
复制
ssc install esttab

一般用法:

代码语言:txt
复制
esttab model1 model2 model3 using results.rtf, replace ///
    title("工作满意度影响因素分析") ///
    label booktabs se star(* 0.1 ** 0.05 *** 0.01) ///
    stats(N r2_a)

选项:

选项

含义

nogaps

不在系数和标准误之间留空行(紧凑显示)

compress

紧凑排版,节省空间

b(%20.3f)

系数保留 3 位小数,并用 20 个字符宽度对齐

se(%7.3f)

标准误保留 3 位小数,用 7 个字符宽度对齐

  • nogaps 不在系数和标准误之间留空行(紧凑显示)
  • compress 紧凑排版,节省空间
  • b(%20.3f) 系数保留 3 位小数,并用 20 个字符宽度对齐
  • se(%7.3f)` 标准误保留 3 位小数,用 7 个字符宽度对齐

示例:

代码语言:txt
复制
reg 工作满意度 i.婚姻状况  年龄  性别   // 基础模型
est store 模型1
reg 工作满意度 i.婚姻状况  年龄  性别  月收入 i.教育程度 // 基础模型
est store 模型2
esttab 模型1 模型2 using 回归输出结果1.rtf,	replace star(* 0.10 ** 0.05 *** 0.01 ) nogaps compress b(%20.3f) se(%7.3f)  r2(%9.3f) ar2 obslast scalars(F)  

数据分析

卡方检验(tab2)

用于测量两个变量之间是否独立。

a的取值,一般是0.01(对应置信水平99%)、0. 05 (对应置信水平95%,默认)、0.1(对应 置信水平90%,这是底限,不能再低了)

指令: tab2 varlist, by(varname)

又或者: tab2 主变量 其他变量1 其他变量2 ..., chi2 [其他选项]

参数:

  • chi2 / chi 添加卡方检验
  • row / col 显示行/列百分比
  • cell 显示单元格百分比
  • missing 包括作为一个类别的缺失值
  • all 显示所有类型的百分比,相当于 row col cell

示例:

代码语言:txt
复制
. tab2 婚姻状况 性别, row col chi2 nokey

-> tabulation of 婚姻状况 by 性别  

RECODE of Q11 |
    (婚姻状况 |         性别
            ) |        男         女 |     Total
--------------+----------------------+----------
         未婚 |       320        184 |       504     <-- 频数
              |     63.49      36.51 |    100.00    <-- 行百分比
              |     15.01      10.41 |     12.92    <-- 列百分比
--------------+----------------------+----------
    已婚/同居 |     1,719      1,452 |     3,171 
              |     54.21      45.79 |    100.00 
              |     80.63      82.13 |     81.31 
--------------+----------------------+----------
    离婚/丧偶 |        93        132 |       225 
              |     41.33      58.67 |    100.00 
              |      4.36       7.47 |      5.77 
--------------+----------------------+----------
        Total |     2,132      1,768 |     3,900 
              |     54.67      45.33 |    100.00 
              |    100.00     100.00 |    100.00 

          Pearson chi2(2) =  32.2475   Pr = 0.000  <-- chi2: 卡方值; Pr: P 值

上面的示例输出结果显示 p 值非常小(< 0.001),说明 婚姻状况与性别之间存在统计显著的关系

也就是说,不同性别在婚姻状况上的分布不是随机的,是有差异的。

T 检验(ttest)

判断两个组之间的均值是否存在显著差异

数据要求: 因变量一般适用于数值型变量,也可以用于定序变量(级数最好超过5级的态度量表)

内容

解释

Obs

观测数量

Mean

均值

Std. Err

标准误(衡量样本均值估计的精度)

Std. dev.

标准差

t

t 统计量

Degrees of freedom (df)

自由度

**p-value (Pr >

t

Confidence interval 95% Conf. Interval

95% 置信区间

单样本 T 检验

检验一个变量的平均值是否等于某个特定值

一般用法: ttest 变量名 == 数值

示例:

代码语言:txt
复制
. ttest 月收入 = 5500

One-sample t test
------------------------------------------------------------------------------
Variable |     Obs        Mean    Std. err.   Std. dev.   [95% conf. interval]
---------+--------------------------------------------------------------------
  月收入 |   3,900    5017.525    102.4511     6398.07    4816.662    5218.388
------------------------------------------------------------------------------
    mean = mean(月收入)                                           t =  -4.7093
H0: mean = 5500                                  Degrees of freedom =     3899

   Ha: mean < 5500             Ha: mean != 5500               Ha: mean > 5500
 Pr(T < t) = 0.0000         Pr(|T| > |t|) = 0.0000          Pr(T > t) = 1.0000

. 

部分数据解读:

  • 95% conf. interval = 4816.662, 5218.388 :总体均值的 95% 置信区间,也就是说我们有 95% 的信心认为真实的平均月收入在这个区间内。
  • H0(原假设):总体平均月收入 = 5500
  • Ha(备择假设): 总体平均月收入 ≠ 5500(双尾)
  • t = -4.7093 :计算出的 t 统计量,负号表示样本均值小于 5500。
  • Degrees of freedom (自由度) = 3899 :由样本量决定。
  • Ha(备择假设):总体平均月收入 < 5500 | != 5500 | > 5500

我们有三种不同的备择假设:

备择假设

p 值

含义

平均收入 < 5500

0.0000

极其显著

平均收入 ≠ 5500(双尾)

0.0000

极其显著

平均收入 > 5500

1.0000

完全不支持

结论:

通过单样本 t 检验发现,样本的平均月收入为 5017.53 元,显著低于 5500 元(p < 0.001),拒绝“平均月收入等于 5500”的原假设。

独立样本 t 检验

比较两个独立群体的平均值是否有显著差异

一般用法: ttest 变量名, by(分组变量)

示例:

代码语言:txt
复制
. ttest 月收入, by(性别)

Two-sample t test with equal variances
------------------------------------------------------------------------------
   Group |     Obs        Mean    Std. err.   Std. dev.   [95% conf. interval]
---------+--------------------------------------------------------------------
      男 |   2,132    5732.543    153.5135    7088.271    5431.491    6033.595
      女 |   1,768    4155.298    126.6787    5326.535    3906.842    4403.754
---------+--------------------------------------------------------------------
Combined |   3,900    5017.525    102.4511     6398.07    4816.662    5218.388
---------+--------------------------------------------------------------------
    diff |            1577.245    204.2707                1176.757    1977.732
------------------------------------------------------------------------------
    diff = mean(男) - mean(女)                                    t =   7.7213
H0: diff = 0                                     Degrees of freedom =     3898

    Ha: diff < 0                 Ha: diff != 0                 Ha: diff > 0
 Pr(T < t) = 1.0000         Pr(|T| > |t|) = 0.0000          Pr(T > t) = 0.0000

结论:

独立样本 t 检验结果显示,男性的平均月收入显著高于女性(p < 0.001),两组差异为 1577 元。

配对样本 t 检验

检验同一样本在前后两次测量值或在一次测量中两种量表分数/ 测验分数的均值,确定二者之间是否显著不同

一般用法: ttest 变量1 == 变量2

方差检验

robvar

检验不同组别之间的方差是否相等

一般用法: robvar 变量名, by(分组变量)

输出:

统计量

描述

W0

使用组内中位数偏差的对数标准差回归(最常用)

W1

使用组内均值偏差的对数标准差回归

W2

使用组内均值偏差的标准差直接回归

  • 如果 p 值 < 0.05 :拒绝“方差相等”的原假设 → 方差不齐性
  • 如果 p 值 ≥ 0.05 :不能拒绝原假设 → 可以认为方差相等

如果反差不齐性并且你需要做 t 检验,应该使用 unequalwelch 选项

代码语言:txt
复制
ttest 月收入, by(性别) unequal

示例:

代码语言:txt
复制
. robvar 月收入,by(教育程度)

  RECODE of |
        Q10 |
    (教育程 |       Summary of 2024年月收入
        度) |        Mean   Std. dev.       Freq.
------------+------------------------------------
   小学及以 |   2567.4288   2776.9831         619
       初中 |   3925.7338   5211.6473       1,245
  高中/中专 |   4831.0771   4892.7945         858
   大专及以 |   7594.6576   8621.3015       1,178
------------+------------------------------------
      Total |   5017.5251     6398.07       3,900

W0  =  66.010015   df(3, 3896)     Pr > F = 0.00000000

W50 =  45.904817   df(3, 3896)     Pr > F = 0.00000000

W10 =  48.852170   df(3, 3896)     Pr > F = 0.00000000

此处P=0.0000,即可以使用 welch方法

oneway

检验三个或以上独立组的均值是否相等

前提: 正态性, 方差齐性, 独立性

一般用法: oneway 因变量 分组变量, tabulate bonferroni scheffe sidak

kwallis

非参数检验 ,用于比较三个或以上独立组的中位数是否存在显著差异

一般用法: kwallis 因变量, by(分组变量)

示例:

代码语言:txt
复制
. kwallis 月收入, by(教育程度)

Kruskal–Wallis equality-of-populations rank test

  +------------------------------------+
  |       教育程度 |   Obs |  Rank sum |
  |----------------+-------+-----------|
  |     小学及以下 |   619 | 747313.00 |
  |           初中 | 1,245 |  2.10e+06 |
  | 高中/中专/技校 |   858 |  1.74e+06 |
  |     大专及以上 | 1,178 |  3.01e+06 |
  +------------------------------------+

  chi2(3) = 682.770
     Prob =  0.0001

  chi2(3) with ties = 684.057
               Prob =  0.0001

此处 P=0.0001,远小于0.05,说明不同教育程度群体的月收入中位数存在显著差异,需进一步进行事后检验确定哪些组间存在差异。

dunntest

在 Kruskal-Wallis 检验显著后,用于确定具体哪些组之间存在差异

使用前需要安装:

代码语言:txt
复制
ssc install dunntest

若该命令不能运行,通过运行search dunntest,选择其中一个安装包进行安装。

一般用法: dunntest 因变量, by(分组变量) method(bonferroni|holm|none)

示例:

代码语言:txt
复制
. dunntest 月收入, by(教育程度)

Kruskal–Wallis equality-of-populations rank test

  +------------------------------------+
  |       教育程度 |   Obs |  Rank sum |
  |----------------+-------+-----------|
  |     小学及以下 |   619 | 747313.00 |
  |           初中 | 1,245 |  2.10e+06 |
  | 高中/中专/技校 |   858 |  1.74e+06 |
  |     大专及以上 | 1,178 |  3.01e+06 |
  +------------------------------------+

  chi2(3) = 682.770
     Prob =  0.0001

  chi2(3) with ties = 684.057
               Prob =  0.0001


              Dunn's Pairwise Comparison of 月收入 by 教育程度              
                              (No adjustment)                               
Col Mean-|
Row Mean |   小学�     初中   高中/�
---------+---------------------------------
    初中 |  -8.717981
         |     0.0000
         |
  高中/� |  -1.39e+01  -6.873605
         |     0.0000     0.0000
         |
   大专� |  -2.42e+01  -1.90e+01  -1.04e+01
         |     0.0000     0.0000     0.0000

这是 Dunn 检验的结果矩阵 ,显示的是每两组之间进行成对比较的 Z 值和对应的 p 值。

表格中每一行表示一个组(Row),与上面的列(Column)组进行比较。负值表示 Row 组的收入中位数低于 Col 组。

对比组

Z 值

p 值

是否显著(p < 0.05)

初中 vs 小学

-8.72

0.0000

高中 vs 小学

-13.9

0.0000

高中 vs 初中

-6.87

0.0000

大专 vs 小学

-24.2

0.0000

大专 vs 初中

-19.0

0.0000

大专 vs 高中

-10.4

0.0000

结论: 在控制多重比较误差的情况下,所有教育程度组之间的月收入中位数都存在统计上显著的差异(p < 0.001)。 且随着教育程度提高,收入水平显著上升。

相关分析(pwcorr)

计算变量之间的皮尔逊相关系数(Pearson Correlation Coefficient) ,可以帮助我们快速了解多个连续变量之间两两的相关程度。

一般用法: pwcorr varlist [if] [in] [, options]

选项:

  • sig: 显示每个相关系数的显著性 p 值
  • star(#): 标记显著水平(如star(0.05)表示 p < 0.05 的相关系数标 *)
  • obs: 显示每对变量使用的样本数量
  • print(#) 只显示相关系数大于 # 或小于 -# 的值(用于筛选强相关)
  • pwlistwise 使用 listwise 删除缺失值(默认是 pairwise)

示例:

代码语言:txt
复制
. pwcorr 工作满意度  月收入 年龄, obs star(.05) 

             |  工作~度   月收入     年龄
-------------+---------------------------
  工作满意度 |   1.0000 
             |     3900
             |
      月收入 |   0.1095*  1.0000 
             |     3900     3900
             |
        年龄 |   0.0070  -0.1617*  1.0000 
             |     3900     3900     3900

以工作满意度与年龄为例:

  • 相关系数 r = 0.007,加了 * 号则表示 p < 0.05
  • Obs = 3900

结论:

  1. 工作满意度 与 月收入 之间存在 :
    • 微弱正相关(r = 0.1095)
    • 统计显著(p < 0.05)
  2. 工作满意度 与 年龄 之间 :
    • 几乎没有相关性(r = 0.0070)
    • 不显著(p > 0.05)
  3. 月收入 与 年龄 之间存在 :
    • 微弱负相关(r = -0.1617)
    • 统计显著(p < 0.05)

在 3900 个有效样本中,工作满意度与月收入呈微弱正相关,月收入与年龄呈微弱负相关,而工作满意度与年龄几乎无关。

回归分析(reg)

执行线性回归分析,适用于研究一个连续因变量、与一个或多个自变量之间的线性关系。

基本用法: reg 因变量 自变量1 自变量2 ...

选项:

beta

输出标准化回归系数(便于比较不同变量的影响大小)

vce(robust)

使用稳健标准误(处理异方差问题)

noconstant

不包含常数项(截距)

level(99)

设置置信区间为 99%(默认是 95%)

  • beta : 输出标准化回归系数(便于比较不同变量的影响大小)
  • vce(robust): 使用稳健标准误(处理异方差问题)
  • noconstant 不包含常数项(截距)
  • level(99)` 设置置信区间为 99%(默认是 95%)

输出结果:

指标

含义

Number of obs

样本数量

F(model, residual)

F 检验值,判断整个模型是否显著

Prob > F

F 检验的 p 值,小于 0.05 表示模型整体显著

R-squared

决定系数,表示模型能解释因变量变异的比例

Adj R-squared

调整后的决定系数R^2(考虑了变量个数)

Root MSE

模型的标准误,越小越好

示例:

代码语言:txt
复制
. reg 工作满意度 i.婚姻状况  年龄  性别

      Source |       SS           df       MS      Number of obs   =     3,900
-------------+----------------------------------   F(4, 3895)      =      4.81
       Model |  85.9465517         4  21.4866379   Prob > F        =    0.0007
    Residual |  17399.7724     3,895   4.4672073   R-squared       =    0.0049
-------------+----------------------------------   Adj R-squared   =    0.0039
       Total |   17485.719     3,899   4.4846676   Root MSE        =    2.1136

------------------------------------------------------------------------------
  工作满意度 | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
    婚姻状况 |
  已婚/同居  |    .155059   .1159594     1.34   0.181     -.072288     .382406
  离婚/丧偶  |   .0520416    .183447     0.28   0.777    -.3076197    .4117028
             |
        年龄 |    .000486    .003471     0.14   0.889    -.0063191    .0072911
        性别 |   .2719668   .0690616     3.94   0.000     .1365664    .4073672
       _cons |   7.033628   .1833333    38.37   0.000      6.67419    7.393067
------------------------------------------------------------------------------

结论:模型整体显著,但解释力较弱(R² 很低),说明还有很多未被纳入的因素影响工作满意度。

变量

系数

标准误

t 值

p 值

是否显著?

解释

已婚/同居

0.155

0.116

1.34

0.181

❌ 不显著

相比未婚者,工作满意度平均高出 0.155 分,但不显著

离婚/丧偶

0.052

0.183

0.28

0.777

❌ 不显著

相比未婚者,工作满意度几乎无差异

变量

系数

标准误

t 值

p 值

是否显著?

解释

年龄

0.000486

0.00347

0.14

0.889

❌ 不显著

每增加一岁,工作满意度仅上升 0.0005 分,不显著

变量

系数

标准误

t 值

p 值

是否显著?

解释

性别

0.272

0.069

3.94

0.000

✅ 显著(p < 0.001)

男性比女性平均高 0.272 分

变量

系数

解释

_cons

7.034

当所有自变量取 0 时(即未婚、女性、年龄=0),预期工作满意度为 7.03 分

在控制婚姻状况和年龄后,性别对工作满意度有显著影响(男性高于女性),但婚姻状况和年龄本身对工作满意度没有显著影响;模型整体显著,但解释力较低(R² = 0.49%),说明还有更多未被测量的重要因素。

逻辑回归(logistic)

逻辑回归是一种广义线性模型(Generalized Linear Model, GLM) ,用来预测某个事件发生的概率 ,并估计自变量对这个概率的影响。

不同于线性回归输出的是连续值,逻辑回归输出的是一个介于 0 和 1 之间的发生概率

逻辑回归适用于因变量为二分类变量 (binary outcome)的情况,例如:

  • 是否购买产品(是/否)
  • 是否患病(是/否)
  • 是否离职(是/否)

基本用法: logistic 因变量 自变量1 自变量2 ..., [选项]

输出指标:

指标

含义

Number of obs

样本数量(这里是 3900)

LR chi2(4)

似然比卡方检验统计量,判断模型整体是否显著

Prob > chi2

p 值 < 0.05 表示模型显著

Pseudo R2

拟似决定系数(伪 R²),衡量模型拟合优度

OR 值(Odds Ratio):

  • OR > 1:该变量增加时,结果为“1”(满意)的可能性更大
  • OR < 1:该变量增加时,结果为“1”的可能性更小
  • OR = 1:无影响

示例:

代码语言:txt
复制
. logistic  满意度分组 i.婚姻状况  年龄  性别   // 基础模型  

Logistic regression                                     Number of obs =  3,900
                                                        LR chi2(4)    =  18.76
                                                        Prob > chi2   = 0.0009
Log likelihood = -2617.3811                             Pseudo R2     = 0.0036

------------------------------------------------------------------------------
  满意度分组 | Odds ratio   Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
    婚姻状况 |
  已婚/同居  |   1.318581   .1460659     2.50   0.013     1.061243     1.63832
  离婚/丧偶  |   1.483392   .2649203     2.21   0.027     1.045295      2.1051
             |
        年龄 |   1.000803   .0033622     0.24   0.811     .9942343    1.007414
        性别 |   1.194392   .0799448     2.65   0.008     1.047546    1.361824
       _cons |   .8684218   .1532879    -0.80   0.424     .6144442     1.22738
------------------------------------------------------------------------------
Note: _cons estimates baseline odds.

变量

OR 值

标准误

z 值

p 值

是否显著?

解释

已婚/同居

1.319

0.146

2.50

0.013

✅ 显著

相比未婚者,已婚/同居者的满意度更高(高出约 31.9%)

离婚/丧偶

1.483

0.265

2.21

0.027

✅ 显著

离婚/丧偶者满意度最高,比未婚者高出约 48.3%

变量

OR 值

标准误

z 值

p 值

是否显著?

解释

年龄

1.0008

0.0034

0.24

0.811

❌ 不显著

年龄对满意度几乎没有影响

变量

OR 值

标准误

z 值

p 值

是否显著?

解释

性别

1.194

0.0799

2.65

0.008

✅ 显著

男性比女性满意度高约 19.4%

变量

OR 值

解释

_cons

0.868

表示在所有自变量取 0(即未婚、女性、年龄=0)时,满意 vs 不满意的基线优势比

结论: 在控制其他变量后,婚姻状况和性别对满意度有显著影响 :已婚/同居和离婚/丧偶的人满意度高于未婚者,且男性的满意度显著高于女性;而年龄对满意度没有显著影响。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始之前
    • 问卷组成
  • 导入数据
    • clear
    • import
      • 导入 Excel 文件
      • 导入 CSV 文件 & 纯文本文件
      • 批量导入
    • use
  • 添加标签
    • label variable
    • label define
    • label values
    • label other
  • 清洗数据
    • tab(tabulate)
    • sum(summarize)
    • codebook
    • drop
    • ren(rename)
    • gen(generate)
    • recode
  • 保存数据
    • save
    • est(estimates)
    • esttab
  • 数据分析
    • 卡方检验(tab2)
    • T 检验(ttest)
      • 单样本 T 检验
      • 独立样本 t 检验
      • 配对样本 t 检验
    • 方差检验
      • robvar
      • oneway
      • kwallis
      • dunntest
    • 相关分析(pwcorr)
    • 回归分析(reg)
    • 逻辑回归(logistic)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档