Py学习  »  Git

Stata:mscologit-一般化有序Logit模型

连享会 • 1 年前 • 584 次点击  

👇 连享会 · 推文导航 | www.lianxh.cn

连享会课程 · 文本分析专题


作者: 朱菲菲 (中央财经大学)

邮箱: feifei.zhu@cufe.edu.cn

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:

1.  背景介绍

在社会科学研究中,经常会遇到有一定次序的分类因变量,此时可以使用有序 Logit 回归进行分析。然而,对于同一因变量,由于在不同时点、地区或不同问卷形式下,因变量的具体形式或次序可能改变。如在一项调查中,受访者可能被要求在 1 到 7 的范围内对他们的幸福感进行评分,而下一次调查提供了从 0 到 10 的评分,同时在另一地区的调查可能使用四种有明确语言标签的回答类别。此时,单一尺度的有序 Logit 回归不足以解决问题,需要引入一般化有序 Logit 模型。

本文将首先介绍一般化有序 Logit 模型的模型设定和估计方法等理论背景,然后对该模型 Stata 命令 mscologit 的使用方法进行说明。

2.  理论部分

2.1 有序 Logit 模型

一般化有序 Logit 模型有序 Logit 模型扩展而来。在社会科学研究中,经常会遇到有一定次序的分类因变量,此时可以使用有序 Logit 模型进行回归分析。

首先,我们使用潜变量法对 有序 Logit 模型 进行推导:

我们先构建一个连续型的潜变量

其次,通过一个分段函数构建连续潜变量与定序因变量之间的关系:

其中,, , ,..., 是定序因变量的取值,也叫响应阈值 (response threshold) 。其中 为因变量的最大值。且 是待估参数,即截距。

根据上述推导,结合 服从逻辑分布,可以将有序 Logit 模型写为阈值模型

有序多分类 Logit 回归需要满足“平行趋势假设”,即在不同的分界点处,自变量对应的模型系数相同,下面对该假设进行说明。

在模型中,定序因变量 跨越阈值 的概率被建模为协变量向量 、系数向量 和一组临界点 的标准 Logit 函数。在此模型设定下, 是受访者特征, 是由因变量的次序设定决定的临界点,并且假设在每个临界点 处,结构成分 完全相同。受访者响应量高于 条件优势比 (conditional odds) 模型为:

上式说明,协变量 的变化 (或差异) 与其对概率的影响都是相同的,该关系不受分界点位置的影响。任何特定协变量 的变化(或差异)的影响可以通过概率比的简单表达式给出:

说明对于协变量 相同单位的变动,无论考虑哪个特定响应阈值 ,跨越响应阈值的概率会发生完全相同的比例偏移。这就是有序 Logit 模型的最重要假设之一:平行回归假设。平行回归假设的重要性在于,它有力地表明了结构部分 是独立于评级量表的次序设定的,即在任何评级下,自变量的变动对因变量概率的变动的影响都是相同的。这一特定的假设是该模型能够扩展到多尺度有序 Logit 模型的基础;另一方面,平行回归假设也往往被视为过度限制 (e.g.,Williams 2006, 2016) 。

平行回归假设并非完全限制了有序多分类模型的应用价值。“违反”平行回归假设时,数据中统计意义上的可检测信号并没有完全损失,这意味着,如果研究人员希望检查结果分布的不同部分而不是仅仅关注其中心趋势,就可以从数据中了解更多信息。

特别是,随着人们对于因果关系检查中各类异质性的研究兴趣日益高涨,以及分位数回归和相关模型使用的明显增加,当前不仅可以确定协变量与平均结果之间的关联,还可以确定整个结果分布形状(或方差)的群体差异 (e.g., Cheng 2014; Ebner, Kühhirt, and Lersch 2020; Lersch, Schulz, and Leckie 2020; VanHeuvelen 2018a, 2018b) 。从这个角度看,平行趋势假设虽然通常被认为是有序 Logit 模型的缺点和“过度限制”,但实际上是异质性研究中的重要特征

2.2 一般化有序 Logit 模型

