GMM广义矩估计

GMM广义矩估计1.矩估计矩估计是什么呢?简单的说,就是用样本矩代替总体矩进行统计推断的方法。一个最基础的例子是正态总体的参数估计问题。如果Xi∼N(μ,σ2)X_i\simN(\mu,\sigma^2)Xi​∼N(μ,σ2),如何估计μ\muμ和σ2\sigma^2σ2呢?统计学一般会介绍两种估计方法:极大似然估计和矩估计。总体矩条件:μ=E(x)\mu=E(x)μ=E(x);σ2=E(x2)−μ2\sigma^2=E(x^2)-\mu^2σ2=E(x2)−μ2样本矩条件:μ^=1N∑i=1N

1.矩估计

  矩估计是什么呢?简单的说,就是用样本矩代替总体矩进行统计推断的方法。
  一个最基础的例子是正态总体的参数估计问题。如果 X i ∼ N ( μ , σ 2 ) X_i \sim N(\mu,\sigma^2) XiN(μ,σ2),如何估计 μ \mu μ σ 2 \sigma^2 σ2呢? 统计学一般会介绍两种估计方法:极大似然估计和矩估计。
总体矩条件:
μ = E ( x ) σ 2 = E ( x 2 ) − μ 2 \begin{aligned} \mu &= E(x) \\ \sigma^2 &= E(x^2)- \mu^2 \end{aligned} μσ2=E(x)=E(x2)μ2 样本矩条件:
μ ^ = 1 N ∑ i = 1 N x i = x ˉ i σ 2 ^ = 1 N ∑ i = 1 N x i 2 − μ ^ 2 = 1 N ∑ i = 1 N x i 2 − ( x ˉ i ) 2 = x i 2 ˉ + x ˉ i 2 \begin{aligned} \hat\mu &= \frac {1}{N} \sum_{i=1}^N x_i=\bar x_i \\ { \hat {\sigma^2}} &= \frac {1}{N} \sum_{i=1}^N x_i^2 -\hat\mu ^2 = \frac {1}{N} \sum_{i=1}^N x_i^2 -{(\bar x_i)}^2 = \bar {x_i^2}+\bar x_i^2 \end{aligned} μ^σ2^=N1i=1Nxi=xˉi=N1i=1Nxi2μ^2=N1i=1Nxi2(xˉi)2=xi2ˉ+xˉi2

  可以用样本矩代替总体矩的原因是,根据大数定理,当样本量足够大的时候,样本矩与总体矩只差了一个无穷小量: x ˉ i − μ \bar x_i – \mu xˉiμ = Op(1) ; x ˉ i 2 = μ 2 + σ 2 \bar x_i^2 =\mu^2+\sigma^2 xˉi2=μ2+σ2 + Op(1) 去掉无穷小量,则相当于用样本矩代替总体矩,得到参数的估计。

1.1 OLS估计

OLS估计是矩估计的一个特例。OLS估计的公式为:
Y i = X i ′ β + μ i Y_i = {X_i} ^{\prime} \beta+\mu_i Yi=Xiβ+μi

X 为 k × n 矩 阵 ; X i 为 k × 1 向 量 ; 1 ; X i ′ 为 1 × k 向 量 ; β 为 k × 1 向 量 ; Y i 为 1 × 1 向 量 ; μ i 为 1 × 1 向 量 X为k\times n矩阵;X_i为k\times 1向量;1;{X_i} ^{\prime}为1\times k向量;\beta 为k\times 1向量; Y_i为1\times 1向量; \mu_i为1\times1向量 Xk×nXik×11Xi1×kβk×1Yi1×1μi1×1

