例子

以课本表9.1的数据为样本,建立虚拟变量模型:

IMG

代码部分

# lec08
# 计量实验6:虚拟变量-代码部分

# 导入程序包
import pandas as pd
import statsmodels.api as sm
import ssl

# 禁用SSL证书校验
ssl._create_default_https_context = ssl._create_unverified_context

# 导入(在线)数据
df = pd.read_excel(r"https://cdn.seit2019.xyz/data/econometrics/table9.1.xlsx")

# 展示数据
print("数据展示如下:")
print(df, "\n")

# 简要统计描述
print("简要统计描述:")
print(df.describe(), "\n")

# 生成Dummy
df = pd.get_dummies(df, prefix="D", prefix_sep="_", columns=["District"])
# 命名D1,D2,D3: D1=1,西部;D2=1,中东北部;D3=南部
df = df.rename(columns={"D_West": "D1", "D_North&East": "D2", "D_South": "D3"})
print("所有数据:")
print(df, "\n")

# ANOVA模型:虚拟变量引入规则1
# 定义变量
Salary = df["Salary"]
x = df[["D2", "D3"]]
X = sm.add_constant(x)
# OLS回归
OLS_ANOVA_01 = sm.OLS(Salary, X).fit()
print("ANOVA模型:虚拟变量引入规则1")
print(OLS_ANOVA_01.summary(), "\n")

# ANOVA模型:虚拟变量引入规则2
# Eviews中,引入常数项,报错;python中,仍可回归,回归结果Notes[2]提示有严重的多重共线性。
# 定义变量
Salary = df["Salary"]
x = df[["D1", "D2", "D3"]]
# X = sm.add_constant(x)
# OLS回归
OLS_ANOVA_02 = sm.OLS(Salary, x).fit()
print("ANOVA模型:虚拟变量引入规则2")
print(OLS_ANOVA_02.summary(), "\n")

# ANCOVA模型:虚拟变量引入规则1
# 定义变量
Salary = df["Salary"]
x = df[["D2", "D3", "Spending"]]
X = sm.add_constant(x)
# OLS回归
OLS_ANCOVA_01 = sm.OLS(Salary, X).fit()
print("ANCOVA模型:虚拟变量引入规则1")
print(OLS_ANCOVA_01.summary(), "\n")

# ANCOVA模型:虚拟变量引入规则2
# 定义变量
Salary = df["Salary"]
x = df[["D1", "D2", "D3", "Spending"]]
# X = sm.add_constant(x)
# OLS回归
OLS_ANCOVA_02 = sm.OLS(Salary, x).fit()
print("ANCOVA模型:虚拟变量引入规则2")
print(OLS_ANCOVA_02.summary(), "\n")
分类: 教程笔记

管理员

管理员

SEIT资源站