由于平行回归假设,由有序 Logit 模型向一般化有序 Logit 模型的扩展得以实现。当假设相同的 能够控制报告结果时(即正确描述协变量和可观察结果之间的关联),评级量表的具体评级设定可以被忽略,并且参数估计不依赖于数据收集中使用的评级类别的具体数量或表达形式 (参见 Agresti 2010:56; Long 1997:117-19) 。当使用不同版本的评级量表 来测量某些潜在指数 时,将两次或多次调查 (或不同调查轮次) 的观察结果进行汇总,模型的有效性也不会受到影响

2.2.1 模型设定

一般化有序 Logit 模型可以写为阈值模型:

其中:

  • 是观察到的有序分类结果, 表示结果类别 (从 ) 。
  • 表示观测 面对的响应格式(或评分量表)的标识, 表示可能的响应格式的集合。
  • 是与响应格式 中的类别 相关联的临界点参数。
  • 是与观测 相关的协变量向量。
  • 是与协变量 相关的系数向量。

上述公式左端表示给定观测 ,在由 个类别组成的评级 (或其他排序) 量表上,观察到的回答高于类别 的概率。这个跨越阈值 的概率被建模为协变量向量 、系数向量 和一组阈值参数或临界点 的标准 Logit 函数。

这个公式允许考虑不同响应格式 中的临界点参数 ,从而可以适应多个不同的评分量表。该模型的目标是估计与协变量 相关的系数向量 和不同响应格式 中的临界点参数 ,以便更好地理解协变量如何影响有序分类结果,并考虑到不同响应格式可能带来的差异。

其中,结构成分 被假设在相邻响应类别定义的每个临界点 上完全相同,即结构成分 独立于用于捕获底层 (连续) 指数变量的评级量表的精确响应格式。

2.2.2 估计方法

一般化有序 Logit 回归的估计方法与标准有序 Logit 回归基本一致。 对于定序结果数据,比例概率模型为阈值模型:

人们普遍认为,这种有序 Logit 模型通过定义在结构成分 上的共同回归平面表示数据,该回归平面在一系列对应于可观察响应类别的临界点 上移动。在Williams(2006,2016)的部分比例优势模型中,找到一组优化的阈值特定系数向量 ,放松对那些协变量和数据信号表明效应异质性的切割点的平行回归假设,但在不能在相应的Wald测试中拒绝效应同质性的零假设的地方,仍然保持平行回归假设。 得到概率模型:

其对数似然函数为:

当将多尺度模型设想为适用于不同尺度 和阈值 的模型时,可以通过最大化的对数似然函数来获得参数估计:

3.  Stata 实操:mscologit 命令

3.1 命令语法

mscologit depvars [if] [, indvar(indepvars) options]

  • depvars:因变量,包含一个变量列表,对应结果变量的替代度量。通常每一行只有一个度量是有效的
  • indvar(indepvars):自变量列表

3.2 选项

3.2.1 单水平(single-level)模型说明

  • or:将系数报告为优势比 (odds ratios),默认情况下将系数报告为 Logit 量表上的回归系数
  • logit:通过在适当扩展的数据集上的 Logit 回归来估计多尺度模型,而不是直接通过最大似然估算。在大多数情况下,直接 ML 估计将是更可取的选择,但是当模型切割点的数量变得很大时 (即当面对大量的评级尺度格式和/或许多具有大量的响应类别时) ,可能需要使用该选项
  • acc:用于请求模型的加速顺序参数化估计,例如 Stata 的ologit估计命令中使用的切割点参数的参数化。当请求单水平多度量模型的完全极大似然估计时,该选项是隐含默认的
  • vce(vcetype):计算聚类稳健标准误
  • lo:在潜在结果变量的下尾放松平行回归假设。用选项 lowcut(probability) 定义下尾,lowvar(varlist) 为需要放松平行回归假设的变量。使用该选项要求所有因变量中的要素记录至少三个响应类别的结果
  • up:在潜在结果变量的上尾放松平行回归假设。使用该选项要求因变量中的要素记录至少3个响应类别的结果;如果与 lo 同时使用,则要求因变量中的要素记录至少4个响应类别的结果
  • altpar:用于切换广义模型规范中的回归系数的格式。默认行为是估计系数作为交互项,这为用户提供了针对结果分布中间部分的模型的系数变异性的直接测试。altpar将理论行为转换为估计结果分布的每个区域的单独回归系数,然后可以使用检验和相关的估计后命令进行相应的假设检验。