由于 X i X_i Xi μ i \mu_i μi无关,则
E ( μ i ∣ X i ) = 0 → E ( X i μ i ) = 0 → E ( X i ( Y i − X i ′ β ) ) = 0 E(\mu_i|X_i)=0 \rightarrow E(X_i \mu_i)=0 \rightarrow E(X_i(Y_i – {X_i} ^{\prime} \beta ))=0 E(μiXi)=0E(Xiμi)=0E(Xi(YiXiβ))=0其中 E [ X i ( Y i − X i ′ β ) ] = 0 E[X_i(Y_i – {X_i} ^{\prime} \beta )]=0 E[Xi(YiXiβ)]=0是总体矩条件,对应的样本矩条件为: 1 N ∑ i = 1 N [ X i ( Y i − X i ′ β ^ M M ) ] = 0 \frac {1}{N} \sum \limits_{i=1}^N [X_i (Y_i-{X_i}^{\prime} \hat \beta_{MM} )]=0 N1i=1N[Xi(YiXiβ^MM)]=0,得到:
β ^ M M = ∑ i = 1 N ( X i Y i ) ∑ i = 1 N ( X i X i ′ ) \widehat \beta_{MM}= \frac {\sum \limits_{i=1}^N (X_iY_i)} {\sum \limits_{i=1}^N (X_i {X_i}^{\prime} )} β
MM
=
i=1N(XiXi)i=1N(XiYi)
另一种推导方法:
Y = X β + μ ⇒ E [ X ′ u ] = E [ X ′ ( Y − X β ) ] = 0 ⇒ β ^ M M = [ X ′ X ] − 1 X ′ Y \begin{aligned} & Y= X \beta+\mu \\ & \Rightarrow E[X^{\prime} u] =E[X^{\prime} (Y-X \beta)] = 0 \\ &\Rightarrow \widehat \beta_{MM} = [X^{\prime} X]^{-1} X^{\prime} Y \end{aligned} Y=Xβ+μE[Xu]=E[X(YXβ)]=0β
MM
=[XX]1XY

此 处 X 为 n × k 矩 阵 ; β 为 k × 1 向 量 ; Y 为 n × 1 向 量 ; μ 为 n × 1 向 量 ; 此处 X为n\times k矩阵;\beta 为k\times 1向量;Y为n \times 1向量; \mu为n \times 1向量; Xn×kβk×1Yn×1μn×1
[ X ′ X ] − 1 为 k × k 矩 阵 ; X ′ Y 为 k × 1 矩 阵 ; ⇒ β ^ M M 为 k × 1 向 量 ; [X^{\prime} X]^{-1}为k\times k矩阵;X^{\prime} Y为k\times 1矩阵;\Rightarrow \widehat \beta_{MM} 为k\times 1向量; [XX]1k×kXYk×1β
MM
k×
1

1.2 IV估计

  工具变量 Z i Z_i Zi满足条件: E ( μ i ∣ Z i ) = 0 E(\mu_i|Z_i)=0 E(μiZi)=0,因此总体矩条件为: E [ Z i ( Y i − X i ′ β ) ] = 0 E[Z_i(Y_i – {X_i}^{\prime} \beta )]=0 E[Zi(YiXiβ)]=0,对应的样本矩条件为: 1 N ∑ i = 1 N [ Z i ( Y i − X i ′ β ^ M M ) ] = 0 \frac {1}{N} \sum \limits_{i=1}^N [Z_i (Y_i- {X_i}^{\prime} \hat \beta_{MM} )]=0 N1i=1N[Zi(YiXiβ^MM)]=0,得到: β ^ M M = ∑ i = 1 N ( Z i Y i ) ∑ i = 1 N ( Z i X i ′ ) \widehat \beta_{MM}= \frac {\sum \limits_{i=1}^N (Z_iY_i)} {\sum \limits_{i=1}^N (Z_i {X_i}^{\prime})} β
MM
=
i=1N(ZiXi)i=1N(ZiYi)
另一种推导方法:
⇒ E [ Z ′ u ] = E [ Z ′ ( Y − X β ) ] = 0 ⇒ β ^ M M = [ Z ′ X ] − 1 Z ′ Y \begin{aligned} & \Rightarrow E[Z^{\prime} u] =E[Z^{\prime} (Y-X \beta)] = 0 \\ &\Rightarrow \widehat \beta_{MM} = [Z^{\prime} X]^{-1} Z^{\prime} Y \end{aligned} E[Zu]=E[Z(YXβ)]=0β
MM
=[ZX]1ZY

2.广义矩估计

