2

現在の SAS プログラムを R で書き直そうとしていますが、出力が一致することを確認しています。私は非常に基本的な回帰から始めていますが、それを一致させることさえできません。また、結果を Excel で再確認したところ、R の出力と一致しました。

回帰用の SAS コードは非常に基本的なものです。

Proc Reg data=[data set];
 model DepVar = Reg1 Reg2 Reg3 Reg4 Reg5 Reg6;
run;

出力の概要は次のとおりです。

VAR         SAS         R           Excel
DepVar       0.01748     0.01748     0.01748 
Reg1        (0.24815)   (0.24809)   (0.24809)
Reg2         1.19502     1.19481     1.19481 
Reg3        (0.33029)   (0.33012)   (0.33012)
Reg4         0.80502     0.80507     0.80507 
Reg5        (1.39338)   (1.39345)   (1.39345)
Reg6        (0.13034)   (0.13051)   (0.13051)

データは次のとおりです (60 データ ポイントのみ)。

OBS DepVar  Reg1    Reg2    Reg3    Reg4    Reg5    Reg6
1   -0.0444 -0.0298 -0.0165 0.0266  0.032   0.0019  -0.0035
2   -0.0491 0.0165  -0.0072 0.0283  -0.0298 -0.0165 0.0266
3   0.1208  -0.0215 -0.0138 0.0175  0.0165  -0.0072 0.0283
4   -0.0784 -0.0278 -0.04   -0.0046 -0.0215 -0.0138 0.0175
5   0.2154  0.0353  0.0299  -0.0123 -0.0278 -0.04   -0.0046
6   0.1249  0.0045  0.0256  0.0278  0.0353  0.0299  -0.0123
7   0.0062  0.0379  0.0277  -0.0045 0.0045  0.0256  0.0278
8   0.0359  -0.0127 -0.0088 0.0141  0.0379  0.0277  -0.0045
9   0.2078  0.004   -0.0068 0.0116  -0.0127 -0.0088 0.0141
10  -0.123  -0.0214 -0.0103 -0.007  0.004   -0.0068 0.0116
11  -0.0633 0.0353  0.01    -0.0185 -0.0214 -0.0103 -0.007
12  0.0173  -0.0031 -0.0051 0.0048  0.0353  0.01    -0.0185
13  -0.0204 0.03    0.0533  0.0117  -0.0031 -0.0051 0.0048
14  -0.0143 -0.0033 -0.0031 -0.0085 0.03    0.0533  0.0117
15  0.1663  0.0142  0.0356  -0.0011 -0.0033 -0.0031 -0.0085
16  -0.099  0.0066  -0.0124 0.0308  0.0142  0.0356  -0.0011
17  -0.0148 -0.0358 -0.0304 0.0277  0.0066  -0.0124 0.0308
18  -0.0807 -0.0038 -0.0054 0.0151  -0.0358 -0.0304 0.0277
19  0.1532  -0.008  -0.0399 0.0327  -0.0038 -0.0054 0.0151
20  0.1195  0.0205  0.0083  -0.0176 -0.008  -0.0399 0.0327
21  -0.0581 0.0186  -0.0123 -0.0043 0.0205  0.0083  -0.0176
22  0.0034  0.0325  0.0164  0.0048  0.0186  -0.0123 -0.0043
23  0.0476  0.0175  0.0077  0.0048  0.0325  0.0164  0.0048
24  -0.0413 0.0086  -0.0089 0.0252  0.0175  0.0077  0.0048
25  0.0192  0.0143  0.0009  -0.0002 0.0086  -0.0089 0.0252
26  0.2577  -0.0197 0.0137  0.0024  0.0143  0.0009  -0.0002
27  0.0157  0.0071  -0.0026 0.0039  -0.0197 0.0137  0.0024
28  -0.0012 0.0353  -0.0209 -0.0097 0.0071  -0.0026 0.0039
29  0.0393  0.0323  -0.0003 -0.0015 0.0353  -0.0209 -0.0097
30  -0.0036 -0.0198 0.0076  -0.0107 0.0323  -0.0003 -0.0015
31  -0.0607 -0.0374 -0.0267 -0.0299 -0.0198 0.0076  -0.0107
32  0.0236  0.0094  -0.0014 -0.0236 -0.0374 -0.0267 -0.0299
33  -0.0363 0.0314  -0.0246 -0.0213 0.0094  -0.0014 -0.0236
34  -0.0442 0.0173  0.0021  -0.0197 0.0314  -0.0246 -0.0213
35  0.0758  -0.0485 -0.0277 -0.0109 0.0173  0.0021  -0.0197
36  -0.0076 -0.0097 0.0005  -0.0003 -0.0485 -0.0277 -0.0109
37  -0.0096 -0.065  -0.0078 0.0305  -0.0097 0.0005  -0.0003
38  0.0181  -0.0332 -0.0054 -0.0003 -0.065  -0.0078 0.0305
39  -0.056  -0.0112 0.0083  0.0028  -0.0332 -0.0054 -0.0003
40  -0.0404 0.0441  -0.0149 -0.0003 -0.0112 0.0083  0.0028
41  0.2678  0.0165  0.0298  -0.0034 0.0441  -0.0149 -0.0003
42  -0.0138 -0.0865 0.0107  -0.0102 0.0165  0.0298  -0.0034
43  -0.0568 -0.01   0.0358  0.0369  -0.0865 0.0107  -0.0102
44  -0.0234 0.0129  0.0375  0.0148  -0.01   0.0358  0.0369
45  -0.141  -0.0945 -0.0034 0.044   0.0129  0.0375  0.0148
46  -0.0227 -0.1754 -0.0228 -0.0299 -0.0945 -0.0034 0.044
47  -0.1332 -0.0813 -0.0363 -0.0494 -0.1754 -0.0228 -0.0299
48  0.1535  0.015   0.0397  -0.012  -0.0813 -0.0363 -0.0494
49  0.0309  -0.0844 -0.0098 -0.0986 0.015   0.0397  -0.012
50  0.0529  -0.1042 -0.0035 -0.069  -0.0844 -0.0098 -0.0986
51  -0.0834 0.0868  0.0073  0.026   -0.1042 -0.0035 -0.069
52  0.0413  0.0986  0.054   0.0542  0.0868  0.0073  0.026
53  -0.0006 0.0486  -0.0266 0.0056  0.0986  0.054   0.0542
54  0.0159  0.0009  0.0267  -0.0244 0.0486  -0.0266 0.0056
55  -0.0506 0.0738  0.025   0.0473  0.0009  0.0267  -0.0244
56  0.05    0.0299  -0.0051 0.0759  0.0738  0.025   0.0473
57  0.009   0.0376  0.0247  0.014   0.0299  -0.0051 0.0759
58  0.0344  -0.0293 -0.0422 -0.0437 0.0376  0.0247  0.014
59  0.0038  0.0523  -0.0265 0.0017  -0.0293 -0.0422 -0.0437
60  0.1589  0.0239  0.0579  0.0073  0.0523  -0.0265 0.0017

