Rの最小2乗法の結果の有効桁数とは何か?推定式の作成方法やPr(>|t|)の意味について教えてください

このQ&Aのポイント
  • Rの最小2乗法の結果には「○○e+03」と「○○e-02」という表記がありますが、これは10の3乗や10のマイナス2乗を表しています。また、この表記は有効桁数も示しており、例えば「3.03e+05」は有効数字が3桁であることを意味します。
  • 推定式を作成する際には、「○○e+03」は○○を10の3乗として表記し、「○○e-02」は10のマイナス2乗として表記します。例えば、「-1.142e+05」は-114,200と表記し、「8.958e-01」は0.8958と表記します。
  • Pr(>|t|)の横にある「**」や「***」は、統計的に有意な差を示すための記号です。これらの記号は、p値が一定の閾値以下であることを意味し、**はp値が0.01以下、***はp値が0.001以下を示します。
回答を見る
  • ベストアンサー

Rというソフトの最小2乗法の結果について困ってます

Rの出力結果で、「○○e+03」とは○○の10^3の、「○○e-02」とは10^-2の意味。というのは分かったのですが、どうやら有効桁数も示しているらしいのです。たとえば「3.03 e+05」の有効数字は3桁で、解答として出す際は303,000という表記で出すらしいのですが、なぜ3桁になるのか分かりません。 例えば、 出力結果が、           Estimate    Std. Error    t value    Pr(>|t|)           (Intercept)   -1.142e+05    3.668e+04   -3.115    0.00422 **           可処分所得   8.958e-01   1.724e-02    51.947   < 2e-16 *** のとき、 -1.142e+05なら-114,200と、8.958e-01なら0.8958として、 C_i=-114,200+0.8958Y_i という推定式で良いのでしょうか? あと、ついでなのですが、Pr(>|t|)の下の数値の横にある「**」や、「***」は何か意味があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

正確な数値が必要ならば,結果を変数に代入して,表示桁数を指定して,係数を出力すればよいでしょう。 result <- lm(formula, ...) options(digits=16) coefficients(result) ** や *** は,偏回帰係数の検定の結果の簡易表現です。 下の方に Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 と書いてあるでしょう。意味などは,検定についての一般の教科書を参照。

hitosashi
質問者

お礼

ありがとうございます。