2.1 为什么要使用广义矩估计

  GMM 是矩估计(MM)的推广。在恰好识别情况下(待估参数个数等于矩条件个数),目标函数的最小值等于 0,GMM 估计量与 MM 估计量等价;然而在过度识别情况下(待估参数个数小于矩条件个数),MM 不再适用,GMM 可以有效地组合矩条件,使 GMM 比 MM 更有效。
  在估计正态分布 μ \mu μ σ 2 \sigma^2 σ2的例子中,我们只使用了两个矩条件。然而我们知道,正态分布的矩是有无穷多个可以用的,那么我们是不是可以使用更多的矩条件呢(更多的矩条件意味着更多的信息)?但是有个问题不好解决。在这个例子里面,我们有两个未知参数,如果只使用一阶矩,那么只有一个方程解两个未知数,显然是不可能的。像上面一样,我们用两个矩条件解两个未知数,就解出来了。然而,当我们用一到三阶矩,总共三个方程求解的时候,三个方程求解两个未知数,可能无解。方程数多了,反而没有解了,为什么呢?其实很简单,用三个方程中的任意两个方程,都可以求出一组解,那么三个方程我们就可以求出三组解。所以应该如何把这些矩条件都用上呢?到这里我们不妨引入一些记号。
g ( x i , θ ) = [ x i ˉ − μ , x i 2 ˉ − μ 2 − σ 2 , x i 3 ˉ − μ 3 − 3 μ σ 2 ] ′ , θ = μ , σ 2 g(x_i,\theta) = [\bar {x_i}-\mu,\bar {x_i^2}-\mu^2-\sigma^2,\bar {x_i^3}-\mu^3-3\mu\sigma^2]^{\prime},\theta = {\mu,\sigma^2} g(xi,θ)=[xiˉμ,xi2ˉμ2σ2,xi3ˉμ33μσ2],θ=μ,σ2 我们可以得到一个3*1的列向量,并且:
E [ g ( x i , θ ) ] = 0 E[g(x_i,\theta)] =0 E[g(xi,θ)]=0 用样本矩代替总体矩:
1 N ∑ i = 1 N [ g ( x i , θ ^ ) ] = 0 \frac {1}{N} \sum\limits_{i=1}^N [g(x_i,\hat \theta)] =0 N1i=1N[g(xi,θ^)]=0

  解这个方程应该就可以得到参数θ的估计。但是正如上面所说的,三个方程两个未知数,并不能确保这个方程有解,所以必须想一些其他办法。由于上面的g函数是一个3*1的列向量,我们可以使用一个权重矩阵W来赋予每个矩条件以不同的权重:
min ⁡ θ ^ i = [ 1 N ∑ i = 1 N [ g ( x i , θ ^ ) ] ] ′ ∗ W [ 1 N ∑ i = 1 N [ g ( x i , θ ^ ) ] ] (1) \min \limits_{\hat \theta_i} = \left[ \frac {1}{N} \sum\limits_{i=1}^N [g(x_i,\hat \theta)] \right]^{\prime} * W\left[ \frac {1}{N} \sum\limits_{i=1}^N [g(x_i,\hat \theta)] \right] \tag{1} θ^imin=[N1i=1N[g(xi,θ^)]]W[N1i=1N[g(xi,θ^)]](1)

  只要这个W是一个正定矩阵,那么仍然可以保证每个样本矩都足够贴近于0。那么问题来了,既然对W的要求只要求正定矩阵,那么使用不同的权重矩阵就有可能得到不同的结果。问题是,有没有一个最优的权重矩阵呢?当然是有的。可以证明,最优的权重矩阵应该是:
[ E [ g ( x i , θ ) ] g ( x i , θ ) ′ ] − 1 [E[g(x_i,\theta)] {g(x_i,\theta)}^{\prime}]^{-1} [E[g(xi,θ)]g(xi,θ)]1

2.2 IV估计