私は何が欠けていますか?

4

4 に答える 4

5

SASでデータを再確認し、それらが同じ精度であることなどを確認してください。データとSASを使用して、RおよびExcel出力と同じ結果を得ました。

ここに画像の説明を入力

検証に役立つ場合、これは Stata の出力です。

ここに画像の説明を入力

于 2014-12-11T22:28:46.643 に答える
2

あなたの出力を正しく読むと、違いは有効数字の 4桁目以降に表示されます - わずか 60 データ ポイントです。わずか 60 のデータ ポイントがあり、すべて有効数字が 2 ~ 3 桁までしか測定されていないため、出力の 3 番目の有効数字を超えるものを見ないでください。「そこにある」ものはすべて、測定ノイズに圧倒されます。

逆行列 (より正確には、線形方程式の解を見つけること) は、浮動小数点演算の正確な科学ではありません。線形方程式を解くために異なるアルゴリズムを使用する可能性のある異なる数値ライブラリを使用したり、異なるアーキテクチャで同じライブラリを使用したりすると (これはあなたには当てはまらないと思います)、観察している順序に相違が生じる可能性があります。詳細については、R FAQ 7.31 を確認してください。特別な正確な算術ライブラリを使用すると、原則として同じ結果が得られるはずですが、正確な算術を使用して R/SAS/Excel で OLS ソリューションを使用できるかどうかさえわかりません。

于 2014-12-11T21:48:49.547 に答える
1

ご意見をお寄せいただきありがとうございます。SASプログラムを介してデータが処理されているため、データに何かが起こっているようです。最初にいくつかのデータ ソースを取得し、それらを 1 つの SAS データセットに結合してから、そのデータセットを R と Excel にエクスポートしました。これが違いが発生したときです。Rで元のデータセットを結合してから回帰を実行すると、元のSASの答えが得られることがわかりました。また、(上記の誰かが指摘したように) コピーしたデータを取得して SAS で実行すると、元の R の回答が得られることがわかりました。

そのため、データは SAS プログラムのどこかで変更されています。ただし、元のデータの精度は元の投稿に示されているものにすぎないため、その方法はよくわかりません。

それでも、これは役に立ちます。ありがとう!

于 2014-12-12T21:50:18.643 に答える
1

これが精度の差です。私の推測では、PROC REG は MLE を使用していますが、R と Excel は行列分解ルートを使用しています。線形代数を使用する場合、精度は機械精度にほぼ近い値に設定されます。MLE で精度を設定すると、最適化ルーチンがそれに合わせようとします。

もう 1 つの推測は、文字から数値への変換とその周囲の丸めです。

于 2014-12-11T22:01:07.687 に答える