3.2.2 多水平(multilevel)模型说明

  • levelX(levelspec):指定水平规范,X是数字1,2,3等等。后续需要以 melogit , gllamm , 或 mlwin 作为实际的估计命令
  • mlwin:可用于传递 runmlwin 中可用的任何估计选项,但levelX(levelspec)提供的水平规范除外
  • melogit:可用于传递 meglm 中可用的任何估计选项,但levelX(levelspec)提供的水平规范除外
  • gllamm:可用于传递 gllam 中可用的任何估计选项,但levelX(levelspec)提供的水平规范除外

4.  mscologit 应用实例

4.1 安装

使用前需要先安装 mscologit 命令:

ssc install mscologit, all replace

4.2 实例背景说明

长期以来,评级问题一直是调查研究的标准项目。例如,ESS、EVS/WVS 和 GSS 系列核心问卷的一部分,是调查受访者对一系列政治和公共机构的信任。虽然问题的措辞本身很简单,但该系列调查之间的主要区别在于,他们选择了不同的回答尺度去获取受访者对国家议会/国会的信任程度。ESS 给出了一个 0~10 的评分范围,其中 0 表示根本不信任,10 表示完全信任。EVS/WVS 给出了一个三等级的评级范围 (分别为 A great deal, quite a lot 以及 not very much) ,而 GSS 给出了两个评级的评级范围 (A great dealonly some) 。 在不同的回答格式下,想要将其作为同一个变量进行分析,有两种情况可以用标准有序 Logit 回归处理。

  • 第一种,在某些情况下,可以通过设计数据协调规则,转化为统一度量标准,然后通过有序 Logit 解决。例如,注意某些语言线索的等价性 (“同意”和“完全同意”) ,以锚定度量标准,然后分析数据专门在这些截止点或响应阈值出现持续捕获随着时间的推移或在调查。
  • 第二种,当顺序响应量表仅仅是一个数据记录工具,帮助受访者提供一些潜在的信息分类,或增加项目回答率,允许受访者选择结果类别 (例如,收入等级) ,就可以使用区间回归模型进行分析。多种响应格式在标准统计软件包的区间回归程序中可以直接处理。

然而,当响应格式明显不同,也不能使用区间回归模型时,就需要用到一般化有序 Logit 模型进行分析。该例展示的是通过数据协调规则和一般化有序 Logit 回归的代码和结果。

4.3 数据结构描述

clear all
unzipfile https://gss.norc.org/documents/stata/1984_stata.zip
use GSS1984.dta

