stata做多项logit回归,如果不同的备选项的自变量不一样该怎么输入代码,比如说出租车的自变量包括等车时间,出行时间和打车费,私家车包括买车费用,油费和出行时间,公交车的自变量包括等车时间,出行时间,车票和车内拥挤度,这个应该怎么设定,另外他们的人口属性特征是相同的
各位能别基于ChatGPT了吗,他能解决我就不在这儿问了
我引用ChatGPT作答:如果多项Logit回归中备选项的自变量不同,可以考虑使用条件语句,将不同的自变量分别输入。以出租车、私家车和公交车的多项Logit回归为例,可以按照如下的代码进行设定:
// 出租车多项Logit回归
mlogit choice i.gender i.age i.income i.edu waittime triptime fare, base(3) vce(cluster id)
if _rc == 2000 {
mlogit choice i.gender i.age i.income i.edu buycost oilcost triptime, base(3) vce(cluster id)
}
if _rc == 2000 {
mlogit choice i.gender i.age i.income i.edu waittime triptime ticket crowding, base(3) vce(cluster id)
}
// 私家车多项Logit回归
mlogit choice i.gender i.age i.income i.edu buycost oilcost triptime, base(3) vce(cluster id)
if _rc == 2000 {
mlogit choice i.gender i.age i.income i.edu waittime triptime fare, base(3) vce(cluster id)
}
if _rc == 2000 {
mlogit choice i.gender i.age i.income i.edu waittime triptime ticket crowding, base(3) vce(cluster id)
}
// 公交车多项Logit回归
mlogit choice i.gender i.age i.income i.edu waittime triptime ticket crowding, base(3) vce(cluster id)
if _rc == 2000 {
mlogit choice i.gender i.age i.income i.edu buycost oilcost triptime, base(3) vce(cluster id)
}
if _rc == 2000 {
mlogit choice i.gender i.age i.income i.edu waittime triptime fare, base(3) vce(cluster id)
}
在以上代码中,使用了 _rc 变量来记录上一个回归的结果代码,如果上一个回归出现了 2000 的结果代码,说明该回归存在某些自变量无法使用,因此需要执行下一个回归,直到所有的自变量都能够被包含在内。另外,为了避免变量间的多重共线性,建议对所有的自变量进行中心化或标准化处理。
// 设置参考组别为公交车
mlogit choice i.mode, basecategory(3) i.mode#c.waiting i.mode#c.travel i.mode#c.fare i.mode#c.buy_car i.mode#c.oil_cost i.mode#c.crowding
用Stata的margins命令来计算概率
// 计算出租车的选择概率
margins, dydx(mode=1) at(c.waiting=10 c.travel=30 c.fare=20 c.buy_car=20000 c.oil_cost=5 c.crowding=2)
// 计算私家车的选择概率
margins, dydx(mode=2) at(c.waiting=10 c.travel=30 c.fare=20 c.buy_car=20000 c.oil_cost=5 c.crowding=2)
// 计算公交车的选择概率(参考组别)
margins, dydx(mode=3) at(c.waiting=10 c.travel=30 c.fare=20 c.buy_car=20000 c.oil_cost=5 c.crowding=2)
该回答参考ChatGPT:
在Stata中,可以使用多项logit回归(multinomial logistic regression)来研究多个有序或无序的分类变量之间的关系。如果不同的备选项的自变量不一样,可以考虑使用“虚拟变量”(dummy variables)来处理这个问题。具体来说,可以将每个备选项的自变量分成两部分,一部分是所有备选项都具有的共同自变量(比如人口属性特征),另一部分是特定备选项的自变量。
以上述例子为例,可以按照以下步骤进行分析:
在Stata中导入数据,并创建虚拟变量。假设数据集中包含出租车、私家车和公交车三种备选项的数据,可以使用以下命令来创建虚拟变量:
gen taxi = (type == "出租车")
gen private = (type == "私家车")
gen bus = (type == "公交车")
这里假设数据集中包含一个名为“type”的变量,用来表示备选项的类型。
创建多项logit回归模型。假设出租车的自变量包括等车时间、出行时间和打车费,私家车包括买车费用、油费和出行时间,公交车的自变量包括等车时间、出行时间、车票和车内拥挤度,可以使用以下命令创建多项logit回归模型:
mlogit choice i.taxi i.private i.bus i.gender i.age i.income waittime triptime fare carcost oilcost ticket crowding, base(3)
这里使用了“i.”前缀来表示虚拟变量,并使用“base(3)”命令来指定公交车为基准备选项。
注意,以上代码中的变量名仅供参考,需要根据实际数据集进行相应的修改。具体来说:
“choice”表示因变量,即被调查者选择的备选项;
“i.taxi”、“i.private”和“i.bus”表示虚拟变量,用来区分不同的备选项;
“i.gender”、“i.age”和“i.income”是所有备选项都具有的共同自变量,用来控制人口属性特征;
“waittime”、“triptime”、“fare”等是特定备选项的自变量,用来衡量不同备选项的特征。
通过多项logit回归模型来分析结果。使用以上代码可以得到多项logit回归模型的结果,包括各个自变量的系数估计值、标准误、t值和p值等。可以通过这些结果来判断不同自变量的重要性和影响方向。同时,还可以使用Stata提供的其他命令来进一步分析模型的拟合度和预测能力,比如命令“lrtest”用来进行模型比较和拟合度检验,命令“estat predict”用来生成预测值等。需要注意的是,在使用多项logit回归模型进行分析时,需要考虑以下几个因素:
虚拟变量的选择。在创建虚拟变量时,需要根据实际研究问题来选择备选项的类型,并为每个备选项创建一个虚拟变量。同时,需要选择一个备选项作为基准备选项,其他备选项都与基准备选项进行比较。
自变量的选择。在选择自变量时,需要根据实际研究问题来选择具有代表性和相关性的自变量。同时,需要保证所有备选项都具有相同的共同自变量,以控制人口属性特征的影响。
模型的拟合度和预测能力。在使用多项logit回归模型进行分析时,需要关注模型的拟合度和预测能力。可以使用Stata提供的命令来进行模型比较、拟合度检验和预测值生成等操作,以评估模型的性能。
结果的解释。在得到多项logit回归模型的结果后,需要对结果进行解释,以得出结论。需要注意的是,多项logit回归模型的系数估计值表示不同自变量对不同备选项之间的相对影响,而不是绝对影响。因此,在解释结果时需要注意这个区别,以避免得出错误的结论。
综上所述,使用多项logit回归模型进行分析需要综合考虑多个因素,包括虚拟变量的选择、自变量的选择、模型的拟合度和预测能力以及结果的解释等。同时,需要根据实际研究问题来进行相应的修改和调整,以得到更加准确的结果和结论。在实际操作中,还需要注意数据的质量和准确性,以及模型的假设条件是否满足等问题,以避免对结果的影响。
除了多项logit回归模型,Stata还支持其他多元统计分析方法,比如多元线性回归、因子分析、聚类分析等。可以根据实际研究问题的需要来选择相应的方法进行分析。同时,在使用Stata进行分析时,可以参考Stata官方文档和其他相关资料,以了解更多分析方法和操作技巧。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
对于不同备选项自变量不同的情况,需要将自变量都进行汇总后再输入到多项logit回归模型中。在输入自变量时,可以利用虚拟变量的方法将不同的自变量对应不同的变量。以下是一个可能的代码实现:
* 数据准备
clear
input float option byte travel_mode float wait_time float travel_time float fare float car_cost float fuel_cost float ticket_cost float crowdedness
1 10 30 20 50 . . .
1 5 20 30 60 . . .
1 15 10 40 40 . . .
2 . . . . 5000 300 200 .
2 . . . . 6000 350 180 .
2 . . . . 7000 400 160 .
3 5 30 . . . 10 3
3 10 20 . . . 12 4
3 5 25 . . . 8 5
end
gen taxi = 0
gen private_car = 0
gen public_transport = 0
replace taxi = 1 if option == 1
replace private_car = 1 if option == 2
replace public_transport = 1 if option == 3
* 多项logit回归
mlogit travel_mode wait_time travel_time fare car_cost fuel_cost ticket_cost crowdedness, base(3) r(1) vce(robust)
* 为不同备选项设置不同虚拟变量
tabulate option, generate(dummy)
rename dummy* taxi_*
rename dummy* private_car_*
rename dummy* public_transport_*
* 重新运行多项logit回归,包括虚拟变量
mlogit travel_mode wait_time travel_time fare car_cost fuel_cost ticket_cost crowdedness taxi_* private_car_* public_transport_ , base(3) r(1) vce(robust)
注意,在上面的代码中,我们首先将不同备选项对应的自变量进行了合并,然后利用虚拟变量的方法为不同备选项设置了不同的系数。最后,我们重新运行了多项logit回归,并将虚拟变量也加入了回归模型中。
如果我的回答解决了您的问题,请采纳!
对于不同备选项的自变量不一样的情况,可以使用多个回归模型进行估计。以你提到的例子为例,可以先构建三个模型,分别是出租车模型、私家车模型和公交车模型。在每个模型中只包含该备选项对应的自变量。
首先,需要为每个模型创建一个指示变量,用于区分不同备选项。比如,可以创建一个名为“taxi”的指示变量,当备选项为出租车时取值为1,否则为0。同理,可以创建一个名为“private_car”的指示变量和一个名为“bus”的指示变量。
接下来,以出租车模型为例,假设需要同时考虑等车时间(wait_time)、出行时间(travel_time)和打车费(taxi_fare)这三个自变量,其中,mlogit表示进行多项logit回归分析;ride_choice表示因变量为出行方式的选择;wait_time、travel_time和taxi_fare分别是等车时间、出行时间和打车费三个自变量;baseoutcome表示设置私家车和公交车为基准备选项;basecategory表示设置出租车为基准类别
类似地,可以构建私家车模型和公交车模型,最终得到三个模型的估计结果。
stata
mlogit outcome_var i.car_type var1 var2 var3, base(1)
// 导入数据
import excel "data.xlsx", sheet("Sheet1") firstrow clear
// 拼接数据
append using data_rental.dta
append using data_private.dta
append using data_public.dta
// 添加虚拟变量
gen car_type = .
replace car_type = 1 if dataset == "rental"
replace car_type = 2 if dataset == "private"
replace car_type = 3 if dataset == "public"
// 进行多项logit回归
mlogit outcome_var i.car_type waiting_time travel_time fare car_cost oil_cost ticket crowdedness, base(1)