OCN光で最大124,800円おトク!

a*(1-exp(-bx))+cの近似の方法

x  y
0  1.00
2  1.90
5  2.96
7  3.51
10  4.16
20  5.32
30  5.75


ある実験で上記のようなデータを取得しました。
ほとんどのyデータはx=30で3~30の間でほぼ飽和しています。
cは0~5の間を取ります。

現在市販のグラフソフトを使用してa*(1-exp(-bx))+cで近似曲線を得ています。
またデータを取るソフトはVCで作成しています。

データ数を毎回、グラフソフトを立ち上げてひとつづつ近似するのは
手間がかかってしまいますし、データ数も膨大になってきました。

そこで作成しているソフト内に組み込もうと思うのですが、どういった方法が適切なのかが
検討がつきません。方法またはそのようなことのできるライブラリなどご存知であればご回答よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

 GnuPlotは独立したひとつのプログラムですから、定数a,b,c を直接利用することはできません。

fit.logファイルを読むしかありません。
 ソースは2000字制限で全部を載せることができないため、#2の「 input_str();if () else 」文をコピペしてください。


/* Gcc on Mac OSX
* file name: r_aso.c
* compile: gcc r_aso.c
* execution: ./a.out
*/

#include <stdio.h>
#include <stdlib.h>//exit(),system()
#include <string.h>//strtok(),strstr()

#define SIZE 128
#define FILE_NAME "jikken.dat"
#define GP_LOGFILE "fit.log"
#define SPC " "
#define KEYWORD "+/-"
#define input_str(c,x) {printf(c);fgets(x,SIZE,stdin);}
#define set_token(v,x) {strtok(x,SPC);strtok(NULL,SPC);v=atof(strtok(NULL,SPC));}

int main(void) {
int i;
char buff[SIZE];
FILE *fp,*gp;
double a,b,c;


/*ここに
input_str("Data input? (y/n) ",buff);
if (*buff=='y' || *buff=='Y') {
....
をコピペのこと。 */


// ***** GnuPlot *****
if ((gp=popen("gnuplot","w"))==NULL) {
perror("popen");
exit(1);
}
// 既存fit.logファイルの削除
sprintf(buff,"rm %s\n",GP_LOGFILE);
system(buff);
// fit.log の作成
fprintf(gp,"f(x)=a*(1-exp(-b*x))+c \n");
fprintf(gp,"a=5;b=0.1;c=1 \n");
fprintf(gp,"fit f(x) '%s' via a,b,c \n",FILE_NAME);
pclose(gp);//←ここでいったん GnuPlotを閉じる

//定数a,b,c の読み取り
if ((fp=fopen(GP_LOGFILE,"r"))==NULL) {
perror("fopen(GP_LOGFILE)");
exit(1);
}
fgets(buff,SIZE,fp);
while (strstr(buff,KEYWORD)==NULL){
fgets(buff,SIZE,fp);
}
set_token(a,buff);
fgets(buff,SIZE,fp);
set_token(b,buff);
fgets(buff,SIZE,fp);
set_token(c,buff);
fclose(fp);
sprintf(buff,"%f*(1-exp(-%f*x))+%f",a,b,c);

//GnuPlotによる描画
gp=popen("gnuplot","w");
fprintf(gp,"set xrange [0:40] \n");
fprintf(gp,"set yrange [0:8] \n");
fprintf(gp,"set title 'An example' \n");
fprintf(gp,"set xlabel 'X' \n");
fprintf(gp,"set ylabel 'f(x)' \n");
fprintf(gp,"plot '%s' with points pointtype 6 pointsize 1.5 \n",FILE_NAME);
fprintf(gp,"f(x)=%s \n", buff);
fprintf(gp,"replot f(x) with lines title 'f(x)= %s' \n", buff);
pclose(gp);

//結果のターミナル出力
printf("\n");
printf("GnuPlot fitting result:\n");
printf("\tf(x) = %s\n", buff);

return 0;
}
「a*(1-exp(-bx))+cの近似の」の回答画像3
    • good
    • 0
この回答へのお礼

どうにか最小プログラムで実現できました。

ソフトに組み込んでみます。
本当にありがとうございました。

処理が重くなったときはそのときにほかの方法を考えます。

gnuplotって便利ですね。

gnuplotについてはこれから勉強していきます。