首先将案例数据导入,数据集来源于 GSS 1984 (https://gss.norc.org/documents/stata/1984_stata.zip) ,因变量是受访者对国会的信任 (respondents' trust in Congress) ,在原始数据由两个不同度量的分类变量 conlegisconlegiy 表示, conlegis 的值分为三个档次,conlegiy 的值分为七个档次。对于每一行数据,两个变量都只有一个是有效值 (另一个变量值为 iap) 。




    
*** 检查国会信任问题数据的两个版本
desc conleg*
tab conlegis
tab conlegiy

对两个变量进行检查,描述性统计如下所示:

. *** examine the two versions of the trust in congress question
. desc conleg*

Variable Storage Display Value

name type format label Variable label
---------------------------------------------------------------

conlegis byte %29.0g INSTCONF confidence in congress
conlegiy byte %29.0g CONLEG1A congress:version z

. tab conlegis

confidence in congress | Freq. Percent Cum.
------------------------+-----------------------------------
a great deal | 123 12.85 12.85
only some | 622 64.99 77.85
hardly any | 212 22.15 100.00
------------------------+-----------------------------------
Total | 957 100.00

. tab conlegiy

congress:version z | Freq. Percent Cum.
----------------------+-----------------------------------
complete confidence | 20 4.31 4.31
2 | 53 11.42 15.73
3 | 91 19.61 35.34
4 | 129 27.80 63.15
5 | 82 17.67 80.82
6 | 55 11.85 92.67
no confidence | 34 7.33 100.00
----------------------+-----------------------------------
Total | 464 100.00

分类变量 conlegiy 的值越大,则信任度越低;而分类变量 conlegis 的默认排序与 conlegiy 一致。因此还需要做一步处理,将信任度最高的类别设为变量数值最大的一类。然后将两者都转化为三级的分类变量,合并后得到统一度量的有序因变量。

*** 将信任度最高的类别设为变量数值最大的一类
gen rconleg = 4-conlegis if conlegis>=1 & conlegis<=3
gen rconlegy = 8-conlegiy if conlegiy>=1 & conlegiy<=7
*** 把七个级别的变量conlegiy转为三个级别(按照特定的协调标准),生成变量jconleg,与conlegis的级别数目一致
recode rconlegy 1/2=1 3/5=2 6/7=3, gen(jconleg)
*** 由于每行数据只有一个有效值,因此可以将jconleg中为'.'的值用rconleg的值替换,得到jconleg就是统一度量处理后的因变量
replace jconleg = rconleg if rconlegy==. & rconleg<.>

最后处理自变量,将性别、教育、年龄设置为自变量:

*** 自变量为性别、教育程度和年龄虚拟项,以及此处明确定义的多项式项
gen female = sex==2 if sex<.>gen agesq = age^2

4.4 模型估计

*** model estimation
*** (1) 使用有序Logit方法(ologit), 因变量为 conlegis (standard GSS item)
ologit rconleg female educ age agesq
est sto m1
*** 2) 使用有序Logit方法(ologit), 因变量为 conlegiy (7-point Likert scale)
ologit rconlegy female educ age agesq
est sto m2
*** 3) 使用有序Logit方法(ologit), 因变量为 jconleg (conlegiy重新编码为conlegis的回答格式)
ologit jconleg female educ age agesq
est sto m3
*** 4) 使用mscologit命令, 使用两种回答格式的合并估计
*** (完全极大似然估计)
mscologit rconleg rconlegy, indvar(female educ age agesq)
est sto m4
*** 5) 使用mscologit命令, 使用两种回答格式的合并估计
*** (替代极大似然估计, 通过在扩展数据集上估计二值 Logit 模型得到)
mscologit rconleg rconlegy, indvar(female educ age agesq) logit acc
est sto m5

(1) 和 (2) 为分别对两种回答格式的因变量进行有序 Logit 回归,(3) 为手动转换回答格式的因变量的有序 Logit 回归,(4) 和 (5) 为使用两种回答格式的合并估计的一般化有序 Logit 回归,其中前者只用了极大似然估计方法,后者在扩展数据集上估计二值 Logit 模型得到。

回归结果如下表所示:


Variable     |     m1           m2           m3           m4           m5     
-------------+-----------------------------------------------------------------
female | .14420713 -.05739409 .06257708 .06546738 .05744913
| .13543962 .16970043 .11145533 .10577533 .10703618
| 0.2870 0.7352 0.5745 0.5360 0.5915
educ | .01779667 .04342019 .02164168 .02661948 .02627974
| .02223653 .02933556 .0185193 .01767262 .01771644
| 0.4235 0.1388 0.2426 0.1320 0.1380
age | -.05392742 -.0730633 -.06167757 -.06237547 -.06084929
| .02301021 .02545655 .01801444 .01701473 .01739649
| 0.0191 0.0041 0.0006 0.0002 0.0005
agesq | .00051179 .00069494 .00057747 .00059067 .00057701
| .00023156 .00026182 .00018275 .00017263 .00017603
| 0.0271 0.0079 0.0016 0.0006 0.0010
cutp_1_1 | -2.2957133
| .46556611
| 0.0000
cutp_1_2 | .89386143
| .46600752
| 0.0551
cutp_2_1 | -3.5467313
| .48205425
| 0.0000
cutp_2_2 | -2.4417109
| .45963762
| 0.0000
cutp_2_3 | -1.5331149
| .45153463
| 0.0007
cutp_2_4 | -.37671076
| .44870428
| 0.4012
cutp_2_5 | .70756934
| .45507098
| 0.1200
cutp_2_6 | 2.135241
| .47615428
| 0.0000
-------------+-----------------------------------------------------------------
/cut1 | -2.1909086 -3.6823377 -2.4309519
| .6110787 .66399568 .47317585
| 0.0003 0.0000 0.0000
/cut2 | .99377793 -2.5692388 .73964658
| .60621518 .64980833 .4671431
| 0.1011 0.0001 0.1133
/cut3 | -1.6509219
| .64409253
| 0.0104
/cut4 | -.48578305
| .63910509
| 0.4472
/cut5 | .60027513
| .63912328
| 0.3476
/cut6 | 2.0268179
| .6636353
| 0.0023
/c1_1 | -2.3243681
| .45152566
| 0.0000
/c1_2 | .86519137
| .44934276
| 0.0542
/c2_1 | -3.5740076
| .46899289
| 0.0000
/c2_2 | -2.4651968
| .44897573
| 0.0000
/c2_3 | -1.5511831
| .44211626
| 0.0005
/c2_4 | -.39141135
| .43877821
| 0.3724
/c2_5 | .69120659
| .44318594
| 0.1188
/c2_6 | 2.1162334
| .4803029
| 0.0000
-------------+-----------------------------------------------------------------
Statistics |
ll | -832.25246 -833.76797 -1241.7342 -1666.9151 -463.60784
aic | 1676.5049 1687.5359 2495.4684 3357.8301 951.21568
N | 951 464 1415 1415 4686
-------------+-----------------------------------------------------------------
Legend: b/se/p