总体矩条件: E [ z i ( y i − x i ′ β ) ] = 0 E[z_i(y_i – x_i^{\prime} \beta)]=0 E[zi(yixiβ)]=0,代入上面的公式,最优权重矩阵(的逆)为:
E [ g ( x i , θ ) ] g ( x i , θ ) ′ = E [ z i ( y i − x i ′ β ) ] [ z i ( y i − x i ′ β ) ] ′ = E [ z i ( y i − x i ′ β ) ] [ ( y i − β x i ) ′ z i ′ ] = E [ z i ϵ 2 z i ′ ] = σ 2 ∗ 1 N ∑ i = 1 N z i z i ′ \begin{aligned} E[g(x_i,\theta)] {g(x_i,\theta)}^{\prime} &=E[z_i (y_i – x_i^{\prime} \beta )] {[z_i (y_i – {x_i}^{\prime} \beta)]}^{\prime} \\ &=E[z_i (y_i – x_i^{\prime} \beta )] [{(y_i – \beta x_i)}^{\prime} z_i^{\prime}] \\ &=E[z_i \epsilon^2 {z_i}^{\prime}] \\ &=\sigma^2 *\frac {1}{N} \sum\limits_{i=1}^N z_i {z_i}^{\prime} \end{aligned} E[g(xi,θ)]g(xi,θ)=E[zi(yixiβ)][zi(yixiβ)]=E[zi(yixiβ)][(yiβxi)zi]=E[ziϵ2zi]=σ2N1i=1Nzizi 把最优权重矩阵代入1式:
min ⁡ β = [ z i ( y i − x i ′ β ) ] ′ ∗ σ 2 ∗ [ z i ∗ z i ′ ] = σ 2 ∗ [ Z ′ ( Y − X β ) ] ′ [ Z ′ Z ] − 1 = 0 \begin{aligned} \min \limits_{\beta}&= {[z_i(y_i – {x_i}^{\prime} \beta )]}^{\prime} * \sigma^2*[z_i*{z_i}^{\prime}] \\ &= \sigma^2* {[Z^{\prime}(Y-X\beta)]}^{\prime} [{Z}^{\prime}Z]^{-1} =0 \end{aligned} βmin=[zi(yixiβ)]σ2[zizi]=σ2[Z(YXβ)][ZZ]1=0 对上式左右两边同时乘以 Z ′ ( Y − X β ) Z^{\prime} (Y-X\beta) Z(YXβ)
σ 2 ∗ [ Z ′ ( Y − X β ) ] ′ [ Z ′ Z ] − 1 Z ′ ( Y − X β ) = 0 (2) \sigma^2* {[Z^{\prime}(Y-X\beta)]}^{\prime} [{Z}^{\prime}Z]^{-1} Z^{\prime} (Y-X\beta) =0 \tag{2} σ2[Z(YXβ)][ZZ]1Z(YXβ)=0(2) 对2式求一阶导得:
∂ ( Y − X β ) ∂ X ∗ ∂ { ( Y − X β ) ′ Z ( Z ′ Z ) − 1 Z ′ ( Y − X β ) } ∂ ( Y − X β ) = X ′ ( A + A ′ ) X = X ′   ( Z ( Z ′ Z ) − 1 Z ′ )   ( Z ( Z ′ Z ) − 1 Z ′ ) ′ ( Y − X β ) = 2 ∗ X ′ Z ( Z ′ Z ) − 1 Z ′ ( Y − X β ) = 0 (3) \frac {\partial (Y-X\beta) } {\partial X} * \frac {\partial \{ {(Y-X\beta)}^{\prime}Z ({Z}^{\prime}Z)^{-1} Z^{\prime} (Y-X\beta) \} }{\partial (Y-X\beta) } = X^{\prime}(A+A^{\prime})X \\ =X^{\prime} \ (Z ({Z}^{\prime}Z)^{-1} Z^{\prime}) \ {(Z ({Z}^{\prime}Z)^{-1} Z^{\prime})}^{\prime} (Y-X\beta) \\ =2*X^{\prime} Z ({Z}^{\prime}Z)^{-1} Z^{\prime} (Y-X\beta) =0 \tag{3} X(YXβ)(YXβ){
(YXβ)Z(ZZ)1Z(YXβ)}
=
X(A+A)X=X (Z(ZZ)1Z) (Z(ZZ)1Z)(YXβ)=2XZ(ZZ)1Z(YXβ)=0(3)

矩阵求导公式 参考
∂ ( X T A X ) ∂ X = ( A + A T ) X ; ∂ ( A X ) ∂ X = A T \begin{aligned} \frac {\partial (X^TAX)}{\partial X} = (A+A^T)X ; \quad \frac {\partial (AX)}{\partial X} = A^T \end{aligned} X(XTAX)=(A+AT)XX(AX)=AT