お礼日時:2010/04/06 00:22

 当方、Windows のVCではないMac OSX ですが、参考になれば幸いです。


プログラムは、日々データを加えて図化してはその傾向を視覚確認することを簡略化するのに重宝します。Windows版GnuPlotはMac OSXと使い方に細かな違いがあると思われますので「gnuplot>」のコマンドラインからfprintf(gp, ...) の内容を実行して確認してみてください。

/* Gcc on Mac OSX
* See http://t16web.lanl.gov/Kawano/gnuplot/misc2.html …
* file name: raso.c
* compile: gcc raso.c
* execution: ./a.out
*/

#include <stdio.h>
#include <stdlib.h>//exit()
#define FILE_NAME "jikken.dat"
#define GP_LOGFILE "fit.log"
#define SIZE 128
#define input_str(c,x) {printf(c); fgets(x, SIZE, stdin);}

int main(void) {
int i;
char buff[SIZE];
FILE *fp, *gp;

input_str("Data input? (y/n) ", buff);
if (*buff == 'y' || *buff == 'Y') {
if ((fp = fopen(FILE_NAME, "a+")) == NULL) {
perror("fopen");
exit(1);
}

printf("\tData inputting and curve fitting.\n");
printf("\tLoop end: Push [return] key only.\n");
input_str("Input comment: ", buff);
fprintf(fp, "\n");
fprintf(fp, "# %s", buff);

i = 1;
printf("%d_ ", i);
input_str("x y: ", buff);
while (*buff != '\n') {
fprintf(fp, "%s", buff);
i++;
printf("%d_ ", i);
input_str("x y: ", buff);
}
fclose(fp);

} else {
if (!(*buff == 'n' || *buff == 'N')) {
printf("select y/n error.\n");
exit(1);
}
if ((fp = fopen(FILE_NAME, "r")) == NULL) {
perror("fopen");
exit(1);
}
printf("\tCurve fitting only.\n");
fclose(fp);
}


// GnuPlot
if ((gp = popen("gnuplot", "w")) == NULL) {
perror("popen");
exit(1);
}
// 既存fit.logファイルの削除
sprintf(buff, "rm %s\n", GP_LOGFILE);
system(buff);
// GnuPlot の実行
fprintf(gp, "f(x)=a*(1-exp(-b*x))+c \n");
fprintf(gp, "a=5; b=0.5; c=1 \n");
fprintf(gp, "fit f(x) '%s' via a,b,c \n", FILE_NAME);
fprintf(gp, "set title 'An example' \n");
fprintf(gp, "set xlabel 'X' \n");
fprintf(gp, "set ylabel 'Y' \n");
fprintf(gp, "plot f(x) with lines title 'a*(1-exp(-bx))+c', '%s' with points \n", FILE_NAME);
pclose(gp);
// 新fit.logファイルの閲覧
sprintf(buff, "more %s\n", GP_LOGFILE);
system(buff);

return 0;
}
「a*(1-exp(-bx))+cの近似の」の回答画像2

この回答への補足

gnuplotから得られたパラメータ"a","b","c"をCの変数に格納できるでしょうか。
gnuplotの"print a,b,c"の値が取得できれば解決しそうです。

fit.logから探すとなると処理が多くなるとなんとも気持ちがわるいので、
どうにかならないかなと思っています。

もしお分かりであれば、ご回答よろしくお願いいたします。

補足日時:2010/04/04 21:10
    • good
    • 0
この回答へのお礼

gnuplotはきいたことがありましたが使ったことがなかったので、
Cから使えるって発想がなかったです。

なんか簡単にできそうな気がしてきました。試してみます。

お礼日時:2010/04/04 11:40

近似式の形が決っているのなら、最小二乗法を使うのが一般的でしょう。


よく使われるものなので、解法の解説も多く、自分でプログラムを組んでもいいのです。
が、数値演算ライブラリに入っていることも多いので、それを使うと便利でしょう。

VCの例があるということで、こんなのはどうでしょうか
http://www.mlab.ice.uec.ac.jp/~ej-sib/numerical/ …
    • good
    • 0
この回答へのお礼

こんな便利なものがあるものですね。

勉強してみます。
ご回答ありがとうございました。

お礼日時:2010/04/04 11:35

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qいくつかの(x,y)値から、関係式(近似)を求めたいです。