本示例旨在说明 mscologit 模型的主要思想以及将 ado 与公开数据的结合使用。显然,该例中只需要通过检查频率表,就可以有效地手动协调 conlegisconlegiy 两个变量的响应类别。在这种特殊情况下,手动协调 (m3) 给出的结果与一般有序 Logit 回归模型 (m4 和 m5) 几乎相同。但前者需要声明特定的数据协调标准,而后者只是反映了原始数据中出现的所有替代相应类别上的所有切点,并估计了合并数据上的实质性协变量的共同模型。

4.5 代码补充

在本例之外, mscologit 的 help 文档中还给出了单水平模型和多水平模型的代码示例如下:

*** 单水平模型
. mscologit depvar1 depvar2 depvar3, indvar(female educ age age2)

*** 单水平模型, 在下尾处对所有协变量放松平行回归假设, 下尾设为 Pr(Y)<.33>. mscologit depvar1 depvar2 depvar3, indvar(female educ age age2) lo lowcut(.33)

*** 单水平模型, 在下尾处对选定的协变量(female educ)放松平行回归假设, 下尾设为 Pr(Y)<.33>. mscologit depvar1 depvar2 depvar3, indvar(female educ age age2) lo lowcut(.33) lowvar(female educ)

*** 多水平模型, 用 meglm/melogit 命令
. mscologit depvar1 depvar2 depvar3, indvar(female educ age age2) melogit level2(levvar:)

*** 多水平模型, 用 MLwiN/runmlwin 命令
. global MLwiN_path "C:\Program Files\MLwiN v3.05\mlwin.exe"
. gen cons = 1
. mscologit depvar1 depvar2 depvar3, indvar(female educ age age2) mlwin level2(levvar: cons) mlwopt(maxit(100) nopause)