由3式子得到 β ^ \widehat \beta β

β ^ = { X ′ Z ( Z ′ Z ) − 1 Z ′ X } − 1 X ′ Z ( Z ′ Z ) − 1 Z ′ Y (4) \widehat \beta = \{X^{\prime} Z({Z}^{\prime}Z)^{-1} Z^{\prime} X\}^{-1} X^{\prime} Z ({Z}^{\prime}Z)^{-1} Z^{\prime} Y \tag{4} β
=
{
XZ(ZZ)1ZX}1XZ(ZZ)1ZY
(4)
X ^ ′ = X ′ Z ( Z ′ Z ) − 1 Z ′ \hat X^{\prime} = X^{\prime} Z({Z}^{\prime}Z)^{-1} Z^{\prime} X^=XZ(ZZ)1Z,则 β ^ = [ X ^ ′ X ] − 1 X ^ ′ Y = [ X ^ ′ X ^ ′ ] − 1 X ^ ′ Y \widehat \beta = [\hat X^{\prime} X]^{-1} \hat X^{\prime} Y = [\hat X^{\prime} \hat X^{\prime}]^{-1} \hat X^{\prime} Y β
=
[X^X]1X^Y=[X^X^]1X^Y
,正是两阶段最小二乘的第二步。
X ^ = Z ( Z ′ Z ) − 1 Z ′ X = Z γ ^ \hat X= Z({Z}^{\prime}Z)^{-1} Z^{\prime} X = Z \widehat \gamma X^=Z(ZZ)1ZX=Zγ
,其中 γ ^ = ( Z ′ Z ) − 1 Z ′ X \widehat \gamma = ({Z}^{\prime}Z)^{-1} Z^{\prime}X γ
=
(ZZ)1ZX
,正是两阶段最小二乘的第一步

两阶段最小二乘的推导:
阶段一:
工具变量Z回归X,得到X拟合值。
X = Z γ + ϵ ⇒ γ ^ = [ Z ′ Z ] − 1 Z ′ X ⇒ X ^ = Z γ ^ = Z [ Z ′ Z ] − 1 Z ′ X \begin{aligned} & X = Z \gamma +\epsilon \\ & \Rightarrow \widehat \gamma = [Z^{\prime} Z]^{-1} Z^{\prime} X \\ & \Rightarrow \widehat X = Z \widehat \gamma = Z [Z^{\prime} Z]^{-1} Z^{\prime} X \end{aligned} X=Zγ+ϵγ
=[ZZ]1ZX
X
=Zγ
=Z[ZZ]1ZX
阶段二: X拟合值回归Y,得到 β ^ \widehat \beta β
与用广义矩估计得到的4式相同
Y = X ^ β + μ ⇒ β ^ = [ X ^ ′ X ^ ] − 1 X ^ ′ Y = { ( Z [ Z ′ Z ] − 1 Z ′ X ) ′ ( Z [ Z ′ Z ] − 1 Z ′ X ) } − 1 ( Z [ Z ′ Z ] − 1 Z ′ X ) Y = { ( X ′ Z [ Z ′ Z ] − 1 Z ′ ) ( Z [ Z ′ Z ] − 1 Z ′ X ) } − 1 ( Z [ Z ′ Z ] − 1 Z ′ X ) Y [ Z ′ Z ] − 1 Z ′ Z = I = { X ′ Z ( Z ′ Z ) − 1 Z ′ X } − 1 X ′ Z ( Z ′ Z ) − 1 Z ′ Y \begin{aligned} & Y = \widehat X \beta +\mu \\ \Rightarrow \widehat \beta & = [{ \widehat X}^{\prime} \widehat X]^{-1} { \widehat X}^{\prime} Y \\ &=\{ (Z [Z^{\prime} Z]^{-1} Z^{\prime} X)^{\prime} (Z [Z^{\prime} Z]^{-1} Z^{\prime} X) \} ^{-1} (Z [Z^{\prime} Z]^{-1} Z^{\prime} X) Y \\ &=\{ (X^{\prime} Z [Z^{\prime} Z]^{-1} Z^{\prime} ) (Z [Z^{\prime} Z]^{-1} Z^{\prime} X) \} ^{-1} (Z [Z^{\prime} Z]^{-1} Z^{\prime} X) Y \quad [Z^{\prime} Z]^{-1} Z^{\prime} Z = I \\ &= \{X^{\prime} Z({Z}^{\prime}Z)^{-1} Z^{\prime} X\}^{-1} X^{\prime} Z ({Z}^{\prime}Z)^{-1} Z^{\prime} Y \end{aligned} β
Y=X
β+μ
=[X
X
]1X
Y
={
(Z[ZZ]1ZX)(Z[ZZ]1ZX)}1(Z[ZZ]1ZX)Y
={
(XZ[ZZ]1Z)(Z[ZZ]1ZX)}1(Z[ZZ]1ZX)Y[ZZ]1ZZ=I
={
XZ(ZZ)1ZX}1XZ(ZZ)1ZY