手元にx軸とy軸からなる図(グラフ)があり、ここからxとyの関係を表す数式(近似のもの)を求めたくて試行錯誤しているのですが、なかなかうまくいきません…。

xとyの値は図から大体読み取れて、だいたい質問欄下部のようになっています。
xの値が大きくなればなるほど、yの増え方が緩やかになるグラフです。

Excelの近似曲線で求められるかと、いろいろ試してみたのですが、
グラフの一部分が望みとかなりずれてしまい、うまくいきませんでした。


(x,y)の値を5点ほど書くと、下のような感じです。
(x, y)
(0, 0)
(50, 0.75)
(100, 1)
(500, 1.75)
(1000, 2)

(0 < x < 1000)が合っていれば、その他の値はどうでもいい感じです。
Excelを利用する方法でも、それ以外の方法でもよいですが、
何かよい方法がありましたら、教えて頂きたいです。
よろしくお願いします。

(図も、用意できたら添付しようと思います)

Aベストアンサー

x → ∞で y が一定値になるのなら(1)、x → ∞で y が一定値にならない(増加)なら(2)で近似するのがいいと思います。どちらも x = 0 のとき y = 0 になる関数です。
  (1) y = a*[ 1 - exp{ -(x/b)^c } ]
  (2) y = a*ln( x/b + 1 )
質問文にある5点データで最小2乗近似すると各パラメータは
  (1) a = 2.23704538731092、b = 242.947998815054、c = 0.574668642035933
  (2) a = 0.457968779687129、b = 12.1754001626539
となりました。(1)のほうが近似度が優れています。このパラメータでグラフを描いて確かめてみてください。

Excelのソルバーというのを使えば、任意の関数で最小2乗近似することができます。ツールバーの「ツール」に「ソルバー」という項目がなければ、「ツール」→「アドイン」で出た画面の「ソルバーアドイン」をチェックしてOKとすればソルバーが使えるようになります(CD-ROMが必要なこともあります)。もしソルバーを使って近似してみたいのならお知らせください。

x → ∞で y が一定値になるのなら(1)、x → ∞で y が一定値にならない(増加)なら(2)で近似するのがいいと思います。どちらも x = 0 のとき y = 0 になる関数です。
  (1) y = a*[ 1 - exp{ -(x/b)^c } ]
  (2) y = a*ln( x/b + 1 )
質問文にある5点データで最小2乗近似すると各パラメータは
  (1) a = 2.23704538731092、b = 242.947998815054、c = 0.574668642035933
  (2) a = 0.457968779687129、b = 12.1754001626539
となりました。(1)のほうが近似度が優れています。このパラメータでグラ...続きを読む

Q近似曲線の数式を手計算で出したい。

エクセルを用いずに、近似曲線の数式をエクセルを用いずに算出したいです。

資料となるデータはあるし、計算機もあるのですが、エクセルは手元にないという状態です。

手計算で近似曲線のy=ax+bという数式を出すには、どのような計算をしたら算出できるのか、ご存じの方いらっしゃったら、どうか詳しく計算過程を教えて下さい。お願いします。

Aベストアンサー