5.  参考资料

  1. Gangl, M. (2023). A Generalized Ordered Logit Model to Accommodate Multiple Rating Scales. Sociological Methods & Research, 0(0). -Link-
  2. Agresti, Alan. 2010. Analysis of Ordinal Categorical Data. 2nd edition. Hoboken, NJ: Wiley.
  3. Cheng, Siwei. 2014. “A Life Course Trajectory Framework for Understanding the Intracohort Pattern of Wage Inequality.” American Journal of Sociology 120(3):633–700. doi: 10.1086/679103 -Link-
  4. Ebner, Christian, Michael Kühhirt, and Philipp Lersch. 2020. “Cohort Changes in the Level and Dispersion of Gender Ideology After German Reunification: Results From a Natural Experiment.” European Sociological Review 36(5):814–28. doi: 10.1093/esr/jcaa015 -Link-
  5. Lersch, Philipp M., Wiebke Schulz, and George Leckie. 2020. “The Variability of Occupational Attainment: How Prestige Trajectories Diversified Within Birth Cohorts Over the Twentieth Century.” American Sociological Review 85(6):1084–116. doi: 10.1177/0003122420966324 -Link-
  6. Long, J. Scott. 1997. Regression Models for Categorical and Limited Dependent Variables. Thousand Oaks, CA: Sage.
  7. VanHeuvelen, Tom. 2018a. “Within-Group Earnings Inequality in Cross-National Perspective.” European Sociological Review34(3):286–303. doi: 10.1093/esr/jcy011 -Link-
  8. VanHeuvelen, Tom. 2018b. “Recovering the Missing Middle: A Mesocomparative Analysis of Within-Group Inequality, 1970–2011.” American Journal of Sociology 123(4):1064–116. doi: 10.1086/695640 -Link-
  9. Williams, Richard. 2006. “Generalized Ordered Logit/Partial Proportional Odds Models for Ordinal Dependent Variables.” Stata Journal 6(1):58–82. doi: 10. 1177/1536867X0600600104 -Link-
  10. Williams, Richard. 2016. “Understanding and Interpreting Generalized Ordered Logit Models.” Journal of Mathematical Sociology 40(1):7–20. doi: 10.1080/0022250X. 2015.1112384 -Link-
  11. 【DCM-11】有序Logit模型及其Stata实现 - 暮雪寒泉的文章 - 知乎 -Link-
  12. 有序Logistic回归分析(Ordinal Logistic Regression Analysis)——理论介绍 -Link-

6.  相关推文

Note:产生如下推文列表的 Stata 命令为:

lianxh logit, m

安装最新版 lianxh 命令:

ssc install lianxh, replace

  • 专题:Probit-Logit
    • 丁雅文, 2021, Stata:面板混合选择模型-cmxtmixlogit, 连享会 No.748.
    • 展一帆, 周依仿, 2021, Logit-Probit:非线性模型中交互项的边际效应解读, 连享会 No.616.
    • 庄子安, 2021, feologit:固定效应有序Logit模型, 连享会 No.507.
    • 张雪娇, 2020, Stata:Logit 模型评介, 连享会 No.212.
    • 彭莘昱, 2021, reg2logit:用OLS估计Logit模型参数, 连享会 No.512.
    • 杨柳, 2020, Stata:嵌套 Logit 模型 (Nested Logit), 连享会 No.260.
    • 武珊珊, 2020, 详解 Logit/Probit 模型中的 completely determined 问题, 连享会 No.190.
    • 连享会, 2020, Stata:何时使用线性概率模型而非Logit?, 连享会 No.206.
    • 连享会, 2020, 司继春:二元选择模型与计数数据, 连享会 No.148.
    • 连玉君, 杨柳, 2020, Stata:Logit模型一文读懂, 连享会 No.170.
    • 陈卓然, 2022, 全面解读Logit模型, 连享会 No.965.
    • 黄彩虹, 2020, 二元选择模型:Probit 还是 Logit?, 连享会 No.235.
    • 黄欣怡, 2020, Stata:多元 Logit 模型详解 (mlogit), 连享会 No.443.
    • 黄熹, 2021, 秒懂小罗肥归:logit与mlogit详解, 连享会 No.573.
  • 专题:Stata入门
    • 连享会, 2020, Stata 200 问:常见问题都在这里了-UCLA FAQs, 连享会 No.467.
  • 专题:Stata命令
    • 连享会, 2020, Stata新命令:面板-LogitFE-ProbitFE, 连享会 No.341.
  • 专题:交乘项-调节-中
    • 祁本章, 2021, Logit-Probit中的交乘项及边际效应图示, 连享会 No.575.
  • 专题:回归分析
    • 连玉君, 杨柳, 2020, Stata: 边际效应分析, 连享会 No.64.
  • 专题:面板数据
    • 郭盼亭, 2022, Stata:面板Logit的边际效应和处理效应估计-mfelogit, 连享会 No.1127.

课程推荐:Stata2R:针对 Stata 用户的 R 课程
主讲老师:游万海 (福州大学)
课程时间:2023 年 12 月 3/10/17 (三个周日)
🍓 课程主页https://www.lianxh.cn

New! Stata 搜索神器:lianxh 和 songbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
  . ssc install lianxh
  . ssc install songbl
👉  使用:
  . lianxh DID 倍分法
  . songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。





Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/164384
 
584 次点击