No.05623 Re: 構造変化とダミー係数について 【青木繁伸】 2008/01/31(Thu) 19:23
モデル式に問題があるでしょう
a'*D+b'D と区別して書いても,実際それは(a'+b')*D なので a' と b' は分離できないでしょう。> df <- structure(list(Y = c(35.4, 24.8, 17, 18.3, 14.8, 46.3, 60.3,直接 a' と b' を使うモデル式を書いたらどうだとお思いかも知れない。lm では書けないので本来は非線形最小二乗法のための nls 関数で書いてみよう(a' を a2, b' を b2 と表記する)。
52.5, 44.7, 31.1), X = c(2L, 1L, 2L, 3L, 2L, 2L, 1L, 2L, 3L,
4L), Z = c(3L, 2L, 1L, 1L, 2L, 3L, 4L, 3L, 2L, 1L), W = c(4L,
3L, 2L, 2L, 1L, 3L, 5L, 4L, 3L, 1L), D = c(0L, 0L, 0L, 0L, 0L,
1L, 1L, 1L, 1L, 1L)), .Names = c("Y", "X", "Z", "W", "D"), class = "data.frame", row.names = c(NA,
-10L))
> df
Y X Z W D
1 35.4 2 3 4 0
2 24.8 1 2 3 0
3 17.0 2 1 2 0
4 18.3 3 1 2 0
5 14.8 2 2 1 0
6 46.3 2 3 3 1
7 60.3 1 4 5 1
8 52.5 2 3 4 1
9 44.7 3 2 3 1
10 31.1 4 1 1 1
> ans <- lm(Y~X+Z+W+D, df)
> summary(ans)
Call:
lm(formula = Y ~ X + Z + W + D, data = df)
Residuals:
1 2 3 4 5 6 7 8 9 10
-0.012088 -0.004196 -0.007892 -0.113686 0.137862 -0.334166 0.095604 0.091908 0.088212 0.058442
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.77972 0.44695 -1.745 0.142
X 1.40579 0.12206 11.517 8.65e-05 ***
Z 3.42817 0.14088 24.334 2.18e-06 ***
W 5.77393 0.09088 63.532 1.83e-08 ***
D 16.99600 0.17832 95.313 2.41e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.1858 on 5 degrees of freedom
Multiple R-squared: 0.9999, Adjusted R-squared: 0.9999
F-statistic: 1.663e+04 on 4 and 5 DF, p-value: 1.715e-10> ans2 <- nls(Y~a+a2*D+b*X+b2*D+c*Z+d*W, df, start=(list(a=-0.8, a2=8, b=1.4, b2=8, c=3.4, d=5.8)))エラーになり,推定できない(本来,このモデルは線形なので,収束しないわけはない。エラーが出る原因は a' と b' を別々に推定しようとしているから。a' だけに集約すると以下のようになんなく解が求まる
以下にエラー nlsModel(formula, mf, start, wts) :
パラメータの初期値で勾配行列が特異です> ans2 <- nls(Y~a+a2*D+b*X+c*Z+d*W, df, start=(list(a=-0.8, a2=8, b=1.4, c=3.4, d=5.8)))求まった解は ls を使ったものと同じ(当たり前ですが)。。。
> ans2
Nonlinear regression model
model: Y ~ a + a2 * D + b * X + c * Z + d * W
data: df
a a2 b c d
-0.7797 16.9960 1.4058 3.4282 5.7739
residual sum-of-squares: 0.1726
Number of iterations to convergence: 1
Achieved convergence tolerance: 9.303e-07
No.05624 Re: 構造変化とダミー係数について 【大家】 2008/01/31(Thu) 19:29
あ!申し訳ありません,式の入力を一部間違えていました。
早速のご回答していただいたのにすみません。
Y=a+ a'*D + b*X + b'*D + c*Z + d*W
ではなく
Y=a+ a'*D + b*X + b'*D*X + c*Z + d*W
でした。
a,X二つの変数が,ある時期を境にどのように変化するか推定したいのでした・・・
No.05625 Re: 構造変化とダミー係数について 【青木繁伸】 2008/01/31(Thu) 19:49
> 式の入力を一部間違えていました。
脱力しますね。
DX という変数を作れば良いだけでは?(Rなら明示的に作らなくても良いのだが)> df$DX <- df$D*df$XExcelでやる場合も同じ。以下に図として添付します。このままでは読めないでしょうが,クリックすれば原寸大に拡大されます。
> df
Y X Z W D DX
1 35.4 2 3 4 0 0
2 24.8 1 2 3 0 0
3 17.0 2 1 2 0 0
4 18.3 3 1 2 0 0
5 14.8 2 2 1 0 0
6 46.3 2 3 3 1 2
7 60.3 1 4 5 1 1
8 52.5 2 3 4 1 2
9 44.7 3 2 3 1 3
10 31.1 4 1 1 1 4
> ans <- lm(Y~D+X+DX+Z+W, df)
> summary(ans)
Call:
lm(formula = Y ~ D + X + DX + Z + W, data = df)
Residuals:
1 2 3 4 5 6 7 8 9 10
-0.045875 -0.054785 0.008911 -0.054785 0.146535 -0.319802 0.124422 0.097690 0.070957 0.026733
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.74620 0.48990 -1.523 0.202380
D 16.77558 0.48691 34.453 4.23e-06 ***
X 1.36370 0.15759 8.653 0.000981 ***
DX 0.09043 0.18329 0.493 0.647613
Z 3.44488 0.15663 21.994 2.53e-05 ***
W 5.78251 0.10017 57.724 5.39e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.2017 on 4 degrees of freedom
Multiple R-squared: 0.9999, Adjusted R-squared: 0.9998
F-statistic: 1.129e+04 on 5 and 4 DF, p-value: 2.197e-08
No.05652 Re: 構造変化とダミー係数について 【大家】 2008/02/01(Fri) 15:32
青木先生
どうもありがとうございました。
図を付けていただいたおかげでとてもよく分かりました。
質問を間違えてしまったためにお手数をおかけしてすみませんでした。
大家晶子
● 「統計学関連なんでもあり」の過去ログ--- 041 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る