線形近似においては、最小二乗法による推定が最も優れている(不偏かつ分散が小さい)ことがガウス=マルコフ定理によって証明されています。
最小二乗法とはデータが(X1,Y1),(X2,Y2),・・・(Xi,Yi)のように示されていると思うので、そのもとで
Σ(Yi-aXi-b)^2   (i=1,2,3・・・)
を最小化するようなa,bの組を見つけるという方法です。a,bの偏微分によって求めます。
具体的な式としては、Xの平均をX'、Yの平均をY'とし、データ数(標本数)をnとすると、
a=(ΣXiYi-nX'Y')/(ΣXi^2-nX'^2), b=Y'-aX'   (i=1,2,3・・・)
を得ます。
なお、ΣXiYiというのはX1・Y1+X2・Y2+・・・を意味し、ΣXi^2とはX1^2+X2^2+・・・を意味します。

例えば(X,Y)=(10,6),(12,9),(14,10),(16,10)というデータを考えると、標本数は4、Xの平均は13、Yの平均は8.75、ΣXi^2=696、ΣXiYi=468なので、これを代入して
a=(468-4×13×8.75)/(696-4×13^2)=0.65, b=8.75-0.65×13=0.3となり、
求める式はy=0.65x+0.3となります。

線形近似においては、最小二乗法による推定が最も優れている(不偏かつ分散が小さい)ことがガウス=マルコフ定理によって証明されています。
最小二乗法とはデータが(X1,Y1),(X2,Y2),・・・(Xi,Yi)のように示されていると思うので、そのもとで
Σ(Yi-aXi-b)^2   (i=1,2,3・・・)
を最小化するようなa,bの組を見つけるという方法です。a,bの偏微分によって求めます。
具体的な式としては、Xの平均をX'、Yの平均をY'とし、データ数(標本数)をnとすると、
a=(ΣXiYi-nX'Y')/(ΣXi^2-nX'^2), b=Y'-aX'   (i=1,2...続きを読む

Q実験データの指数近似曲線を求めたいのですが・・・

今,修論の実験データを指数近似したいのですが,
[ y=A*exp(Bx)+C ]の形で求めたいのです.

EXCELではおそらく定数項Cが求められませんし,
僕が見つけたフリーソフトでは自然対数eが使われていません.

こんな都合の良いソフトがあるでしょうか?
それともEXCELのマクロ等をいじって実現できるでしょうか?
もしご存知の方がいましたら是非教えて下さい!!
宜しくお願いします.

Aベストアンサー

フリーソフトではありませんが、Sma4Winというソフトをオススメいたします。
(Windowsでしか使えませんが)下記のURLでダウンロードできます。

xとyのデータをソフトに重ねるとグラフが書けます。
最小二乗法で近似式を求めたい場合は、【解析】→【最小二乗】→【指数】を選べばOKですが、これだとEXCELと同じく定数項Cを求めることはできません。
そこで【解析】→【最小二乗】→【一般関数】を選びます。
関数定義の中の f(x)= というところに、【a*exp(b*x)+c】と打ち込んであげればpikachu-kunさんのお望みの近似式が得られると思いますが。

もし使い方がわからなければ教えます。頑張ってください。

参考URL:http://www.forest.impress.co.jp/library/sma4win.html

Q指数関数のカーブフィッティング

時間tに対する1chデータ列yがありまして、それを
y=a exp(b t) + c
に対して客観的に、できれば自動的にフィッティングして、a,b,cを求めたいです。
これがただの1次関数の最小二乗法ならわかりますし、cが既知なら1次関数の応用で、というところまでもわかります。恥ずかしながら渡井には非線形最小二乗法を一般論で理解して解けるような気がしません。

Excelを使った最小二乗法手順説明サイト
http://szksrv.isc.chubu.ac.jp/lms/lms2.html
のような方法か、
C/C++のプログラム
http://www.sist.ac.jp/~suganuma/kougi/other_lecture/SE/predict/predict.htm#2
のようなアルゴリズムの説明をいただけると大変ありがたいです。

よろしくお願いします。

Aベストアンサー

回答が寄せられていませんので考えてみました。
ヒントになれば幸いです。

最小二乗法は直線に当てはめる場合の方法です。
y-c=aexp(bt)
の両辺の対数を取ると
ln(yーc)=ln(a)+bt
です。cが分かればできるのだがと書かれているのはこの式のことですね。
ならばcを推定する手順を入れたらと考えました。

時系列t1、t2、t3、・・・が等間隔とします。
ln(y2-c)-ln(y1-c)=b(t2-t1)=bτ
ln(y3-c)-ln(y2-c)=b(t3-t2)=bτ
ln(y4-c)-ln(y3-c)=b(t4-t3)=bτ

(y2-c)/(y1-c)=k
(y3-c)/(y2-c)=k
(y4-c)/(y3-c)=k

(yn-c)は等比数列になっているはずです。
y1、y2、y3に対して
(y2-c)/(y1-c)=(y3-c)/(y2-c)
より
c=(y1y3-y2^2)/(y1+y3-2y2)
が決まります。
y2、y3、y4に対しては
c=(y2y4-y3^2)/(y1+y4-2y3)
が決まります。
データがばらついていますからこのcもばらつきます。
さしあたり平均で推定していいのではないでしょうか。この値を計算して平均を求めるアルゴリズムはやさしいはずです。
全データでなくて一部でやっても構わないはずです。時間が等間隔でなければ等間隔の部分を抜き出してやればいいです。cの分布の幅も押さえておくといいでしょう。後でcを修正するときに必要になります。

cの値が推定できればln(y-c)とtのグラフを作って最小二乗法でa、bが決まります。もし適合の指標のような値も同時に得られるのでしたら少しcの値を動かして比べてみるといいと思います。cの分布の幅が分かっているとcの値を動かす目安になります。平均でやったのとあまり違わなければ平均でもいいということになります。

ご質問を見て考えたものです。素人っぽい考えかたです。

回答が寄せられていませんので考えてみました。
ヒントになれば幸いです。

最小二乗法は直線に当てはめる場合の方法です。
y-c=aexp(bt)
の両辺の対数を取ると
ln(yーc)=ln(a)+bt
です。cが分かればできるのだがと書かれているのはこの式のことですね。
ならばcを推定する手順を入れたらと考えました。

時系列t1、t2、t3、・・・が等間隔とします。
ln(y2-c)-ln(y1-c)=b(t2-t1)=bτ
ln(y3-c)-ln(y2-c)=b(t3-...続きを読む

Qエクセルの指数近似曲線の式から値を計算する

有るデータを元に指数近似曲線を描かせると「y = 2E+08e-0.098x R² = 0.9847」と出ました。
インターネット等を参考にしてエクセルで値を計算させようとして以下の式を作りましたが計算結果が全く元データと合いません、何が間違っているのでしょうか?教えて下さい。
y = 2E+08e-0.098x⇒y=2*POWER(10,8)*EXP((-0.098*x))

Aベストアンサー

質問者様はグラフに表示された数式と同じワークシートの数式を正しく作成されています。
(実際の数式ではyはなくxのところにセル参照が入っているのですよね)
元データと合わない原因ですが、グラフに表示された数式の係数の精度不足ではないでしょうか。
それが原因であれば、グラフに表示された数式の表示形式を変更して係数の精度を上げ、その数値でワークシートの数式を作り直せば多くの場合解決します。
どのような数値でも精度良く表示するためには、表示形式を指数にして小数点以下14桁にするとよいと思います。

ご存知かもしれませんが、以下念のためグラフに表示された数式の表示の変更方法を説明します。
Excel2003とExcel2007についての解説となりますが他のバージョンも大きくは違わないと思いますのでそこのところの対応はよろしくお願いいたします。
1.グラフに表示された数式を右クリック
2.2003なら「データラベルの書式設定」をクリック、2007なら「近似曲線ラベルの書式設定」を左クリックする。
3.書式設定のダイアログが出るので、「表示形式」を左クリック(2003は上、2007は左上。最初からクリックされた状態になっている可能性あり。)
4.「分類」(表示形式)の「指数」を左クリック。(「数値」はNG)
5.「小数点以下の桁数」を14にする。(最大30だが「分類」(表示形式)が「指数」ならば15以上は無意味。Excelの精度が15桁であるため。)
6.「OK」を左クリック

なお、質問者様の作成された式の「2*POWER(10,8)」の部分ですが、「2*10^8」「2E+08」「2e8」などとしても数式の値としては同じになります。

質問者様はグラフに表示された数式と同じワークシートの数式を正しく作成されています。
(実際の数式ではyはなくxのところにセル参照が入っているのですよね)
元データと合わない原因ですが、グラフに表示された数式の係数の精度不足ではないでしょうか。
それが原因であれば、グラフに表示された数式の表示形式を変更して係数の精度を上げ、その数値でワークシートの数式を作り直せば多くの場合解決します。
どのような数値でも精度良く表示するためには、表示形式を指数にして小数点以下14桁にするとよいと思...続きを読む

Qexpという理解できない記号があります。

expという理解できない記号があります。
exp(x) = 2.718 ^ x
までは、わかりましたがこの関数は何の意味があるのか、用途もわかりません。

あと、フリーで関数を入れるとグラフを書くようなソフトはありますか?
y = exp(x)のようなグラフを書かせて、見た目でも理解したいです。

expのプロ?のご意見が聞きたいです。

Aベストアンサー

2.718~x では、ありません。

∫[t=1→x] (1/t)dt という関数に名前をつけて、
log x と書き、自然対数と呼びます。
この log の逆関数を、exp と書き、
指数関数と呼びます。

exp(x・log(a)) のことを a~x と、
exp(1) のことを e と書く慣習です。
したがって、exp(x) = e~x が成立します。

x が自然数の場合、
a~x は、よく知られていますね。

e の値は、
近似値で e ≒ 2.718281828… であり、
e = 2.718 ではないです。

Q直線補間出来る関数

直線補間できる関数はエクセルに有るのでしょうか?
直線補間とはxy座標において、点A(x1,y1),点B(x2,y2)が有ったときに、x1≦x≦x2における任意のxに対するyの値を点AB間が直線だと仮定して求めるすることです。

今は、VLOOKUP,match,Index関数を使ってやってますが、関数がある非常に楽です。

Aベストアンサー

 2点だけでしたら使うまでも無い様な気がしますが、FORECAST関数というものがあります。

【参考URL】
 FORECAST 関数 - Excel - Office.com
  http://office.microsoft.com/ja-jp/excel-help/HP010342532.aspx

 初心者のエクセル(Excel)学習・入門 > エクセル関数の使い方 > 統計関数 > FORECAST関数とは
  http://excel.onushi.com/function/forecast.htm

Qエクセルでのシグモイドのカーブフィット

エクセル2000を使用しています。
あるデータを散布図にしたところシグモイドであることがわかりました。
カーブフィットして,式を出したいのですがどうすればいいのかわかりません。
シグモイドの関数はわかっているので係数が出せればいのですが,やり方がわからず困っています。
どうかよろしくお願いします。

Aベストアンサー

シグモイド関数というのは、
f(x)=1/(1+exp(-x))
というものでしょうか?

Y=AX+B という形で

Y=f(x)
X=1/(1+EXP(-x))
とおいて
エクセルの分析ツールの回帰分析で求められませんか?

はずしていたらごめんなさい

Qエクセル、散布図でデータの一部のみの近似直線を書きたい

(1、5)、(2,8)、(3、16)、(4、25)、(5、37)というグラフをかきました。
ここでグラフのプロットは全てのデータについて表示されたままで、(3、16)、(4、25)、(5、37)だけについての近似直線を描き、式やR2値を表す方法は無いものでしょうか。
(1、5)、(2,8)というデータを消せば目的の式は得られるのですが、(1、5)、(2,8)というプロットをグラフに残したままにしたいのです。
どうぞよい知恵をお貸し下さい。

Aベストアンサー

1系列の一部のデータ範囲を対象に近似曲線を引くことは出来ないように思えます。便宜的な方法として以下が考えられます。お試しください。

■グラフの一部に近似曲線を追加する

全てのデータ範囲を選択する
|グラフウィザード 2/4 「グラフの元データ」|系列タブ|
系列1
 すでに全てのデータ範囲が対象となっている
系列2
 |追加|
 「Xの値」のボタンを押して後半のX値のセル範囲を選択する
 「Yの値」のボタンを押して後半のY値のセル範囲を選択する
グラフが作成される
全てのデータ範囲(系列1)と後半のデータ範囲(系列2)は重なっている
系列2へ近似曲線を追加する
 グラフ上、後半のデータ範囲の1要素を右クリック
 |近似曲線の追加|
 パターン・種類・オプションを指定する

■検討事項

・凡例・マーカー
無指定で系列に「系列1」・「系列2」という名前が付きます。同じ名前にすることは出来るようですが、系列2のみを消すことは出来ないようです。系列名の色を白にして見えなくする、プロットエリアのマーカーも二系列を同色とする、など考えられます。

・近似線
私は近似曲線のオプションに詳しくありませんが、全てのデータ範囲に対する近似線を引いたとして、後半のデータ範囲に対する近似線と重ならない(同形ではない)と思います。

1系列の一部のデータ範囲を対象に近似曲線を引くことは出来ないように思えます。便宜的な方法として以下が考えられます。お試しください。

■グラフの一部に近似曲線を追加する

全てのデータ範囲を選択する
|グラフウィザード 2/4 「グラフの元データ」|系列タブ|
系列1
 すでに全てのデータ範囲が対象となっている
系列2
 |追加|
 「Xの値」のボタンを押して後半のX値のセル範囲を選択する
 「Yの値」のボタンを押して後半のY値のセル範囲を選択する
グラフが作成される
全てのデ...続きを読む

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む


人気Q&Aランキング