一、练习
- 列出价格大于6000的国产汽车的价格
sysuse auto, clear list price if price > 6000 & foreign == 0
- 给出1978年维修记录少于3次或产地为国外的汽车价格和重量的描述性统计信息
sum price weight if (rep78 < 3 | foreign == 1)
- 本数据中有多少辆国产汽车价格大于6000?
count if price > 6000 & foreign == 0
- 列出 price wei len mpg turn foreign 变量的均值,标准差,中位数,最大值,最小值(对于这种要求,将一系列统计量以一张表格的形式展现出来更合适)
tabstat price wei len mpg turn foreign, stat(mean sd median max min)
- 按国产和非国产为标准分类对price wei 进行描述性统计
by foreign : sum price wei
- 将数据按照价格进行升序和降序排列
gsort price gsort -price
- 删除1978年维修记录缺失的数据
drop if rep78 == .
- 将字符型变量make转换成数值型变量cenmake
encode make, gen(cenmake)
- 将price 转化成字符型变量
tostring price, replace
- 将price 转化成数值型变量
destring price, replace
- 生成一个虚拟变量,其中价格大于6000为1,否则表示为0
gen vari = 1 if price > 6000 replace vari = 0 if price <= 6000 //这样比较麻烦,可以写成如下语句 gen dum_price = price > 6000
- 给出price wei len mpg 相关系数矩阵
pwcorr price wei len mpg
- 画出price wei len mpg 的相关系数矩阵散点图(graph是最需要掌握的画图命令)
graph matrix price wei len mpg
- 画出price频率直方图
histogram price, frequency
- 画出price和weight的散点图
scatter price weight
- 给price 和weight散点图加上price和wei的拟合线
twoway (scatter price weight) (lfit price weight)
二、线性回归模型
- 做一个简单的OLS回归,其中被解释变量为price,解释变量为weight foreign
1. 初步探索
cd D:\Stata_Projects //进入存储数据的工作目录
use "food.dta", clear //使用这个数据集

* 得到数据之后,一般先浏览,检查数据,并看变量的描述性统计信息
* 画出food_exp与income的散点图,并保存
twoway (scatter food_exp income)
* 保存图片, 如果有了就替代
graph save food1, replace
* 一步到位
twoway (scatter food_exp income), saving(food1, replace)

* 更丰富的画图功能, 使用help graph就可以查看到
twoway (scatter food_exp income) /// /* 基本语句,画什么的散点图 */
(lfit food_exp income), /// /*拟合线*/
ylabel(0(100)600) /// /* Y轴的刻度从0到600,间隔为100 */
xlabel(0(5)35) /// /* X轴刻度0-35,间隔5 */
title(食物消费数据) /// /* 图片名字 */
xtitle(每周收入) ///
ytitle(每周家庭食物花费)
* 还有更多的画图内容可以学习,图片的保存等也可以直接点击图片操作


2. 简单OLS回归(最小二乘法)
* food_ex = coef * income + ... 对income进行回归
regress food_exp income

* 计算y的拟合值,这里的y是food_exp'; xb是计算线性拟合值
predict yhat, xb //calculate linear prediction
* 计算残差项的拟合值
predict ehat, residuals
browse


* 做预测,预测其他的收入情况在该模型中的食物支出
* 例如,预测家庭每周收入2000$的家庭,每周食物支出
set obs 41 //本数据有40个观测值,我们多加一个观测值,但是没有定义具体观测值内容,它目前是缺失
replace income = 20 in 41 //将收入第41个观测值替换成20百
predict yhat1, xb
list yhat1 in 41

* 保存dta文件
* 直接点save菜单,或者输入下面命令
save "newfood.dta", replace
三、二次式模型
y = β 1 + β 2 ∗ x 2 + e y=\beta _1+ \beta_2*x^2 + e y=