附录

一、矩阵形式表示线性回归

线性回归表达形式:
Y i = β 0 + β 1 x 1 i + . . . + + β 1 x k i + ϵ i i 表 示 样 本 ( 共 n 个 样 本 ) , k 表 示 特 征 Y_i = \beta_0+\beta_1 x_{1i}+…++\beta_1 x_{ki}+\epsilon_i \qquad i表示样本(共n个样本),k表示特征 Yi=β0+β1x1i+...++β1xki+ϵii(n)k用矩阵形式表达为: Y = X β + ϵ Y = X\beta+\epsilon Y=Xβ+ϵ
X n × k = [ 1 x 11 x 21 ⋯ x k 1 1 x 12 x 22 ⋯ x k 2 ⋮ ⋮ ⋮ ⋱ ⋮ 1 x 1 n x 2 n ⋯   x k n ] ; β k × 1 = [ β 1 β 2 ⋮ β k ] ; ϵ n × 1 = [ x 1 x 2 ⋮ x n ] X_{n \times k}= \begin{bmatrix} 1 &x_{11} & x_{21} & \cdots & x_{k1} \\ 1& x_{12} & x_{22} & \cdots & x_{k2} \\ \vdots& \vdots & \vdots & \ddots & \vdots \\ 1&x_{1n} & x_{2n} & \cdots\ & x_{kn} \\ \end{bmatrix} ; \quad \beta_{k \times 1}=\begin{bmatrix} \beta_{1} \\ \beta_{2} \\ \vdots \\ \beta_{k} \\ \end{bmatrix}; \quad \epsilon_{n \times 1}=\begin{bmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \\ \end{bmatrix} Xn×k=111x11x12x1nx21x22x2n xk1xk2xknβk×1=β1β2βkϵn×1=x1x2xn
或者 Y i = X i ′ β + ϵ i Y_i = {X_i} ^{\prime} \beta+\epsilon_i Yi=Xiβ+ϵi,两种矩阵表示形式的X不一样
其中:
X k × n = [ 1 1 ⋯ 1 x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ x k 1 x k 2 ⋯   x k n ] ; X i   ( k × 1 ) = [ x 1 i x 2 i ⋮ x k i ] ; X i   ( 1 × k ) ′ = [ x 1 i x 2 i ⋯ x k i ] X_{k \times n} = \begin{bmatrix} 1&1 & \cdots &1 \\ x_{11} & x_{12} & \cdots & x_{1n} \\ x_{21} & x_{22} & \cdots & x_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ x_{k1} & x_{k2} & \cdots\ & x_{kn} \\ \end{bmatrix} ; \quad X_{i \ (k \times 1)} = \begin{bmatrix} x_{1i} \\ x_{2i} \\ \vdots \\ x_{ki} \\ \end{bmatrix} ; \quad X_{i \ (1\times k)}^{\prime} = \begin{bmatrix} x_{1i} & x_{2i} & \cdots & x_{ki} \\ \end{bmatrix} Xk×n=1x11x21xk11x12x22xk2 1x1nx2nxknXi (k×1)=x1ix2ixki;Xi (1×k)=[x1ix2ixki]

二、参考资料

GMM估计
内生性工具变量与GMM估计
如何用简单的例子解释什么是 Generalized Method of Moments (GMM)?
GMM-简介及实现范例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/34487.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注