関連するQ&A

  • 統計ソフトRの初心者です。

    統計ソフトRの初心者です。 今、回帰分析について勉強しているんですけど わからないことがあるので教えてください!! 問題としては平均の信頼区間と予測区間を散布図上にプロットせよ。 と言う問題です。ここまでの問題で書いたプログラムは以下のとおりです。平均の信頼区間、予測区間自体は求めることができたんですけど それを散布図上にプロットするやり方がわかりません。 詳しい方お願いします!! > boats=c(447,460,481,498,512,513,526,559,585,614,645,675,711,719,727) > manatee=c(13,21,24,16,24,20,15,34,33,33,39,43,50,47,54) > plot(boats,manatee) > cor(boats,manatee) [1] 0.9512923 > out=lm(boats~manatee) > summary(out) Call: lm(formula = boats ~ manatee) Residuals: Min 1Q Median 3Q Max -48.069 -13.850 1.090 18.110 59.692 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 361.9077 21.0430 17.20 2.53e-10 *** manatee 6.9601 0.6256 11.13 5.15e-08 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 31.25 on 13 degrees of freedom Multiple R-Squared: 0.905, Adjusted R-squared: 0.8976 F-statistic: 123.8 on 1 and 13 DF, p-value: 5.15e-08 > abline(lsfit(boats,manatee)$coef) > anova(out) Analysis of Variance Table Response: boats Df Sum Sq Mean Sq F value Pr(>F) manatee 1 120860 120860 123.78 5.15e-08 *** Residuals 13 12693 976 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > boats.new=1 > predict1=predict(out,data.frame(boats=boats.new),interval="predict",level=0.95) Warning message: 'newdata' had 1 rows but variable(s) found have 15 rows > predict1 fit lwr upr 1 452.3884 378.5162 526.2606 2 508.0688 437.0336 579.1041 3 528.9490 458.5776 599.3203 4 473.2685 400.6356 545.9015 5 528.9490 458.5776 599.3203 6 501.1088 429.8023 572.4152 7 466.3085 393.2852 539.3318 8 598.5495 528.7167 668.3823 9 591.5894 521.8203 661.3586 10 591.5894 521.8203 661.3586 11 633.3497 562.8099 703.8896 12 661.1900 589.6287 732.7512 13 709.9103 635.6428 784.1779 14 689.0302 616.0602 762.0001 15 737.7505 661.4514 814.0497 > predict2=predict(out,data.frame(boats=boats.new),interval="confidence",level=0.95) Warning message: 'newdata' had 1 rows but variable(s) found have 15 rows > predict2 fit lwr upr 1 452.3884 422.3884 482.3884 2 508.0688 485.9576 530.1800 3 528.9490 509.0738 548.8241 4 473.2685 446.4648 500.0723 5 528.9490 509.0738 548.8241 6 501.1088 478.1413 524.0762 7 466.3085 438.4642 494.1528 8 598.5495 580.6743 616.4247 9 591.5894 573.9646 609.2142 10 591.5894 573.9646 609.2142 11 633.3497 612.8860 653.8135 12 661.1900 637.4431 684.9368 13 709.9103 678.9496 740.8711 14 689.0302 661.3261 716.7342 15 737.7505 702.1914 773.3097

  • 有効桁数の数え方・誤差

    actionscriptをやっているのですが、有効桁数の数え方がよくわかりません。 たとえばNumber(有効桁数15桁)で public function sample() { var tf : TextField = new TextField(); var suuji : Number = 0.999; var suuji2 : Number = 1.001; var kekka : Number; kekka = suuji2 - suuji; tf.text = "" suuji2 + "-" suuji + "=" + kekka; } というものを実行させた場合kekkaが0.0019999999999998908になるのですが、この際の各々の変数の有効桁数は suuji 3桁 suuji2 4桁 kekka 0桁 という解釈で良いのでしょうか? そしてこの場合は桁落ちが起きていると言えるのでしょうか? また、この際にkekkaに誤差がでるのはNumberの有効桁数が15桁であるため、それ以降の桁に勝手に数字が入れられるということでしょうか? (0.999が勝手に0.9990000000000001092になる) もうひとつわからないことがあって、これは型の有効桁数を調べるプログラムなんですけど、 public function sample2() { var n : int; var sb : Number,sn : Number,t : Number; var tf : TextField = new TextField(); tf.border = true; tf.width = 400; tf.height = 300; n = 1; sn = t = 1.0; sb =0.0; while(sn != sb){ tf.appendText(n + ":" + sn + ":" + t + "\n"); n++; t = t / 10.0; sb = sn; sn = sb + t; } addChild(tf); } を実行すると 1:1:1 2:1.1:0.1 3:1.11:0.01 4:1.111:0.001 5:1.1111:0.0001 6:1.11111:0.00001 7:1.111111:0.0000010000000000000002 8:1.1111111:1.0000000000000002e-7 9:1.11111111:1.0000000000000002e-8 10:1.111111111:1.0000000000000003e-9 11:1.1111111111:1.0000000000000003e-10 12:1.11111111111:1.0000000000000003e-11 13:1.1111111111110001:1.0000000000000002e-12 14:1.1111111111111:1.0000000000000002e-13 15:1.11111111111111:1.0000000000000002e-14 16:1.1111111111111112:1e-15 と表示されるのですが、これだと16行目の有効桁数が16桁になっているのでしょうか? しかしそれだと型の有効桁数と矛盾するので、たまたま16桁目が1だっただけで有効桁数は15ということでしょうか? また、tに2や3の数字が勝手に入れらていますが、これも上記のように有効桁数ではない部分に勝手に数字を入れられているということでしょうか? 長文、また見辛く申し訳ありません。

  • 計算結果を別セルに分割して入力したい

    教えてください。A1からA10に2桁の単価数字から4桁の単価数字が入力される表があり、B1からB10に利用回数を1桁数字から2桁数字を入力して掛けた結果をC1からC10に反映させた表があります。このC1の値をD1からI1のセルへ桁数ごと分けて、右よせで数字を反映させたいのですが可能でしょうか。 たとえば A1:180 掛ける B1:5  結果C1:900 このC1:900を G1:9 H1:0 I1:0 としたいのです。 よろしくおねがいします。

  • 有効桁数について

    ある数値を5回測定したとします A 5.039 B 5.075 C 5.092 D 5.064 E 5.058 有効桁数はすべて4桁ですよね? 次にA~Eの平均を取ると (A+B+C+D+E)/5=5.0656 と関数電卓で結果がでますが、4桁に丸めて5.066とすれば有効桁数の扱い方としては問題ないですか? そしてA~Eの平均の2乗をするときは、上記の平均を有効桁数4桁に丸めた5.066を2乗して (5.066)^2=25.664356 となり、そして5.066の有効桁数4桁に合わして25.66とすればいいのでしょうか? それとも平均の値を4桁に丸める前の電卓で出た値のまま2乗した後、最終的に4桁に丸めるのがいいのでしょうか?この数値だとどちらでやっても4桁にした値は変わりませんが・・・ 有効桁数の扱い方で問題があったら教えてください、また平均の2乗を求めるときはどちらが正しいのでしょうか? (平均の値の2乗は平均×平均なのだから平均の値を4桁にせず5桁として計算すると平均の2乗は有効桁数5桁と考えるので、やはり正しく平均の値を測定値の有効桁数4桁に丸めて出した平均の値を2乗する方が正しいですかね・・・)    また、上記の平均の計算をしたときのよな、「5」などの数字の有効桁数は何桁ですか?1桁なんでしょうか?もし1桁なら割り算をしているので有効桁数はいちばん桁数の少ないものに合わせるので有効桁数1となると平均の値が「5」となりおかしいとおもうんですが・・・ 上記の平均を取ったときの「5」や、測定回数の数値や、測定していない数で100で割れと書いてあったりしたときは、それらの数字の桁数も考えなければならないんでしょうか? 読みづらい文章かもしれませんが、ご回答待っています。

  • printfの%eで指数部分の桁数を調整する方法?

    書式指定子の%eで、8文字までで出力しなければなりません。 printf("data = %8.3e\n",data); 仮にdataが6.456e5の場合、 data = 6.456e+005 (既に10文字でオーバー) となってしまい、指数部の桁数が3桁になってしまうと 有効数字部分が少なくなってしまうので、 指数部を、1桁にする方法はあるのでしょうか? こんな感じで出力できるでしょうか? data = 6.456e+5

  • 不偏推定量:平均二乗誤差

    不偏推定量に対して、平均二乗誤差を求める問題で 計算に困っています。 データX1,X2,...,Xnがとある分布から独立に得られています。 ここでパラメータλに対する 不偏推定量 T1=(1/n)Σ(i=1~n)Xiにおいて平均二乗誤差を求める。 平均二乗誤差 =E((T1-λ)^2) =E(((1/n)ΣXi -λ)^2) =E((1/n)^2*(ΣXi-nλ))^2) =(1/n)^2* E((Σ(Xi-λ))^2) ここまではいいのですが E((Σ(Xi-λ))^2)をうまく処理できません。 授業では E((Σ(Xi-λ))^2)=Σ(E((Xi-λ)^2)と処理していたようなのですが、 どうしてもこの式が同値であることに納得いきません。 E((Σ(Xi-λ))^2) = E(Σ(Xi-λ)) * E(Σ(Xi-λ)) = Σ(E(Xi-λ)) * Σ(E(Xi-λ)) = (Σ(E(Xi-λ)))^2 なら 納得いくのですが…これではこの先計算できないなぁと困っている次第です。 もしよろしければ アドバイスをください。よろしくお願いします

  • Java 出力 桁数調整

    Java初心者です。 JAVAのSytem.out.printの出力の際、 double型の数字の桁数(小数点以下何桁まで表示するか)を調整したいのですが、どのようにやればいいのかわかりません。 教えてください。 あまり詳しくないのでライブラリ等から探す探し方ではなく、 具体的なやりかたを教えてください。 <for emaxple> class warizan{ public static void main(String[] args){ double i=0.0; i = 1/3; System.out.println(i); } } をコンパイルして実行すると出力が 0.33333333333333333333333... となると思うんですが、 0.33 など、小数点以下二桁で出力する方法。 また、よければ大きい数字の桁数調整のやり方も 教えていただけるとうれしいです。 123456789 → 123000000

    • ベストアンサー
    • Java
  • コマンドプロンプト 実行結果の桁をそろえたい

    バッチの実行結果の件数%count%を、5桁の右寄せ(結果が1桁のばあいは、スペース4桁を頭に入れてる)でテキストファイルresult.txt に出力したいのですが、下記のように書くと、 table1 : ("d\n",0) 件  と出力されてしまいます。 table1 :    0 件   と出力されるようにするにはどうしたらよいのでしょうか? for /f %%i in ('mysql -u root -p ^< "c:\bat\test.sql"') do set count=("%5d\n",%%i) echo table1 : %count% 件 >> "c:\bat\result.txt"

    • ベストアンサー
    • MySQL
  • 統計学 重回帰分析についての問題

    問題 目的関数をy、説明変数を他の二つとして重回帰分析を行え。 この問題をRで実行し、※は自分がつけた補足です。 以下は間違ったことを言っていないか見てほしいです。 よろしくお願いします。 > condo<- read.table("clipboard",header=TRUE) ※Excel上で範囲指定したデータを読み込む > condo x1 x2 y 1 12 4 22 2 12 3 24 3 11 3 21 4 7 1 19 5 8 3 19 6 9 2 22 7 14 5 24 8 11 4 23 > attach(condo) > lm1<- lm(y~.,data =condo)  ※yを目的変数、他のすべての変数を説明変数として線形重回帰分析を実行 > summary(lm1) ※実行結果の要約 Call: lm(formula = y ~ ., data = condo) Residuals: ※残差の8数要約 1 2 3 4 5 6 7 8 -0.7477 0.6682 -1.3259 -0.4708 -0.3084 1.1016 -0.1752 1.2582 Coefficients: ※係数の最小二乗推定値と対応t値など Estimate Std. Error t value Pr(>|t|) (Intercept) 13.0140 2.1917 5.938 0.00193 ** ※β_0 x1 1.0058 0.3465 2.903 0.03369 * ※β_1 x2 -0.5841 0.6478 -0.902 0.40854 ※β_2 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 1.087 on 5 degrees of freedom Multiple R-squared: 0.7852, Adjusted R-squared: 0.6992 ※寄与率、自由度調整済み寄与率 F-statistic: 9.137 on 2 and 5 DF, p-value: 0.02139 最後の行は、母集団において、得られた回帰式 y= β_0+ β_1 x_1+ β_2 x_2+ ε_i が全くあてにならないという仮説(H0: β_1= β_2= 0 )を分散分析で検証している。検定統計量 F=S_R・(n-p-1)/ S_e・p ( n:標本数、p:説明変数の数、S_R:回帰による平方和、S_e:残差平方和 ) が自由度(p,n-p-1)のF分布に従うことを用いている。上記では、p値が0.02139と極めて小さいので、有意水準0.05で仮説H0は棄却され、母集団においてもこの式はあてになるという結論に至る。 ・・回答よろしくお願いします。

  • VBA エクセル 文字列の桁数指定 先頭に"0"

    お世話になります。 セルに入力されたコードが、指定された桁数未満であった場合に、足りない桁数分を調整するため先頭に"0"ゼロを追加したいと思っております。 具体的には、10桁に指定されたコード番号を、間違えて6桁で入力した場合、先頭に"0000"を追加して10桁に調整したいのです。 (1)誤:54321Q ↓調整 (2)正:000054321Q 入力したら瞬時に修正をさせたいので、WorksheetにChengeEventを利用して書こうと思っているのですが、下記のとおり入力された桁数が1~9桁であった場合のそれぞれの指定を書くことしか思いつかなくて。 もう少し、Simpleな書き方はないものでしょうか? ~前略~ s = Cells(Target.Row, Target.Column).Value If s = "" Then Exit Sub End If i = Len(s) If i > 10 Then MsgBox "顧客番号(ICRIS#)は10桁です。" Exit Sub ElseIf i = 1 Then Cells(Target.Row, Target.Column).Value = "000000000" & s exitsub ElseIf i = 2 Then Cells(Target.Row, Target.Column).Value = "00000000" & s exitsub ~省略~ よろしくご指導くださいませ。