(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024082680
(43)【公開日】2024-06-20
(54)【発明の名称】陰関数を利用したトラクタブルな効用関数,および,効用関数を観察データから生成する方法の発明
(51)【国際特許分類】
G06N 99/00 20190101AFI20240613BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2022196695
(22)【出願日】2022-12-08
(71)【出願人】
【識別番号】716000455
【氏名又は名称】高橋 秀司
(72)【発明者】
【氏名】高橋秀司
(57)【要約】 (修正有)
【課題】u=f(x1,x2)という関係が想定される(u,x1,x2)の観察データに良好にフィットする数式を生成する計算装置を提供する。
【解決手段】観察データを等高線データに加工して,等高線毎に個別に回帰を実行し,それら回帰で得た情報を総合し,さらに,調整して,データにフィットするような陰関数を生成する。不正な関数については,それを見つける手段を工夫し,目視に適した図を作成する。また,根本的な解決が難しく,妥協が必要な場合が多いので,計算機で処理できるような客観的な妥協の基準を設けて解決する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
財の量x1,…,xnの値を決めた上で,その財の量から得られる効用の値を示す効用水準uの値を,下記の効用関数(数34)の数値解をもちいて生成する,
あるいは,逆に
効用水準uの値を決めた上で,その効用を実現するx1,…,xnの値を,下記の効用関数(数34)の数値解をもちいて生成する,
計算装置であって,
記憶装置と,演算装置と,を備え,前記記憶装置は,
第1財から第n財までの財の量x1,…,xnの値と,効用関数(数34)の式を記憶する記憶処理を実行し,前記演算装置は,(数34)にこれらx1,…,xnの値を代入したうえで,(数34)を満たすuの値を数値的に計算し出力する処理を実行する,
あるいは,逆に
uの値と効用関数(数34)の式を記憶する記憶処理を実行し,前記演算装置は,(数34)にこれらuの値を代入したうえで,(数34)を満たすx1,…,xnの値を数値的に計算し出力する処理を実行する,
計算装置。ただし,(数34)の両辺をuで除してgk(u)/uをgk(u)として再定義した(数35)も含む。
[数34]u=Σk=1
ngk(u)fk(xk)
kは財のインデックスで,1番からn番までの範囲の値。nは財の種類の総数。xkは第k番の財の数量である。uは効用水準である。使用するuとxkの値の範囲内でgk(u)≧0,gk′(u)≦0,fk(xk)≧0。
[数35]1=Σk=1
ngk(u)fk(xk)
kは財のインデックスで,1番からn番までの範囲の値。nは財の種類の総数。xkは第k番の財の数量である。uは効用水準である。使用するuとxkの値の範囲内でgk(u)≧0,gk′(u)<0,fk(xk)≧0。計算機の有効桁数のスケーリングなどの都合により(数35)の左辺の値を1から100等の値に変更したものも含む。
【請求項2】
請求項1の記憶装置の(数34)の式について,
(数34)のgi(u),i=1,…,nの式を,観察されたx1,…,xnの値と,観察された価格P1,…,Pnの値と,観察されたuあるいは自身で推定したuの値と,からなる標本データから生成する計算装置であり,
記憶装置と,演算装置と,を備え,
前記記憶装置は,「uの値を与えた(数34)ないし(数35)を制約条件として満たすようなx1
,…,xnであり,かつ,「P1x1+…+Pnxn=M」のMを最小化すると想定されるx1,…,xnの値」と,「P1,…,Pnの値」と,「uの値」と,「fi(xk)の式」と,を記憶する記憶処理を実行し,
前記演算装置は,(数36)あるいは(数37)に,x1,…,xnの値,uの値,fi′の式,fiの式を入力して演算を実行し,Giの値を出力する。そのGiの値を被説明変数,uの値を説明変数,回帰式をgi(u)として回帰等の手法でgi(u)の式を生成する処理を実行する計算装置。
[数36]Gi=u/{Σk=1
n(fi′(xi)/fk′(xk))×(Pk/Pi)×fk(xk)}
[数37]Gi=1/{Σk=1
n(fi′(xi)/fk′(xk))×(Pk/Pi)×fk(xk)}
(数36)は,(数34)のgi(u)の生成に使用する数式であり,(数37)は,(数35)のgi(u)の生成に使用する数式。スケーリングのために(数37)の分子の1は100等に変更したものを含む。iとkは財のインデックスで1からnまでの値。xiは第i財の数量,xkは第k財の財の数量。uは,その数量に対応する効用。fi(xi)はfi(xi)≧0となる関数。
gi(u)の式は,使用するuの上限と下限の範囲でgi(u)≦0となりえる数式。
【請求項3】
請求項1の計算装置の(数34)について,
(数34)のg
k(u)の式とf
k(x
k)の式を,「u=u(x
1,…,x
n)」という一般的な関係が想定されるx
1,…,x
nの値と,それに対応するuの値を1セットとし,それが複数セットある標本データから生成する計算装置であって,
記憶装置と,演算装置と,を備え,
前記記憶装置には,uの値をT段階とし,概ね等しいuの値を与えるx
1,…,x
nで,1番からT番までのT組にグループ化された標本データテーブルを記録する処理を実行し,(T≧2),
前記演算装置では,以下の[1],[2]の処理を順に行うことで,請求項1で使用する(数34)のg
k(u)とf
k(x
k),k=1,…,nの式を生成する処理を行う計算装置。
[1]
回帰式が(数38)の形で表現できるような回帰式を使用して,1番からT番までのT組あるx
1,…,x
nに対して,1つ1つ回帰を実施し,T組のβ
0,β
kの値を推計して出力し, 推計されたT組の(数38)を記憶装置に記憶する。
推計されたT組のβ
kについて,その平均をとる等の方法で,β
k
UNの値を1意に決定し,F
k(x
k,β
k
UN)をもって効用関数のf
k(x
k)とし,記憶装置に記憶する処理を実行する。
[数38] F
1(x
1,β
1)=β
0-Σ
k=2
nF
k(x
k,β
k)
β
0は回帰式の定数項。x
1,x
2,…,x
nは,効用水準がβ
0であると想定される財の数量。F
1(x
1,β
1)は,使用するx
1の上限と下限の範囲でF
1(x
1)≧0となる式で,パラメータβ
1は回帰で推計せずに自身で決定し,回帰の前にF
1(x
1,β
1)の値を計算しておいてもよい。F
k(x
k,β
k)は,使用するx
kの上限と下限の範囲でF
k(x
k,β
k)≧0となる式で,β
kはF
kパラメータのベクトル。上記F
k(x
k,β
k)のx
kでの偏微分は,F
k′(x
k,β
k)と簡潔に表してある。
[2]
記憶装置から,T組の推計された(数38)を読み出して,1番からT番までのT組の(数38)について,各1個以上,総数でM個(当然M≧T)の
(数38)を満たすようなx
1,…,x
nの値を計算により求め,
そのx
1,…,x
nを(数38)とf
k(x
k)に代入し計算して,
F
k(x
k,β
k)の値と,
F
k′(x
k,β
k)の値と,
f
k(x
k)の値と,
f
k′(x
k)の値と,
を算出し,それを請求項2の計算装置に送信し,
[3]
受信をした請求項2の計算装置において,F
k(x
k,β
k)の値と,F
k′(x
k,β
k)の値と,f
k(x
k)の値と,f
k′(x
k)の値と,ユーザーが決めたuの値とを,用いて請求項2の(数36)ないし(数37)を完成させて,実施する。ただし,F
k′(x
k)を(数36)ないし(数37)のP
kとして使用し,請求項2を実施する。この請求項2の実施により生成されたg
k(u)をもって,効用関数のg
k(u)とする。[3]終わり。
以上の[1],[2],[3]の処理で,効用関数(数34)ないし(数35)をデータから生成する計算装置。
ただし,(数38)のような回帰式(いわゆる線形的な非線形回帰式)が推奨であるが,発明の本質ではなく,似たような別の回帰式が簡単に見つかりそうなので,類似の式も含む。発明のポイントは,等高線をなすデータに1つ1つ回帰をするだけで,[1]にあるf
k(x
k)の決定と,[3]で行う請求項2の実施に必要な値と,の両方が揃うという一石二鳥な所と,
生じた乖離を請求項2のg
k(u)の生成技術で補正するという,
図5に示した原理をもとに実現した技術である。
【請求項4】
請求項3の計算装置において,入力されるx1,…,xnのデータによっては,不正な効用関数が生成されることがある。この不正な効用関数を検知,修正する以下の[a]と[b]を満たす処理装置を追加装備した計算装置。
[a] 請求項3の[1]におけるM個のx1,…,xnを決定するときに,このn個の変数のうち,n-1個の変数の値を,すべて共通にして,残りの1個の変数だけを異なる値になるように決定する。
[b] 請求項3の(数38)の被説明変数F1(x1)の数式として,
[数39]F1(x1)/F1′(x1)=αx1, (α≠0)
となるようなF1(x1)を使用する。(数39)の例としては,F1(x1)=x1
a(a≠0)があるが,F1(x1)=lоgx1も,近似や誤差を認めれば同等の性質をもちうる。
【発明の詳細な説明】
【技術分野】
【0001】
数理最適化,人工知能
【背景技術】
【0002】
x1,x2で第1財と第2財の消費量,uで人が感じる効用を表すと,効用関数はu=f(x1,x2)と表される。p1,p2を各財の価格とすると,費用はp1x1+p2x2である。経済学では,目標として実現したいuをu0に設定し最小化問題「minx1x2 p1x1+p2x2,s.t f(x1,x2)-u0=0」をソルバーで解いて,最適なx1,x2を求める。具体的な効用関数の式としてはu=x1+x2,u=logx1+logx2,u=x1
0.7x2
0.3のようなものがあり,凸であると望ましい。ところが,凸な関数は一般的な定義は明瞭であるが,具体的に式を示そうとする案外難しく,数式が複雑でトラクタブルでなかったり,2変数のみで多変数化ができないものになりがちである。
【0003】
上の問題を解決した多変数化できるトラクタブルな効用関数の発明が(特許文献1)である。その効用関数は,非線形,多変数,凸,かつ,関数の一部を観察データから生成可能という特徴を備えていた。定式化としては,u=x1
0.8+x2
0.9という普通の凸関数と似ているが,その係数にg1(u)とg2(u)を充てた
[数1]u=g1(u)x1
0.8+g2(u)x2
0.9,ただしg1,g2は正値のuの非増加関数
という陰関数となっている。
【0004】
(数1)を更に分かり易くするために,具体例を示すと,g1(u)=1/u1.1,g2(u)=1/u1.3と特定化して,
[数2]u=(1/u1.1)x1
0.8+(1/u1.3)x2
0.9
が具体例となる。(数2)は,代数的にuについて解けないので,u=~の形で関数を表現できない。しかし,(数2)はuの正値の実数解は1つしかない。そのuの正値の値をコンピュータで計算することで,あたかも関数のように使うことができる。そして,u=1の等高線は,1=x1
0.8+x2
0.9となり,(x1,x2)平面上に描いた等高線は,原点に対して凸になることが確認できる。(数2)は,最適化に必要な性質である凸性を備えるのである。更に,(数2)は陰関数であるが,右辺を文字列としてみると,x1とx2の足算でつなげた構造であるので,第3の変数としてx3を追加するには,文字列の処理としてはx3の項を追加すれば済む。このため,多変数化が容易である。
【0005】
更に,(
図1)を使って示す方法で,観察データから(数1)のg
1(u)とg
2(u)を生成できた。その方法では,まず,ユーザーは,(
図1)のA図を自分で用意する。A図では(x
1,x
2)平面上に●1から●5の点を自由に指定し,その●点を通過する接線(この接線は数理最適化でいう「線形制約」に相当する)も図の点線のように指定する。そして,発明を実施すると,指定した●1から●5が最適点になるような(数1)が生成できる。その生成された関数がB図である。B図には,原点に対して凸な曲線が見えるが,それら曲線は(数1)で描画した等高線群である。これら等高線群は,原点に対して凸であり,また,右上方にある等高線ほど高いuを表す。uを高めていくと,最適点が●1から●5へとS字型に推移していることが確認できよう。B図に示された●1から●5へ至る最適点の経路は直線ではなく,●群の列のように大きくうねったS字型となっているのが分かる。
【0006】
手順としては,A図からB図を作る為には,途中でC図とD図を通過しなければならない。A図で指定したとおりに●1から●5を最適点として実現するためには,(数1)のg1(u)とg2(u)の値が適切である必要がある。A図の●1~●5を最適点として実現するために必要なg1(u)とg2(u)がとるべき値をG1(u)とG2(u)とする。このG1(u)とG2(u)の値が,C図とD図の●1~●5に示されている。例えば,A図で●1が最適点となるには,u≒2.8のときは,g1≒40,g2≒31でなくてはならないことがC図とD図の●1のG1軸,G2軸の座標から分かる。そして,C図とD図の点線は,●群へのg1(u)とg2(u)の回帰線である。●1から●5は,いずれも,左上から右下へと並んでいることから,●への回帰等により生成されるg1(u)とg2(u)の数式もuについて非増加的な数式となる。具体的には,「g1(u)=115.5-26.4u+2.4u2-0.08u3―u4-54.9u-1」と「g2(u)=96.3-39.8u+7.3u2-0.59u3+0.02u4
」という多項式である。(数1)のg1とg2に,この2つ具体化した式を代入した式が完成した効用関数である。
【0007】
なおuは約2.1<u<約12.1の範囲までである。この2つの具体化した式では,共にuの高次の多項式を使ってあるが,これはプレゼン用にB図のような大きくうねったS字型の最適点●群を出すために,高次の多項式を使ったものであり,本当はもっと簡単な式でも十分である。
【0008】
上記の技術は,多変数でも成功し,実際の家計調査のデータから生成した48変数の効用関数が(非特許文献1)に公刊されている。
【0009】
しかし,不正な関数が生成される例が(
図2)である。本発明の効用関数は陰関数であるために,関数の値が複素数しかない式や,関数の値が複数ある式などが生成されてしまうことがある。
【0010】
数学的に不正となるケースを示すために,効用関数を「u=g1(u)x1
0.5+g2(u)×2x2
0.9」へとA図のデータはそのまま,数式だけを変更する。(数1)と比べるとx1の指数が0.8乗から0.5乗へと低下しており限界効用の逓減度を強めてある。このx1への変更による値の低下を補うために,操作的な都合でx2には2を掛けて調整してある。この関数をもとに特許を実施して,C図とD図を計算すると,C図では●1から●5は完全に減少的な並びとなっている。しかし,D図では●2から●3にかけて,上昇的な並びになっているのが確認できる。この増加的な●2と●3の位置関係を回帰式がしっかりと捉えた為に,生成されたg2(u)のグラフは,D図の点線に示されるように,●2から●3にかけて増加関数になっており,●5の左側でも増加関数となってしまった箇所が見える。
【0011】
B図をみると,B図の左側のところで等高線群が交点を持っているのが見える。この交点ではu=f(x1,x2)の値が複数あり,関数になっていない。本発明の効用関数は,u=~のようにuについて解かれた式ではなく,uについて解けない陰関数であるために,uの正値の実数解が複数できるような不正な効用関数ができてしまうことがある。なお,B図の●5の点の位置と,その近傍を通る等高線の位置関係も不正である。この場合,関数としては使用できない。これは不正な効用関数であるといえる。
【0012】
このD図のようにg
1やg
2がとるべき値を示す●1から●5の並びが増加的な部分を持ちえることは(特許文献1)でも指摘されていた。この問題への対策方法は2つある。第1の方法は,x
1の指数である0.5を0.8へと大きくして,凸関数の等高線が全体としてフラットになるにように変更すると●3の位置が下がって,整然と減少的に並ぶようになることが多い。第2の方法は,●3のような上昇点を修正せずに,g
2(u)の回帰式にパラメータ制約を追加して,強制的に右下がりのg
2(u)を作る方法もある。実際,(
図2)のD図の回帰曲線は,高次の多項式を使って意図的に「過学習」をさせて右上がりの部分をもつ曲線を作ったものであり,g
2(u)=αu
-βのような簡単な式を使えば,フィットは悪くなるが,右下がりの奇麗な曲線が得られる。
【0013】
C図とD図の●1から●5が,奇麗に右下がりに並ばない場合であっても(0012)のような対処ができるので,回避できることが多い。しかし,そのような対処をしない場合,B図の例のように,不正な効用関数となってしまう。
【0014】
以上が,先行技術(特許文献1)であるが,この技術には,まだ不満足な所がある。(数1)のうちg
1(u)とg
2(u)はデータから生成できたが,x
1
0.8,x
2
0.9の部分は,ユーザーが自身で決めていた所である。(
図1)のA図からB図が生成できるが,B図の●の位置はデータから生成できるが,B図の凸の等高線の曲がり具合については,(数1)のx
1
0.8,x
2
0.9指数部分で決定されおり,この指数の値は,ユーザーが自分で決めた「ハイパーパラメータ」である。そして,このユーザーが決めた0.8,0.9という指数部分に依拠して,C図,D図のG
1,G
2の●点の高さも決定されるのである。
【0015】
ハイパーパラメータであっても,用途によっては特に問題は生じない。ゲームでx1,x2のステータスから,ダメージuを計算する場合には,設計者がuが最大になる最適なx1とx2を自分で決めることができるからである。金融のポートフォリオでもx1,x2の属性から資産のスコアを算出するにしても,結局のところスコアは,ユーザーの価値観を反映した数式が作れればよいのである。(特許文献1)は,回帰の手法を使ってはいるが,統計解析のように,自然界についての人の関わらないデータから真のパラメータを推計するようなものではなく,数理最適化の目的関数や制約条件に入れる数式を自分の意図に合わせて作るためのものである。
【0016】
しかし,ハイパーパラメータを極限まで減らして,効用関数全体をデータから生成できれば,更に,応用の余地が広がるだろう。
【先行技術文献】
【特許文献】
【0017】
【特許文献1】特開2020-038607
【特許文献2】特願2020-043546
【0018】
【非特許文献1】「The Income-Demand Curve: Implicit Function and Data Analysis Methods」,19巻1号,第51-66頁,2021年,Journal of quantitative economics誌掲載,the Indian Econometric Society刊行
【発明の概要】
【0019】
本発明はu=f(x1,x2)という関係が想定される(u,x1,x2)の観察データから,
[数3] u=g1(u)f1(x1)+g2(u)f2(x2) ただし,f1(x1)とf2(x2)は正値の関数,g1(u)とg2(u)は正値の非増加関数
を一般形とする数式を生成する方法の発明である。(数3)は,請求項1の(数34)である。
【0020】
背景技術で示した(特許文献1)や(非特許文献1)では,g1(u)とg2(u)だけが生成でき,f1(x1)とf2(x2)の式はユーザーが決めていた。本発明ではg1(u)とg2(u)だけでなく,f1(x1)とf2(x2)も観察データから生成でき,(数3)の全ての項をデータから生成することが実現する。なお,特許明細での説明はx1とx2の2変数で行うが,発明は全て,x1,…,xnのn変数で可能である。観察データが凸に並んでいれば,生成される(数3)も凸にもなり,凸最適化もできる。
【0021】
次に,発明の概要を図で示す。
【0022】
ユーザーはu=f(x
1,x
2)が想定される(u,x
1,x
2)のデータを加工して,uの値が等しい4本の等高線データをつくり(x
1,x
2)平面にプロットする。このプロットが(
図3)のA図の24個の*であり,uが等しいことを示すために*を点線で結んで,1番から4番までラベルを付ける。これが等高線データである。
【0023】
そして,A図の等高線データに本発明を実施すると,D図のような等高線をもつ1本の効用関数が生成できる。D図の点線は発明により生成したu=f(x1,x2)の等高線であり,*印とピッタリ合っているが,拡大して見ると,線が少しズレているのが分かろう。この4つの等高線は,4つの独立した関数ではなく,一般形を(数3)とする1本の効用関数u=f(x1,x2)から描かれたものであり,D図の等高線と等高線の間にも,連続的に等高線が存在している。このようにA図のようなユーザーが用意した等高線データから,それにフィットするu=f(x1,x2)という効用関数を生成する方法が本発明である。
【0024】
なお,(数3)は,先行の(特許文献1)の請求項である(数1)を,数学的に一般化したものであり,(特許文献1)の明細で「xi
αi,αi>0,i=1,2」と特定化されていた項を,一般化してfi(xi)という項に拡張させたものである。本発明では,f1(x1)とf2(x2)の式のデータからの生成でき,しかも,そこで使用するf1(x1)とf2(x2)の式は,正値の関数ならどのような式でも試すことができる。
【0025】
なお,(数3)の両辺をuで割って,gi(u)の中に1/uを含めるものとして,
[数4] 1=g1(u)f1(x1)+g2(u)f2(x2),f1(x1)とf2(x2)は正値の関数,g1(u)とg2(u)は正値の減少関数
としてもよい。(数3)と(数4)は同値ではないが,数学的な対応は明確であり,実用上は同じである。ただし,数値計算や回帰のときには,(数3)と(数4)の2種を使い分けると作業量やバグが減る。この2種類の式が使えたことは発明の便利なポイントでもある。この発明は,実施が容易であることも重要であり,誰でも,苦痛の少ない形で楽しく発明を実施するためには,(数3)と(数4)の両方が使えることは,ノウハウにはせずに明細に書いた方が良さそうである。
【0026】
ざっくりと言うと,f1,f2の生成には(数3)が適しており,g1,g2の生成には(数4)が適しているようである。
【0027】
そこで,この明細書では,後述の4段階の方法における,第1段階において,等高線式を推計してf1(x1),f2(x2)を決定するまでは(数3)を使用する。しかし,第3段階と第4段階でg1(u),g2(u)を決定するときは,(数4)を使用して示してある。
【0028】
なお,その理由には,(数4)は,回帰において推計するパラメータがα×βのように積の形で入ることがあり回帰が難しいが(数3)では積の形にならないので簡単であるという理由がある。また,他の理由としては,(数4)の方がg1とg2の値を決定するときには,uを使わずに値が計算できるという理由などがある。
【0029】
(特許文献1)では,ハイパーパラメータであったf1(x1),f2(x1)の部分を,ユーザーがデータへの回帰を使って生成できるようになったので,f1(x1)=α1x1
0.5+α2x1+α3x1
1.5+α4x1
-1のような,複雑な式をデータから生成して使えるようになる。この発明では,fi(xi)に必要な条件は,正値であることのみであり,この自由さを最大限に生かして,自分で思いついた式を次々と試し,フリーハンドで描いた等高線や観察データから効用関数を生成できるようになる。
【0030】
【発明が解決しようとする課題】
【0031】
u=f(x
1,x
2)という関係が想定される(u,x
1,x
2)の観察データに良好にフィットする(数3)を生成するのが課題である。このとき,(1)f
1(x
1)とf
2(x
2)をどうすればデータから生成できるか?(1)(
図2)で示したような不正な効用関数が生成される場合に対して,どのような処理をするか?という(1)と(2)のような課題が生じる。また,使いやすさや,バグを減らすといった商品としての魅力も向上させる必要がある。
【0032】
最初に試す解決方法は,数学ソフトを使った正攻法がある。例えば(
図1)で使用した数式は,u=(β
1+β
2u+β
3u
2+β
4u
-1)x
1
β5+(β
6+β
7u+β
8u
2+β
9u
3)x
2
β10と表せるので,これをモデルとして,数学ソフトのcurvefitなどの回帰コマンドに入力して,β
1からβ
10を求めればよい。しかし,実際にやってみると,自分でフリーハンドで作ったデータについては,長時間の処理の末に失敗することが多く,たとえ計算に成功しても,関数の値が元の値と全く違うために,実用にならない。
【課題を解決するための手段】
【0033】
そこで,関数の生成を成功させるべく,さまざまな解析や失敗の原因などを試行錯誤した。その結果,等高線を使った4段階の生成方法を開発した。
【0034】
以下,(数3)を生成する手段を4段階で説明するが(数3)を生成する方法よりも,(数3)自体の構造を詳しく学んである方が,読者には見通しがよい。そこで,読者は(0075)から(0098)を先に読んで,分解図,および,分解図ベース発明の構造を先に読む方がよいだろう。こちらを先に読むと,(0035)以降の詳細な説明,あるいは,(実施例1)の見通しが良くなるはずである。
【0035】
この4段階の方法では,まず,第1段階において,
図3のように,(u,x
1,x
2)のデータをuでグループ化して,uの等高線データへと加工する。そして,適切な回帰式を用意して各等高線データへ回帰をする。推計された回帰式(等高線式と呼ぶ)の平均をとるような要領でf
1(x
1)とf
2(x
2)を決定する。第2段階では,ユーザーが各等高線式上の点(最適点●と呼ぶ)を1つ以上指定する。そして,その最適点でにおける接線を等高線式から導出する。第3段階では,第2段階で指定した最適点●と接線が,最適点になるようなg
1とg
2がとるべき値(「理想値G
1とG
2」)を算出する。そして(
図3)のE図とF図を描く。第4段階では,第3段階で作った理想値G
1とG
2に対してg
1(u)とg
2(u)の回帰式を適切に決定して,回帰を行いg
1(u)とg
2(u)を生成する。以上により,fとgの両方が生成されて(数3)全体がデータから生成されることが実現する。
【0036】
以下では,第1段階~第4段階の処理内容を,抽象的に,少し詳しく説明する。
請求項との対応は,
第1段階(0037)~(0048)が請求項3の[1],
第2段階(0049)~(0049)が請求項3の[2],
第3段階,第4段階(0050)~(0072)が請求項2と請求項3の[3]
である。
【0037】
第1段階では,(
図3)のA図のような等高線データをプロットし,各等高線に回帰をして,B図のグラフで示されるような4本の等高線式を生成する。
【0038】
ユーザーはu=f(x
1,x
2)が想定される(u,x
1,x
2)のデータを用意し,4つのuの値を選び出し,そのuの値を近傍の値をもつ(x
1,x
2)を*でプロットして点線で結んでグループ化して表示して(
図3)のA図を描く。このA図の1番~4番の点線で結ばれた*が等高線データである。等高線データとは,等高線が想定できるデータのことである。以下,1番~4番の等高線データのuの値は,u
1~u
4で表し,u
1<u
2<u
3<u
4であるとする。なお,この発明では,観察されたuの絶対的な値は重要でなく,大小関係だけが使用される。したがって,u
1~u
4は観察データで値が分かっている場合でも,その値は直接は使用せず,大小関係をだけを使用し,計算式におけるuの値は一定のルールのもとで都合よく決めることを推奨している。
【0039】
次にA図のデータに回帰をしてB図を生成する。B図の生成では,A図の●を純粋に(x1,x2)平面上の4本の曲線とみなければならない。そして,自身で試行錯誤して回帰式(例えば,x2=α-β1x1
β2)を使って回帰を4つの等高線に対して別個に成功させる。この4組の回帰式が「等高線式」である。また,被説明変数となっているx2を「軸となる変数」,x2の関数を「軸となる関数」とよぶことにする。B図のドット線は,等高線式を使って描画した曲線である。ただし,B図を拡大して見ないとドット線と点線が重なっているので注意すること。
【0040】
このとき4本の等高線式は,関数形は共通でパラメータの値だけが異なる式となるもので,かつ,線形的な非線形回帰を使うようにするべきである。これにより等高線式を推計すれば,そこから変数変換などの簡単な処理で,f1(x1)とf2(x2)を決定できるようになる。具体的に,あるべき等高線式の一般的に関数形を示すと,
[数5] x2=β0-F1(x1,β1),
ただしF1(x1,β1)は正値,かつ,F1(0,β1)=0である。ただし,経済理論上は,x2については経済学の価値尺度財の考え方等を理由として,x2を自身で決めた関数F2(x2)で変換することができるので,(数5)よりも,
[数6] F2(x2)=β0-F1(x1,β1), ただしFi(xi,βi)は正値,かつ,Fi(0,β1)=0
という回帰式を使うべきである。(数5),(数6)は請求項3の(数38)を2変数で実施するものであるが,請求項3では,x2でなくx1を被説明変数(軸となる変数)として記載している。また,(数6)で,Fi(0,β1)=0という条件を付けているが,これは(数6)の回帰式に定数項β0をつけている以上は,Fi(0,β1)の式に定数項が含まれると,1つの回帰式に定数項が2つあることになるので,Fi(0,β1)=0を条件として付したが,迂回できると困るので請求項3においては,(数38)としてFi(0,βi)=0の条件は付けていない。1つの回帰式に2個以上の定数項が含まれるようなものは,適切に1つにされるものとして,Fiが定義されればよい。
【0041】
(数6)の左辺のF2(x2)の関数の式は自分で決めて,回帰の前に計算しておいてよい。これは理論上,ある1本の等高線を実現するF1(x1),F2(x2)の関数形の組合せは無数に存在するが,一方の関数形を定めると,他の関数形は全て1意に定まるという経済学におけるワルラス風の論理により,F1(x1)とF2(x2)の内,どれか1つは自分で決める必要がある為である。ただし,厳密な証明は私もしておらず,実際にプログラムを書いて色々と試したり,分解図で考えた末に,こうなったというのが経緯である。
【0042】
(数6)を一般形とする等高線式を使って回帰をして,等高線データに良好にフィットする(数6)が推計されたならば,追加的な回帰などをすることなく,変数変換などの数式処理だけで(数3)が作れるであろう。このような(数3)との対応の良い式を等高線式に採用する。
【0043】
なお,悪い等高線式の例は,x1,x2,x3の3財のケースで「x2=β0+β1x1+x1
β3x3
0.5+x1
0.3x3
β4」のような複雑な式を使うものであり,このようなx1とx3の積を含んだ式でβを推計して等高線への回帰を成功させても,その式を(数3)に落とし込むのは,簡単にはできないだろうから不可能ではないだろうけど,難しいだろうから非推奨である。
【0044】
また,(数6)の定数項のβ0は,その等高線のuの値として理論上は解釈できる。これは便利な性質であり,等高線データの効用水準u1~u4の値が観察できない場合でも,理論上のuの値がデータから推計されるのである。しかも,u1~u4の値が観察されている場合であっても,観察された値ではなく,β0を使う方が作図やデバッグが楽なのである。
【0045】
また,(数6)において,変数変換に使用するF2(x2)の関数としては,「F2/F2′=ax2,(a>0の定数)となるような関数」,つまり,変化率の逆数がx2の定数項のない1次式となる関数を使用すると,後述の請求項4の便利な公式が使えるようになる。ただし,「F2/F2′=ax2,(a>0の定数)となるような関数」を使うことを推奨したり,「最良の実施形態」とするものではない。この形のF2を使うと分かり易い,あるいは,判断がしやすい公式である請求項4が使えるというだけである。
【0046】
回帰式の具体例としては,(数6)を,パラメータβ1=(β1,β2,β3,β4)として,
[数7]2x2
0.8=β0-(β1x1
0.5+β2x1+β3x1
1.5+β4x1
-1)
などと多項式を使って特定化する。ただし,右辺のβ1x1
0.5+β2x1+β3x1
1.5+β4x1
-1の値はが分析するx1の範囲で正値となるようなβでなければならない。上式は,u=g1(u)f1(x1)+g2(u)f2(x2)に対応させると,g1(u)とg2(u)を定数1としたものに対応しているのが確認できる。
【0047】
第1段階の最後に,4つの等高線式からf1(x1)を生成する。B図の4本の等高線式をF2(x2)=β0-F1(x1,β1)と一般的に表すと,B図にある4本の等高線は,関数形は共通だが,パラメータβ1の値は異なる(なおβ0の値も異なる)。そこでf1(x1)は,関数形は等高線式と同じF1を採用するが,パラメータの値については4つのβ1の平均値を使用する。具体例で言い換えると(数6)の等高線式の多項式のパラメータ(β1,β2,β3,β4)が,B図の4本の等高線について(1,1,1,1),(2,2,2,2),(3,3,3,3),(4,4,4,4)と推計されていたら,f1(x1)には,f1(x1)=2.5x1
0.5+2.5x1+2.5x1
1.5+2.5x1
-1を使うということである。いわゆる分割回帰のようなものである。当然に,この平均値で作ったf1(x1)からは,B図の1番や4番の等高線とは大きく乖離した等高線ができてしまう。そこで,この乖離をg1(u)とg2(u)が補正することになるのである。
【0048】
f2(x2)については,軸となる変数であるから,関数形・パラメータともに自分で決めてより。よって,単純にf2(x2)=F2(x2)=x2とすればよい。以上より,(数3)のu=g1(u)f1(x1)+g2(u)f2(x2)のうち,f1(x1)とf2(x2)の部分が生成された。これで第1段階は完了である。
【0049】
第2段階では,B図からC図を作る。C図に見える4本の曲線はB図にある等高線式のグラフを転記したものである。ユーザーは,C図にある●1~●4のように等高線上の点を自分で選ぶ。この等高線式上の点を「最適点●1」のように呼ぶ。そして,更に,その最適点●1~●4での接線の傾きを計算する。もちろん,「真の等高線」は見えないから,推計された等高線での接線の傾きを使用する。
最適点●1を通る接線の式は,●1の座標を記号x
1,x
2とする定数,接線の式の縦軸変数と横軸変数を記号z
1,z
2とする変数で表現すると,
F
1′(x
1)×(z
1-x
1)+F
2′(x
2)×(z
2-x
2)=β
0
という1次式となる。よって,その傾きはF
1′(x
1)/F
2′(x
2)である。こうしてB図から作成したC図の●1~●4とその接線は,(
図1)のA図に相当する図である。これで最適点●と接線が完成し,C図の4つの●と4つの接線を描画すれば第2段階は完了である。また,上記の接線の式は,
P
1x
1+P
2x
2=M, (P
1,P
2:x
1とx
2の価格,M:支出額)
という,数理最適化や経済学における費用式や予算制約式と,最適点では一致する。接線と費用式が一致するから,F
1′(x
1)をP
1と読み替え,F
2′(x
2)をP
2と読み替えることができ,請求項2を実施することを可能とする。なお,Mは,β
0+F
1′(x
1)z
1+F2′(x
2)z
2と読み替えること。
【0050】
第3段階は,最適点●1~●4に対応する理想値G
1とG
2を算出する。そして,それを図にして,E図とF図を生成する段階である。(
図3)のE図とF図には,C図で決めた最適点●1~●4を実現するのに必要なg
1(u)とg
2(u)の理想値であるG
1とG
2が理想値●1~●4として,描画されている。このG
1とG
2は,g
1とg
2がこの値であれば,最適点●1~●4が最適点としてピッタリと実現できるという理想のg
1とg
2の値である。このG
1とG
2は請求項2で計算されて,E図とF図の縦軸にとって描画する。
【0051】
E図とF図の横軸はuであり,C図で決めた最適点●1~●4における効用値uの値を指定する(詳細は後述)。こうして,(u,G1),(u,G2),平面に描かれたG1とG2理想値●1~●4の並びは,g1(u)とg2(u)のあるべき形を図解したものになる。
【0052】
以下,第3段階を詳細に説明する。請求項2の実施の詳細を説明しており,(0053)~(0057)では(特許文献1)と類似の方法を説明するが,本発明では,これよりも良いと思う方法として,(0058)~(0060)を推奨している。
【0053】
理想値G1とG2の計算式は,請求項2の(数36)である数式
[数8]G1=u/[f1(x1)+{f1′(x1)/f2′(x2)}×{P2/P1}×f2(x2)],および,G2=u/[f1(x1)+{f2′(x2)/f1′(x1)}×{P1/P2}×f1(x1)]
である。
【0054】
C図の最適点●1~●4の4つの座標(x1,x2)について,F1′(x1),F2′(x2),f1′(x1),f2′(x2),f1(x1),f2(x2)を算出する。そして,これらの内,F1′(x1)をP1,F2′(x2)をP2とする。そして,これらP1,P2, f1′(x1),f2′(x2),f1(x1),f2(x2)の値を(数8)の分子に代入する。
【0055】
(数8)の分母にあるuには,理論上は最適点●1~●4におけるuの値であるu1~u4を代入するが,経済学的にはuの値は絶対値には意味がなく,設定する4つのuの値の大小関係のみが意味をもつので,u1<u2<u3<u4という大小関係を守り,かつ,理想値G1とG2の値がuについて(なるべく)減少的なるように自分でu1~u4の値を決める必要がある。たとえu1~u4の値が観察データで分かっている場合であっても,そうする必要がある。
【0056】
自分でu1からu4の値を決めるとき,G1とG2は,uに比例して大きくなるから,●1から●4におけるG1とG2が減少的に並ぶためには,u1からu4にかけてのuの増分は小さい方が望ましい。このため,u1~u4の決定では,例えば,観察されたu1~u4を0.0001乗することでu1<…<u4を維持しながら,G1とG2がuについて(なるべく)大きくならないようにするという処理がベストとなる。しかし,0.0001乗という処理は,u1=u2=u3=u4を使っているのと大差がない。
【0057】
(特許文献1)では,理想値G1とG2の算出には,上記の方法が使ってあり,uの値の決め方次第でフィットを改善することできるので,いろいろなノウハウ的なポイントもある。しかしながら,本発明で推奨する理想値G1とG2の算出方法は,(特許文献1)のものよりも簡単な,以下のような方法である。
【0058】
それは,u1~u4の値には,第1段階で推計した4つの等高線式(数6)のβ0の値を使というものである。等高線式のβ0をuとして使うと,B図,C図,D図,E図,F図について,すべて共通のuの値で通り,最終的に完成した効用関数の等高線を描画するときのuとしてβ0を指定すると,元の等高線式と効用関数の等高線が,座標変換なしに重ねて描画できる。このためB図とD図が対応した描画が簡単にできる。こうすることで,元の等高線式と,完成した効用関数の等高線を重ねることで,フィットの良し悪しを簡単に視覚的にみることができる。しかも,バグ取りも大幅に楽になる。やる気の乏しいユーザーでも頑張れるようになり,商品価値がアップするのである。
【0059】
そこで,uの値にβ0の値を,そのまま使えるようにする為に,第4段階におけるG1とG2の算出に際しては,効用関数は(数3)の代わりに,それと同等な(数4)を想定し,(数4)のもとで,理想値G1とG2を計算する式である請求項2の(数37)である,
[数9]G1=1/[f1(x1)+{f1′(x1)/f2′(x2)}×{P2/P1}×f2(x2)],および,G2=1/[f1(x1)+{f2′(x2)/f1′(x1)}×{P1/P2}×f1(x1)]
を使用する。(数9)にはuが含まれておらず,分子が1となっている。よって,uを全く使わずに理想値G1,G2を計算できる。これを使ってuを使わずにG1とG2を計算し,それをE図とF図の縦軸座標とし,横軸のuの座標にはβ0を使ってE図とF図を完成させる。(数8)と(数9)には数学的には些末な違いしかない。(数8)と(数9)の導出は,(0099)~(0104)に詳説したので,それを見れば,両者の違いがどこから生じるかも分かるはずである。
【0060】
以上の要領で,理想値G1とG2を計算し,u1~u4の値を決定し,E図とF図を描いたら,第3段階は完成である。
【0061】
第4段階では,E図とF図に対して,g1とg2の回帰式を決めて,G1からuへの回帰と,G2からuへの回帰と,を実行することで,g1とg2を生成する。以下では,そのg1とg2の生成過程を示す。
【0062】
E図とF図のうち,F図を先に見ると,●1から●4が,奇麗に右下がりに並んでいるのが見える。このため,g2(u)=α21u-α22という簡単な回帰式が良好にフィットし,F図の点線のような奇麗な正値の右下がりの関数が生成される。このように●1から●4が奇麗に右下がりに生成されれば,g2(u)は,簡単に非増加関数が生成される。
【0063】
次に,E図を見ると,●1~●3は右下がりに並ぶが,●4の位置が●1より高く,●1から●4の並びが右下がりでなく,むしろU字型である。これは,(
図2)のD図で見た失敗例と同じものであり,対処を誤ると,(
図2)のB図のような不正な効用関数が生成される。これへの対処として(
図2)の発明の時には,f
1(x
1)=x
1
0.8の0.8の部分は,自分で自由に決めていたので,0.8を0.9に変更するなどして,パラメータの値を等高線がフラットになる方向に変更するという対処がとれた。この対処をすると●4の位置が下がって,●1~●4が右下がりに並ぶように改善されることが多かった。しかし,今回の発明では,f
1(x
1)は,観察データにピッタリに合う位に等高線式のパラメータを推計した上で,C図の接線や,f
1(x
1)が決定されている。これらを無視して,勝手にf
1(x
1)のパラメータの値を変更する訳にはいかない。これを際限なく認めると,fをデータから決めるという発明の本来の目的が失われてくる。
【0064】
そこで,E図の●4の位置を下げるべく,ユーザーは,βの平均でなく,βの加重平均をとってf1を作る。あるいは,C図の●4の座標を等高線に沿って右方向に変更してみる,あるいは,F1とF2の関数形を変えてみるなどの試行錯誤をする。しかし,こうした試行錯誤では,●4の位置が上がるか下がるかは,予想が難しいのでプログラミング作業を伴う試行錯誤となり,この試行錯誤は,いつ終わるかわからず,しかも,かなり疲れる作業となる。
【0065】
請求項4は,このE図のようにGi(u)の並びが良好でない時の対処方法に関する発明である。この対処法は,C図の生成の段階,つまり第2段階まで遡って行う。C図を見ると,最適点●1~●4が縦に一直線に指定されているのが見える。つまり,●1~●4のx1座標は共通である。請求項2を実施する上ではx1は共通に指定する必要はなく,ユーザーが最適点として実現したい座標を指定すればよい。しかし,(1)C図のようにx1を共通にしてx2の小さいものから順に●1~●4をとる。
(2)軸となる変数であるF2(x2)に関してF2/F2′=ax2の条件を満たすF2(x2,β)を使用する(これは(0045)でも言及され(0106)~(0114)で詳説されているので参照のこと)。この(1)と(2)の条件を満たしていると,C図に描かれた接線の4つの横軸切片の値の大小関係が,第4段階で計算されるG1の大小関係と一致し,かつ,そのG1の大小関係は,F1(x1)の関数形にどんな数式を使っても変わらないという不可能性定理が成立する。具体的には,C図の4本の接線の横軸切片を拡大してじっくりと見ると,切片の並びが1234ではなく,4123の順になっているのが見える。この4123という順が,E図の●1~●4の大小関係と一致している。E図を見れば●の高さが4123の順序になっているのが確認できよう。そして,この場合のE図の4123という大小関係は,F1(x1),f1(x1)の関数形をどんな式に変更しても変えることができない。別の言い方をすると,C図において横軸切片の順序の入れ替わりが発見されたら,E図の●1~●4の順序も入れ替わり,かつ,それは,F1(x1)の関数形を色々と試して改善するような処理は,資源の無駄の無限ループになる。請求項4を使えば,この関数形の試行錯誤が無駄だと事前に分かるので,無駄な計算努力を省ける。
【0066】
もしもC図で首尾よく横軸切片が1234に並んだとしたら,E図の●は1234という最も望ましい順序が実現し,かつ,ユーザーはf1(x1)の関数にどんな式を使っても順序は変わらない。そうなれば,そのようなC図が見いだされた段階で(数3)または(数4)の生成は成功したようなものである。つまり,請求項4の方法は,絶対に無理か,絶対に可能かのどちらかになる。これだったら,迷わないから,試行錯誤をしなくて済むの楽である。
【0067】
ただし,現実は,局所的には,このような逆転は,実際上は不可避のもので,例えばC図の等高線式を4本から400本へ増やす,あるいは,等高線式は4本のまま1つの等高線につき100個の●をとるなどして,C図の●の数を増やすと,●1から●400までの密集したE図が作られるが,この場合,400個の横軸座標は小刻みに大小関係の逆転が見つかるのは,むしろ普通である。しかし,全体としては右下がりのトレンドを持つので,g1の回帰で吸収されるので,非増加関数が生成されるのである。
【0068】
しかし,本例のE図の●4は,最小が望ましいものが,実際には最大になっている。このような逆転は,局所的なものではなく,大域的なものであり,回帰で吸収されず,むしろ,しっかりと捉えてしまう。よって,真面目に対処を検討しないと(
図2)と同じく不正な関数となる。最悪な対処としては,回帰式として,多項式を使うもので,フィットが良すぎてU字型のg
1(u)が生成され,(
図2)と同じ不正な関数が生じる。(
図2)のような不正な関数は避けなければならない。そこでの対策としては,以下の3つの修正方法があろう。これら下記の修正方法は「解決」というより「妥協」である。
【0069】
第1の修正は,A図のデータを変更するというものである。(0065)の含意として,A図の等高線の間隔が狭ければ狭いほど,C図での横軸切片の逆転は生じやすいといえる。つまり,ユーザーが選択した等高線の間隔が狭く密集していると,接線は互いに近いところを通過するので,僅かな傾きの違いでも交差が生じて切片の順序が入れ替わってしまう。よって,もしも,等高線の元データをユーザーが選べるのであれば,4番の等高線を,今よりも高いuの値に対応する等高線データを抽出することで,3番と4番の等高線の間隔を広くなるように準備段階でデータを工夫すべきである。C図の4番の等高線が図の位置よりも高い位置に横たわっていれば,4番の横軸切片の位置が右側にスライドして,横軸切片の順序が改善されるであろう。
【0070】
第2の修正は,C図を変更して,●4を等高線に沿って左右に移動させるような既存の等高線式をもとにC図の●の位置を変更したり,●の数を増減させることである。これによって,E図の●4の位置が下がるかは疑わしいが,多少は効果がある。ただし,C図でユーザーが決定する●1~●4の座標は,可能な4つの(x1,x2)座標の組合せは無数にあり,2変数でなく多変数になると更に,可能な組み合わせは増える。よって,アドバイスとしては,この修正方法を試すときには,現状の共通のx1を使った●1~●4のセットに,更に,x1を変更したセットを用意し,1セットで追加して●5~●8とする。共通のx1をもつ4つの●を1セットにして,セット単位で追加してゆく方が良さそうである。そして,その後に,E図を生成して,都合の悪い●をC図から削除して都合の良いものを残す。ただし,この方法は,各セットの4番の等高線上の●が総じて高い位置になり,実際にはE図の●4の位置は下がらないこともあるから過大な期待はできない。
【0071】
第3の修正は,E図でのg1(u)の回帰式に制約を追加するものである。回帰式をg1(u)=α11u-α12に,α12>0のようなパラメータ制約を付けて回帰を実施する。U字型に並んだ●データに,右下がり回帰式を用いるので,フィットが悪くなる。しかし,フィットを犠牲にしても,強制的に非増加関数となるように回帰をするのである。E図の点線は推計したg1(u)=α11u-α12のグラフである。点線を見ると●と点線は大きく乖離している。しかし,それでも点線は緩やかに右下がりになっており,非増加的なg1(u)が生成されていることが確認できる。g1(u)については,●との乖離が大きいが,これで妥協するのである。妥協すべき都合の良い理由として,E図に見える●1~●4の値は4.45~4.6という狭い範囲に集中するのに対して,F図の●1~●4の値は3~12とかなり大きい。よって,E図にある乖離の影響は小さいだろうから,g1(u)が増加関数にならなければ,全体としては,ベターな(数3)が生成できると予想ができるだろう。この第3の方法の長所は,ユーザーがE図の●の並びを目視して,目で見て,大体,成功するかどうか?どうやれば成功するか?の見当がつくことである。財の数が1000財のように増加しても,1000次元の描画不能な図ではなく,G1からG1000までの1000枚の2次元図となる。2次元図であれば,1000枚位は,簡単に目で確認できる。
【0072】
第4の修正は,B図である。B図では観察データに対して等高線式がピッタリフィットしている。しかし,もしも,B図のフィットが悪く,●と等高線に乖離がある場合,F1の関数形やパラメータを変更すれば,C図においては4つの●の座標と接線もF1の変化に応じて変化するから,これによりE図の●の並びが改善するかも知れない。残念ながら,現段階では,意図的にB図のフィットを悪くして,E図やF図を改善する方法については,十分に研究していない。本発明は,B図をしっかりフィットさせたケースが念頭に置いている。
【0073】
第4段階の最後に,D図を生成する。D図の*は観察データ,4本の実線はB図の等高線と同じもの,点線は完成した(数4)から生成した等高線を描画したものである。4本の点線は,1本の効用関数から生成した等高線であり,4本の別個の式から作ったものではない。第2段階で決定したf2(x2)と,第3段階で作ったf1(x1)と,第4段階で作ったg1(u),g2(u)を(数3)に沿って,組み合わせて,「u=g1(u)f1(x1)+g2(u)f2(u)」という1本の効用関数を完成させて,その,等高線を描画したものなのである。D図を拡大して見ると,実線と点線は,3番と4番で小さな乖離が見える。これがE図の妥協による乖離であろう。それでも,概ね,元の関数と似たような形の等高線を持った効用関数が生成されているのが分かる。
【0074】
以上で,第1段階~第4段階の抽象的な説明は終わり。
【0075】
次に,効用関数の分解図について説明する。
(0076)~(0082)が請求項1の手段
(0083)~(0098)が請求項3の手段
である。発明の経緯としては,分解図を原理として,それを実装して細部が作られたのではない。相互作用的に,どちらかというと細部が先にできて,分解図は,販売やマーケティングを考える中で後から出来たものである。しかし,今では,分解図を手段のように書いてしまった方が良さそうである。分かり易いければ,それが原理であると言ってしまえるからである。
【0076】
(
図4)は効用関数「分解図」である。(数3)は「u=g
1(u)f
1(x
1)+g
2(u)f
1(x
2)」という陰関数であり,どのような関数なのかイメージが難しい。この問題を克服するのが(
図4)の分解図である。この分解図を使うと,見通しが良くなり,発明の実用性が向上する。以下,(
図4)を説明する。
【0077】
効用関数「u=g1(u)f1(x1)+g2(u)f1(x2)」のf1とf2を変数としてみて,縦軸にf2,横軸にf1をとって,所与の一定のuについてグラフを書くと,第1象限の直線1のような直線となる。
【0078】
効用関数「u=g1(u)f1(x1)+g2(u)f1(x2)」のうち,f1(x1)だけを取り出して,第4象限にグラフを曲線6として描く。同様に,f2(x2)だけを取り出して,第2象限にグラフを曲線4として描く。
【0079】
直線1の上に,点3をとる。次に,点3の真左に点7をとり,点3の真下には点5をとる。そして,点7の真下,点5の真横にある点が点9である。点9は,点3のuの値を与える(x1,x2)座標を与えている。そして,点3を直線1に沿って,左上や右下方向に移動させると,点7,点5,点9が連動して移動する。このときの点9の軌跡が曲線8である。曲線8上の点の効用は,直線1の点3と同じであるから,曲線8は(数3)のuの等高線である。
【0080】
こうして,効用関数「u=g1(u)f1(x1)+g2(u)f1(x2)」は4枚の図に分解される。
【0081】
(
図4)の第1象限の直線2は,直線1よりもuの値が大きい場合の直線であり,直線1と直線2は交点がない。なぜならば,uの値が上昇すると,u=g
1(u)f
1+g
2(u)f
2のうちの右辺のuが上昇し,かつ,左辺はg
1′≦0,g
2′≦0であるから,直線1は一様に右シフトして直線2のようになる(ただし,厳密にはg
1′=0,g
2′=0のときはシフトしない。一様な右シフトには,シフトしないケースを含む。)。この一様な右シフトは一般的には非平行な一様なシフトであり,uの陰関数で実現している。そして,直線2についても第3象限に点9のような軌跡をとると,直線2に対応した等高線が曲線10のように描ける。この第3象限の曲線10と曲線8は,数学的に交点を持たないことが図から分かろう。交点を持たないから,第3象限の(x
1,x
2)平面上の1点をとると,uの値は1つに定まり,u=f(x
1,x
2)という関数のように使うことできる。
【0082】
以上で,発明の効用関数の分解図の基本は完成。
【0083】
つぎに,この分解図を生かして,効用関数を生成する方法を説明する。
【0084】
等高線データから,効用関数「u=g1(u)f1(x1)+g2(u)f1(x2)」を生成する発明の原理は,分解図を使って説明すると次のようになる。
【0085】
当初,(
図5)はF
1軸,F
2軸,x
1軸,x
2軸の4軸だけが描かれた白紙であるとする。そこにユーザーは観察された2本の等高線データを●と*のようにプロットする。(
図5)の●の並び,*の並びが,それぞれ等高線であると想定されている。
【0086】
次に,5つの●からなる等高線について,x2からx1への回帰を行う。回帰式は,x2=β0-F1(x1,β1)のような式で,パラメータβ1を回帰で求めることになるが,x2については理論上,変換が許される。
【0087】
そこで,x2を関数F2(x2)で値を適切に変換して,回帰式(以下,等高線式とよぶ)として,「F2(x2)=β0-F1(x1,β1)」を一般形とし,F2(x2)は回帰の前に計算しておいてよい。そして,β0,β1を推計する回帰を成功させ,回帰線を描くと曲線6(以下,等高線6)となる。
【0088】
この回帰に成功した等高線式について,F2(x2)のグラフを第2象限に曲線2として描く。F1(x1,β1)のグラフを第4象限に曲線5のように描く。
【0089】
更に,第1象限に直線3を描く。等高線式「F2(x2)=β0-F1(x1,β1)」において,F1=0のとき,F2=β0である。また,F2=0のとき,F1=β0である。よって,第1象限の直線3は,縦軸と横軸の切片をβ0とする傾き45度の直線として描く。
【0090】
これで,等高線6は,曲線2,直線3,曲線5に分解された。
【0091】
次に,もう1本の等高線データである。5つの*のデータについても,同じ回帰式を使って回帰を実行してβ0とβ1を推計する。それをもとに曲線11(以下,等高線11)を描画し,この曲線11を曲線2,直線8,曲線10に分解する。
【0092】
こうして,●と*の観察された2本の等高線データと整合的な曲線5と曲線10が得られた。この曲線5と曲線10は,(数3)におけるf1(x1)に相当し,本発明でデータから生成したいと思っている眼目である。
【0093】
しかし,当然,この曲線5と曲線10として示された2本のF1のグラフは,当然に,通常は大きく異なり,一致しないのが普通である。しかし,理論上は(数3)で使うf1(x1)は,すべての等高線に対して共通でなければならないから,F1(x1)として曲線5と曲線10の2本があるというのでは困ったことになる。
【0094】
そこで,曲線5と曲線10を元に,これらと平均的に共通な曲線を導出して,それをf
1(x
1)のグラフとする。このf
1(x
1)のグラフは,曲線5と曲線10の平均的な位置に描かれる(ただし,(
図5)には,f
1(x
1)のグラフは描いていない。自分で描いてください)。
【0095】
当然,曲線5と曲線10を平均してf1(x1)とすれば,f1(x1)から生成される等高線は,観察データである●や*から大きく乖離したものとなってしまう。そこで,平均化により生じた乖離を,直線3と直線8の傾きや切片を調整して吸収するのである。この直線3と直線8は(数3)ではuの陰関数で実現され,比較的自由に,そして等高線が交点を持たないように動かすことができる。よって,直線3と直線8を調整すれば,連動して第3象限にできる等高線の形状が変化し,●や*に近づけることができるのである。
【0096】
この直線3と直線8の調整の部分が,理想値G1とG2の計算と,そこからのg1(u),g2(u)の生成作業に該当し,これに関わる技術が請求項2,請求項3,請求項4を構成する。そして,平均をとってf1(x1)とするという部分が請求項3[1]である。こうして,請求項1の効用関数が全体として生成されるのである。
【0097】
言い換えれば,等高線データから作った別個の2本の等高線式「F2(x2)=u-F1(x1)」をもとに,そこからfとgの情報を抽出して(請求項2)から(請求項5)の技術で,1本の効用関数(数3)「u=g1(u)f1(x1)+g2(u)f2(x2)f1(x1)」に集約することで,データに良好にフィットする請求項1である効用関数を生成したのである。
【0098】
以上で,分解図による説明はすべて終わり。
【0099】
以下では,理想値G1とG2の算出式の導出過程を示す。これは(請求項2)の(数36),(数37)の原理を2変数のケースで解説するものである。ユーザーが,最適点の(x1,x2)座標と,その点の接線の傾きを指定すると,指定した座標が最適点になるようなg1,g2の値である理想値G1,G2の値を算出する方法が以下に示される。
【0100】
効用関数には(数3)と,その変種である(数4)の2つのバージョンがあり,使用するG1,G2の式が異なる。(数3)でのG1,G2の式の導出を(0101)に示す。(数4)でのG1,G2の式の導出を(0102)に示す。
【0101】
P1とP2をx1とx2の価格,定数uを達成したい効用水準としたとき,費用最小化問題は,目的関数をP1x1+P2x2,制約条件を(数3)である「u=g1(u)f1(x1)+g2(u)f2(x2)」として,最適化問題「minx1x2 P1x1+P2x2,s.t g1(u)f1(x1)+g2(u)f2(x2)-u=0」となる。ラグランジュ関数はL=P1x1+P2x2+λ(g1(u)f1(x1)+g2(u)f2(x2)-u)である。最適条件は,λ=g1(u)f1′(x1)/P1,かつ,λ=g2(u)f2′(x2)/P2,かつ,g1(u)f1(x1)+g2(u)f2(x2)-u=0の3本の式であり,最後の条件式は(数3)と同じである。λを消去すると,{g1(u)f1′(x1)}/P1={g2(u)f2′(x2)}/P2をえる。これをg2(u)について解くと,g2(u)=g1(u)×{f1′(x1)/f2′(x2)}×{P2/P1}となる。これを元の効用関数(数3)に代入してg2(u)を消去すると,(数4)はg1(u)f1(x1)+g1(u)×{f1′(x1)/f2′(x2)}×{P2/P1}×f2(x2)=uとなる。これはg1(u)について解くことができ,g1(u)=u/[f1(x1)+{f1′(x1)/f2′(x2)}×{P2/P1}×f2(x2)]をえる。右辺のg1(u)を関数G1と表記すると(数10)のG1の式ができる。また,このG1の添え字の1と2を入れ替えて(数10)のG2ができる。
[数10]G1=u/[f1(x1)+{f1′(x1)/f2′(x2)}×{P2/P1}×f2(x2)],および,G2=u/[f2(x2)+{f2′(x2)/f1′(x1)}×{P1/P2}×f1(x1)]
【0102】
効用関数が(数4)の場合は,1文字だけ変わるが,次の通りとなる。費用最小化問題は,目的関数をP1x1+P2x2,制約条件を(数4)である「1=g1(u)f1(x1)+g2(u)f2(x2)」となり,左辺がuから1へと1文字だけ変わる。よって,最適化問題「minx1x2 P1x1+P2x2,s.t g1(u)f1(x1)+g2(u)f2(x2)-1=0」と制約式が1文字だけ変わる(注,つまり,g1とg2にだけuが入る)。ラグランジュ関数などについて(0101)のuを1に変更して読み替えて同様に計算すると,
[数11]G1=1/[f1(x1)+{f1′(x1)/f2′(x2)}×{P2/P1}×f2(x2)],および,G2=1/[f2(x2)+{f2′(x2)/f1′(x1)}×{P1/P2}×f1(x1)]
となる。この(数11)は,(数10)の分子のuが1に変わっただけの式である。ただし,uを指定しなくてもG1とG2の値が計算できるために,uを決める工程を省くことができるという長所があるので,便利である。そして,分子の1の部分は,スケーリングをして100のような大きな値を使い,スケーリングをしたら対応する効用関数(数4)の左辺の1も,スケーリングして100にしておくことを忘れないように。
【0103】
(数10)と(数11)に示した関数G1,G2は,消費量(x1,x2)が価格(P1,P2)のもとで費用最小化点になると仮定したとき,g1(u)が取るべき値を与える関数である。ユーザーが,x1,x2,P2/P1の観察データを次々と与えると,g1(u)とg2(u)の取るべき値が次々と生成される。
【0104】
そして,経済理論により最適点においては,等高線の接線の式と予算線は一致する。このため,本発明では,(数10)と(数11)のP1とP2は価格ではなく,接線の傾きを表す変数として解釈し,等高線式から算出してよい。観察された費用最小化点について,その点を通る等高線式が1=F1(x1)+F2(x2)とデータから推計されていた場合,等高線の接線の傾きはF1′(x1)/F2′(x2)であり,これは経済学では価格の比P1/P2に等しい。このためP1=F1′(x1),P2=F2′(x2)と見做して構わない。以上の理由により(数10)や(数11)において,(数12)と解釈して構わない。つまり,(数10)と(数11)において,
[数12]P1=F1′(x1), P2=F2′(x2)
である。(数10),(数11),(数12)が理想値Gの計算式である。
【0105】
以上で,G1とG2の算出方法の説明は終わりである。
【0106】
以下では,請求項4となっている,不正な●の選択の公式を証明する。この証明は経済学では見慣れたものが多い。前にも断ったが,請求項4は請求項3の最良の実施形態として権利化するものではなく,あくまで不良を直すときの判断装置の1つとして権利化するものである。
【0107】
(
図6)のC
1とC
2は2本の等高線式のグラフ,A点とB点はC
1,C
2上の費用最小化点,接線M
1と接線M
2はA点とB点の接線であり,それら接線の傾きはP
1
A/P
2
A,P
1
B/P
2
B,横軸切片がx
1
a,x
1
b,縦軸切片がx
2
a,x
2
bで示されている。M
1とM
2は一般には平行ではない。この(
図5),前の説明における(
図3)のC図と同じものである。A点の座標は(x
1
A,x
2
A),B点のそれは(x
1
A,x
2
B)とし,図に描くとA点とB点は垂直に一直線に並ぶように設定する。M
1とM
2のx
1軸切片を見ると,x
1
a<x
1
bという大小関係で図示されているが,これは一般には成立せず,(
図3)のC図のように,x
1
a>x
1
bとなり逆転が起こることもある。
【0108】
A点とB点の接線の式をx2=切片+傾きx1­の形で表すと,A点の接線は「x2=(P1
A/P2
A)(x1-x1
A)+x2
A」であり,B点の接線は「x2=(P1
B/P2
B)(x1-x1
A)+x2
B」と表すことができる。この接線の式を変形して,x1軸切片を求めると,A点の接線の横軸切片をx1
aと表すと
[数13]A点の接線の横軸座標: x1
a=x1
A+(P2
A/P1
A)x2
A
であり,B点のそれの横軸切片は
[数14]B点の接線の横軸座標: x1
b=x1
A+(P2
B/P1
B)x2
B
となる。
【0109】
さて,A点とB点におけるG1の値をG1
AとG1
Bと表す。(数10)に,x1
A,x2
A,x2B,P1
A,P2
Aを代入して,値を計算すると,
[数15]
G1
A=1/[f1(x1
A)+{f1′(x1
A)/f2′(x2
A)}×{P2
A/P1
A}×f2(x2
A)],
[数16]
G1
B=1/[f1(x1
A)+{f1′(x1
A)/f2′(x2
B)}×{P2
B/P1
B}×f2(x2
B)],
をえる。ここで,軸となる関数f2の関数形はユーザーが自由に決めることができる。そして,f2の関数形として,私は,
[数17] f2(x2)/f2′(x2)=αx2(αは正の定数,x2の指数は1)
となる関数を推奨した。このような関数としては,f2(x2)=2x2
0.8のようなべき乗の関数がある。(数17)を(数15)と(数16)に代入して,f2(x2)/f2′(x2)を消去すると,
[数18]G1
A=1/[f1(x1
A)+f1′(x1
A)×{P2
A/P1
A}×αx2
A]
[数19]G1
B=1/[f1(x1
A)+f1′(x1
A)×{P2
B/P1
B}×αx2
B]
が得られる。(数18)と(数19)において,x1の値はx1
Aで共通であることから,分母のf1(x1
A)とf1′(x1
A)も共通となる。よって, G1
AとG1
Bの大小関係は,分母の{P2
A/P1
A}×x2
Aと{P2
B/P1
B}x2
Bの大小関係のみで決定されることが分かる。もし,{P2
A/P1
A}×x2
A>{P2
B/P1
B}x2
Bであれば,G1
A>G1
Bとなるが,同時に(数13)と(数14)で切片座標を計算するとx1
a<x1
bが成立している。反対に,もし,{P2
A/P1
A}×x2
A<{P2
B/P1
B}x2
Bであれば,G1
A<G1
Bとなるが,同時に(数13)と(数14)で切片座標を計算するとx1
a>x1
bが成立している。
【0110】
以上をまとめると,C1とC2という2本の等高線式のグラフがあったときに,軸となる変数であるx2座標だけが異なり,他の変数であるx1の座標を共通にするようにA点とB点をとる。更に,f2(x2)について,f2(x2)/f2′(x2)=αx2という定数項のない1次式を採用した場合,G1
AとG1
Bの大小関係は,あらゆるf1の関数形について,A点とB点を通る接線の横軸切片の大小関係の反対と一致する。
【0111】
残念ながら,x2軸切片については,x1軸切片のような強い定理は導けないが,それでも,切片をx2
a,x2
bとしたとき,x2
a>x2
b⇒G2
A<G2
Bは成立した(x2
a≦x2
b⇒G2
A<G2
Bも排除できなかった)。よって,x2
a>x2
bのような逆転があった場合は,G2の逆転が起こることだけしか分からず,逆転がなかった場合でも,G2の逆転は起こりうる。
【0112】
以上を総括したGの不可能性の含意は2つある。第1の含意は,2本の接線が正の領域で交点を持った場合には,G1,G2のいずれかの大小関係が望ましくない事態となり,Fやfの関数形を変えても改善できない。この2変数の証明は,すべてn変数でも成立するため,1000変数の場合であっても,2つの等高超平面上の2点を,x2を除くx1~x1000まで共通にして点を取り,f2には(数17)を使った場合,2つの接超平面が交点を持ったら,gの逆転が生じる。このときf2を除くf1からf1000について,様々な関数形を試すのは,時間とエネルギーの無駄であることが判定できる。よって,複雑な試行錯誤は避けて,(0069)~(0072)で述べた「妥協」をする処理にジャンプする方がよいといった条件分岐ができる。
【0113】
第2の含意は,2つの接超平面が交点を持たなかった場合には,G2を除くG1からG1000の並びは,すべて減少的になり,作業は望ましい状態にある。軸となっているG2については,(0111)でも述べたように,完全な判定ができない訳であるが,多数の変数の中でx2だけが判定が難しいとしても,1つだけだったら,対応を考えるのは,大した手間にはならない。したがって,作業的な処理としては,指定した最適点を通る接線が交点を持つかどうかを真っ先に調べて,交点のないデータであった場合には,本発明は簡単に実施できる可能性が高いと考えて,強気に処理を進めることができる。
【0114】
なお,第3の含意は,2つの接超平面が交点を持たない場合には,f
2を除くf
1からf
1000までの関数の関数形が,どのようなものであったとしても,G
1からG
1000は正しく生成できることを意味する。つまり,「どのような関数であったとしても,」なので,例えば,f
1(x
1)にsinなどの3角関数などを適当に組みあわせて正値になる関数をf
1(x
1)として使っても大丈夫であり,この時は理論上は(
図5)のA点とB点の近傍だけは似ているが,等高線の全体では,C
1,C
2の曲線とは似ても似つかない波型の形状の等高線を持った効用関数も生成できる。しかし,実際には,元のC
1とC
2を無視して局所的にだけフィットする効用関数を作るのは意味がないから,f
2を除くf
1からf
1000は,観察された等高線式C
1,C
2の関数形やパラメータを生かして,関数形を共通にしてパラメータをC
1とC
2の加重平均にするなどの処理が望ましい。あまり,凝ったことをしても,なかなか上手くいかないから,f
i(x
i)の関数形はシンプルなものを使う方がよい。
【発明の効果】
【0115】
2017年ごろから進んだ陰関数を使った方法は,本発明により,陰関数全体をデータから生成することに成功し,暫定ながら完成レベルに達した。開発を始めた当時に意図した数理最適化の目的関数や制約条件としての用途から離れて,もっと一般的に,汎用的な回帰式としての可能性をテストした印象をのべておく。確かに,(数3)の陰関数は(
図1)のB図のS字の所得消費曲線のような豊かな表現力があるが, それでも,自然データやフリーハンドで描いた任意の等高線データに対して,回帰が一発で成功するほどの万能性は備えていないようである。
【0116】
しかしながら,本発明の回帰式「u=g1(u)f1(x1)+g2(u)f2(x2)」は,fが正値に限定されるという制約があるが,一般的な線形的な非線形回帰式「u=f1(x1)+f2(x2)」の上位互換である。よって,本発明がフィットの良さにおいて,従来の線形的な非線形回帰よりも劣るとは思えない。線形的な非線形回帰には,当然に,普通の線形回帰も含まれる。よって,非線形回帰が好きでなく,線形回帰が好きな人でも使ってもらえる。よって,あらゆる回帰が一発で成功するほどの一般性は無かったとしても,それよりも性能が劣る線形回帰の改良版として,誰でも1度は使ってみたいと思うような商品性を備える。
【0117】
第2の発明の効果は,自由度が高く,しかも,トラクタブルなことである。本発明のu=g1(u)f1(x1)+g2(u)f2(x2)という式において,fの式としては正値であれば,どのような式でも使える。この為,関数fの選択の自由度が高いので,ユーザーは自分で思いついた式を,次々と試すことができる。このような手軽さにより,ユーザーは楽しく作業できるので,試してみたい,使ってみたいと思うようになり,特許の商品価値を高める。更に,分解図があるので商品の説明が楽で,商品価値が高まる。
【0118】
第3の効果は,精度の高い等高線が描けることである。非線形関数u=f(x1,x2)は,一般的にはx2=V(x1,u)の形には変形できない。このため数学ソフトでは,x1とx2に総当たり的に値を与えてuを計算し,uの近いものを集めて等高線を描くことが行われている。このような総当たりで描画される等高線図は誤差が大きく,等高線と予算制約線と重ねて描画すると,最適点と予算線が接せず,誤差の分だけずれてしまう。しかし,本発明の効用関数は,x2=V(x1,u)のように解けることが多いので,精度の高い計算できて,等高線が精密に描画できる。例えば,等高線と予算線が接するような図を描くと,どんなに図を拡大しても,しっかりと最適点で予算線が接する図が表示される。このような精度の高さは,デバッグを容易にするし,信頼性が高いので,更なる処理を上に乗せることが可能となる。
【0119】
なお,残念なところもある。それは,成功率の必ずしも高くない,時としてかなり難しい作業が含まれていることである。それは,B図の生成である。B図の4つの等高線式の生成では,等高線データに対して,多変数の非線形回帰を成功させる必要がある。しかし,これは難易度が高いことがある。比較的難易度の低いとされる「線形的な非線形回帰」の手法が使えると言っても,4変数位になってくると,なかなか成功しないことがある。
【0120】
第2の残念な所は,E図の●の順序関係の逆転は,妥協すら不可能な場合もあり,
図3のF図で言えば,●1から●4が,すべて右上がりに並ぶこともある。こうなると妥協すら難しいかもしれない。この短所の幸いな所は,成功しないことが,簡単に分かることも多い点である。無駄な努力はしない方がよく,代替的な手段が,多くあるなら,特定のデータに強く,それ以外では全く無理な方が,ユーザーとしては分かり易くて良い。中途半端に,「頑張れば上手く行くみたいな奴」は,結局は,徒労に終わることも多いから,むしろ,出来ることが明確である方がよいと思うのである。
【0121】
その点からみると,本発明が有効なデータは,効用関数の数学的な構造に沿ったデータである。x1,x2といった財は,f1(x1),f2(x2)で決定さる決まりきった満足を本源的には与えるが,全体として得る満足であるuの値が高い事から価値観が影響を受けて,f1(x1),f2(x2)の値が一定率だけ減少するというものである。これは財貨については,ある程度,正しいと思える。安い酒は,金持ちでも貧乏人でも同じ効用を与えるが,金持ちは全体の効用が高い事から影響をうけて安い酒では物足りないと思うようなものである。
【発明を実施するための形態】
【0122】
(0035)から(0074),および,(0099)~(0114)
の記述と同様である。
【産業上の利用可能性】
【0123】
需要予測,数理ファイナンス,ゲームなどで使用する。数理最適化の目的関数や制約条件としても使用する。
【図面の簡単な説明】
【0124】
【
図1】先行技術における効用関数の生成の成功例(技術的背景)
【
図2】先行技術における効用関数の生成の失敗例(発明で解決する課題)
【
図3】観察データから効用関数を生成するプロセス(実施例1,実施例2,請求項1から請求項4)
【
図4】効用関数の分解図(課題を解決するための手段,請求項1)
【
図5】効用関数の生成用の分解図(課題を解決するための手段,請求項3)
【
図6】接線の式と理想値Gの関係(課題を解決するための手段,請求項4)
【実施例0125】
u=f(x
1,x
2)という関係を想定して,(
図3)のA図のような等高線データからD図の等高線をもつ(数3)を生成する例を示す。主要関数の一般形を列挙しておく。効用関数は,(数3)の
「u=g
1(u)f
1(x
1)+g
2(u)f
2(x
2)」であるが,途中から(数4)の「1=g
1(u)f
1(x
1)+g
2(u)f
2(x
2)」を使う。これらは請求項1に記載した効用関数の2変数に適用したものである。等高線式の一般形は(数6)で「F
2(x
2)=β
0-F
1(x
1,β
1)」である。この数式は請求項3に記載した数式である。g
1(u)とg
2(u)の取るべき理想の値を与える関数は(数9)あるいは(数11)であり,「G
1=1/[f
1(x
1)+{f
1′(x
1)/f
2′(x
2)}×{P
2/P
1}×f
2(x
2)]」と「G
2=1/[f
2(x
2)+{f
2′(x
2)/f
1′(x
1)}×{P
1/P
2}×f
1(x
1)]」であり,請求項2に記載された数式である。
【0126】
ユーザーは(表1)のような等高線データを用意する。(表1)のデータは,u=f(x1,x2)という関係を想定して,uが等しくなる(x1,x2)を示す。例えば,(表1)の等高線データ1番は,f(1.0,7.8)=f(4.8,5.7)=f(8.6,3.9)=f(12.4,2.5)=f(16.2,1.5)=f(20.0,1.0)であると読む。なお,1番から4番の等高線のuの値は等高線データ1番のuの値が最もが小さく,4番が最も大きいという順序とする。
(表1)は請求項3でいうT=4組にグループ化されたデータに該当する。
【0127】
(表1)をプロットコマンドに入力して,プロット図(
図3)のA図を出力する。(
図3)のA図をみて,(表1)の(x
1,x
2)と図の*の座標が正しく対応しているかを検査する。次に,A図の*を点線で結ぶようにコマンドを入力し,A図のような簡易な等高線を描く。ユーザーはA図の簡易な等高線を目で見て,左下方に凸な形状をしている事を目で確認して非線形回帰が必要であることを認識する。また,A図の4本の簡易の等高線を見て,交点を持たないことも確認した方が良い。元データの等高線データが交点を持つときは,変数が足りない等,回帰とは別の根本的な問題がある。
【表1】
【0128】
ユーザーは,A図の*と点線の簡易の等高線の形状を参考にしつつ,(表1)の4本の等高線データに当てはめる回帰式を用意する。まず,ユーザーは,x1からx2に回帰するか,x2からx1に回帰するかを決めて,どちらでも良いが,ここでは後者を選択する。被説明変数となったx2は本発明の「軸となる変数」であり,F2(x2)は「軸となる関数」であり,回帰式は「等高線式」である。
(注)請求項の数式群は,軸となる変数はx2でなく,x1で記載してあるので,1と2が入れ替わっているので,読むときには注意されたい。
ユーザーは,A図を見ながら,等高線式をイメージして,
[数20]x2=β0-(β1x1
-1+β2x1+β3x1
2)
を用意した。ユーザーは(数20)を検査して,「F2(x2)=u-F1(x1)」という(請求項3)に記載してある等高線式の一般形に,β0=u,F2(x2)=x2,F1(x1)=β1x1
-1+β2x1+β3x1
2とすることで帰着できることを確認する。この帰着ができるかどうかを確認する様子は(表2)の下の↑で示してある。
【0129】
理論上は,回帰式となる等高線式(数20)の左辺は必ずしもx2である必要はなく,自身で決めた適当な関数F2(x2)で変数変換をすることが許されているが,実施例では単純な方がよいのでF2(x2)=x2として,x2の値をそのまま使用することにする。F2(x2)として,「F2(x2)/F2′(x2)=αx2,α≠0となる関数F2」という条件を満たす場合,請求項4に示した不可能性の判断法が使えるようになる。F2(x2)=x2は,この条件を満たす。
【0130】
ただし,理論上は,(数20)の代わりに,x2
0.5=u-(β1x1
-1+β2x1+β3x1
2)のように,左辺にはx2でなくF2(x2)=x2
0.5等を試して使ってもよい。そして,回帰をする前に事前にF2(x2)=x2
0.5の値は計算しておいて良い。
【0131】
計算機で,(表1)の等高線データの1番から4番に対して,等高線式(数20)を用いて回帰を実行し,推計したβ
0~β
3の値を転記して(表2)を出力する。(表2)には,1番から4番までの完成した等高線式が示されている。例えば,(表1)の1番の等高線データに対する等高線式は,(表2)の1番に示されており,「x
2=8.80-(0.65x
1
-1+0.69x
1―0.02x
1
2)」であると読む。更に,これら4つの等高線式の回帰線を数学ソフトで描画し(
図3)のB図を出力し,回帰が成功したかを検査する。B図を見ると,点線(回帰線)と*(元データ)は十分にぴったり重なっていることが確認できるので,フィットは良好であることが分かる。
【表2】
【0132】
次に,(表2)の最下行に,β1からβ3について4本の等高線式のパラメータの値の平均値を出力する。例えば,(表2)のβ1の平均は1.72と表示されており,これは(0.65+1.81+2.30+2.13)÷4で求められる。
【0133】
そして,この(表2)におけるβの平均をもって(数3)のf1(x1)とする。つまり,
[数21]f1(x1)=1.72x1
-1+1.71x1―0.04x1
2
である。また,f2(x2)については, F2(x2)=x2を用いたから,そのまま
[数22]f2(x2)=x2
とするのである。この(数21)と(数22)の式こそが,今回の発明で実現した観察データに良好にフィットする(数3)のfとして使える式の完成した姿である。
【0134】
以上で,請求項3の[1]の実施が終わり。以下,請求項3の[2]の実施を示す。
【0135】
後述の(0143)の利用のために,導関数も作る。
[数23]f1′(x1)=-1.72x1
-2+1.71-0.08x1
[数24]f2′(x2)=1
となる。
【0136】
次に,(表2)の等高線の番号の1番の数式である
[数25]x2=8.80-(0.65x1
-1+0.69x1-0.02x1
2)
を,一般形で解釈して,F2とF1を対応させる。すると,F2(x2)=x2,とF1(x1)=0.65x1
-1+0.69x1―0.02x1
2と解釈できるので,これらを微分して,導関数
[数26]F1′=-0.65x1
-2+0.69-0.04x1
[数27]F2′=1
をつくる。
【0137】
以上で,第1段階が終了。以下は,最適点を指定するという第2段階となる。
【0138】
次に,1番から4番の等高線上に最適点●1~●4を以下の要領でユーザーが指定する。請求項3の「総数でM個(当然M≧T)の(数38)を満たすようなx1,…,xnの値を計算により求め,…」を行う。実施例では,各等高線について1個の最適点を取るので,M=4(=T)として実施する。
【0139】
まず,自分でx1=5と決めて,(数21),(数22),(数23),(数24)に,x1=5を代入して,計算すると,x2=5.6,F2′=1,F1′=-0.52,F2′=1をえる。これら数値を(表3)の●1列に出力する。経済学では,●1のx1,x2座標は,価格比をF1′/F2′で与えた時の所与の等高線式における費用最小化点であることから,(表3)の●1を他の表や図の●1と区別するため「最適点番号の●1」とか「最適点●1」とよぶ。経済学を知らないユーザーは,(表3)の●1の列を見たら,1番の等高線上の点(5,5.6)で,その等高線上の点における接線の傾きが0.52(=0.52/1)であるのように,最適点という語は使わずに読めばよい。
【0140】
(表2)の等高線式の番号の2~4番についても,(0139)と同様にして,(数21)~(数24)に相当する式を作る。そして,これら式に,先に決めたx1=5を代入して,x2,F2′,F1′の値を計算して,(表3)の最適点●2~●4の列を出力し,(表3)を完成させる。最適点●1~●4のx1座標として,x1=5を共通に使用することで請求項4が使えるようになる。
【0141】
(表3)ができたら(
図3)のC図を作る処理を開始する。(表3)をもとに数学ソフトのplotコマンド等を使って,(表3)のx
1,x
2座標に最適点●1~●4をB図の●1~●4のように描画する。更に,B図で描いた等高線のグラフを重ねて描画し,●1~●4がB図に描かれていた等高線上にあるかを検査する。検査して等高線と●がズレていたらバグである。次に,(表3)の●1の行にある「5」と「5.6」と「0.52」と「1」をもとに,座標(5,5.6)を通る接線の式「x
2=0.52/1×(x
1-5)+5.6/1」をつくる。この接線の式を使って,C図に接線も描画して,接線が等高線に本当に接しているかを検査する。もしも,接していなかったら●1は最適点にならないのでバグである。同様にして,●2~●4の接線も描画する。(
図3)のC図が完成する。これを使い●1と同様の検査を行い,●1~●4は全て等高線式上の点となっており,接線も正しく接していることをC図で再確認する。
【表3】
【0142】
以上で,請求項3の[2]の請求項3に固有の処理が完了した。4段階のうちの第2段階が完了である。
【0143】
以下では,請求項3の[2]に書かれている請求項2の実施によるgk(u)を生成する処理を実施を説明する。下記は,請求項2の実施例を示すものでもある。
【0144】
次に,(表3)から(表4)を作る。(表3)の1番からx1=5,x2=5.6を読み取り(数21),(数22),(数23),(数24)に代入することで,f1=8.0,f1′=1.27,f2=5.6,f2′=1をえる。(表3)の1番からF1′=0.52とF2′=1を読み取り,P1=0.52,P2=1と設定する。そして,f1,f1′,f2,f2′,P1,P2の値を請求項2の(数37)式をi=1,n=2とした式,すなわち,(数11)に代入するが,有効桁数のスケーリングのため分子は1でなく,100に変更して,
[数28]G1=100/(8.0+(1.27/1)×(1/0.52)×5.6)
より,G1≒4.60をえる。このG1=4.60を(表4)の●1列のG1行に配置する。同様にして,(表3)の最適点●2~●4についてもG1を計算して,(表4)のG1行を完成させる。
【0145】
(表4)のG
2の行も,請求項2の(数37)をi=2,n=2とした式,すなわち(数11)を使って同様の計算をすることで最適点●1から●4のG
2の値を計算して,(表4)のG
2行を作成する。ユーザーは(表4)を見ることで,(表3)の最適点●1が,最適点になるためには効用関数(数4)において,g
1=4.60,g
2=11.35でなければならないことを示し,同様に最適点●2が,最適点になるためには効用関数(数4)において,g
1=4.47,g
2=5.65でなければならないことを理解する。
【表4】
【0146】
次に,ユーザーは(表4)のuの行に,最適点●1~●4におけるuの値を記入する。記入するuの値は(表2)の4つのβ0の値(つまり,8.8と17.84と26.51と34.98)を転記する。この転記は,(0128)において,「u=β0」という対応をしていることが確認されたことが根拠の1つである。これで(表4)のuの行が完成し,(表4)全体が完成した。
【0147】
なお,理論上は(表4)に記入するuの値は,β0を使う必要はなく,観察されたuの大小関係であるu1<u2<u3<u4という大小関係が成立していれば,uの値はどのような値でもよい。ただし,u1,u2,u3,u4の値が観察データから分かっている場合であっても,その値を使わずに,uの値を自分で決めた方が良い。事実,本発明のもととなった(特許文献1)では,実際に,自分で決めたuの値を使用していた。そして,本実施例では,特に,(表2)のβ0の値を転記して使用することを推奨する。uの値をβ0を転記して流用すると,等高線式と効用関数を変数変換なしに直接に比較できるようになり,D図の作成が簡単になったり,デバッグが楽になるからである。
【0148】
(表4)のuとG
1から(
図3)のE図を,(表4)のuとG
2から(
図3)のF図を,数学ソフトを使って描画する。
【0149】
以上で,第3段階終わり。
【0150】
E図とF図は,理想値G1とG2が縦軸に取られており,理論上は,●が右下がりに並んでいる必要がある。そこで,回帰によりg1(u)とg2(u)を生成する前に,ユーザーは,E図とF図の●1~●4の並びが右下がりに並んでいるかを検査しておく必要がある。
【0151】
まず,F図を先に検査する。F図を見ると●1から●4が奇麗に右下がりに並んでいるのが分かる。よって,F図は良好であり,普通に回帰をしてg2(u)を生成するだけで,g2(u)は首尾よく非増加関数として生成されると予想する。次に,E図を検査する。E図を見ると●1から●3は右下がりに並んでいるが,●4が●1より高い位置にあるので●の並びがU字型であることを確認する。E図で,普通に回帰をしてg1(u)を生成すると,良好にフィットすればg1(u)はU字型になるから,g1(u)が非増加関数として生成されないだろうと予想する。
【0152】
以上のE図とF図の検査から,このままではg
1(u)の不適切が原因で,生成される効用関数も(
図2)のB図で見たようなような不正な関数となることが予想される。よって,(表4)に示されたG
1とG
2の値では,適正な効用関数は,簡単には生成できないと判断し,G
1とG
2の値の不都合への対応処理へとジャンプする。
【0153】
不都合なGへの対応として,請求項2を実施する。ユーザーは,(表2)を作るときに,最適点●1から●4のx
1座標はx
1=5で統一しておいた。また,ユーザーは,軸となる関数f
2(x
2)としてf
2(x
2)=x
2というf
2(x
2)/f
2′(x
2)=αx
2
β(α,β>0)となる関数を選択しておいた。請求項2の基準で条件分岐をした場合,E図とF図の●の並びが両図とも右下がりになるように,F
iやf
iの関数形を無数にテストするような処理は効果がないことが分かっている。よって,E図とF図の●の並びは現状のまま,回帰に制約を付けるという妥協を選択する。言い換えると,E図とF図の●の並びを変更するのではなく,回帰式に制約を付けることで,フィットを犠牲にしても,とにかく減少関数としてg
1(u)とg
2(u)を生成する方向で回帰をする処理にジャンプする。妥協をすると,(
図3)のE図とF図の●は現状のまま,一切変更せずに回帰をどうするかを検討する処理となる。E図とF図の●は現状のままであるから,E図の回帰と,F図の回帰は独立した処理となる。
【0154】
まずF図を処理する。F図は適正であることから,回帰式としてG
2=α
21u
-α22を制約なしで採用する。これを回帰式として,(表4)のG
2の行とuの行のベクトルを数学ソフトの回帰コマンドに入力すると,G
2=0.992u
-0.996が出力される。描画コマンドで(
図3)のF図に回帰線を描画すると点線のようになり,●と点線は良好にフィットしていることが確認できる。
【0155】
E図は不適切である。よって,ユーザーは,特に,U字型になりやすい多項式G1=α11u2+α12u等は選択肢から外す。妥協をすると決めた以上は,複雑な式は避けて,G1=α11-α12uのような線形回帰式や,G1=α11u-α12のような指数の式を候補とする。ここでは後者のG1=α11u-α12を採用し,更に,制約α12≧0を付加することで確実に減少関数とすることにする。
【0156】
(表3)のG
1の行とuの行のベクトルを,数学ソフトの回帰コマンドに制約α
12≧0のオプションを付加して入力すると,G
1=0.046u
-0.004が出力される。この回帰式のグラフをE図に描画して,指数が-0.004という0に近い値なので,ほぼ水平だが,かすかに右下がりの回帰線が描かれていることを確認する。F図の●と回帰線は,大きな乖離がありフィットが悪いが,右下がりの曲線であるという絶対的な条件を満たすので,これを受け入れて不都合なGの処理を完了する。推計したα
11,α
12,α
21,α
22の値から(表5)のような回帰パラメータの表を作成する。
【表5】
これが(数4)で使用するg
1(u),g
2(u)であり,(表4)より,
[数29]g
1(u)=0.046u
-0.004
[数30]g
2(u)=0.992u
-0.996
という関数となる。
【0157】
以上で,請求項3の[3],請求項2の実施が完了し,g1(u)とg2(u)が生成された。
【0158】
(表2)で作成した(数21),(数22)と(表5)で作成した(数29),(数30)を本発明の眼目である効用関数(数4)に代入して,
[数31]100=(0.046u-0.004)(1.72x1
-1+1.71x1―0.04x1
2)+(0.992u-0.996)x2
という式を作る。これが(表1)の等高線データにフィットする完成された効用関数の式である。(数31)の左辺は,1でなく100としてあるが,この100という数値は,自分で決めるのではなく,(0144)においてG1,G2の計算で使用した100と値を揃えなければならない。
そして,(表6)の「等高線データ1番」の行にある6個のuの値をみると,概ね8.4~8.8位の値をとっており,uの値が等しい事が確認できることから,等高線になっていることが確認できる。更に,そして,この8.4~8.8という値は,(表2)のβ0の列にある8.80や,(表4)のuの行の8.8と,も近い値である。同様に,「等高線データ2番」~「等高線データ4番」も(表2)のβ0や(表4)のuの行の値と近い値であることが確認できよう。これは,効用関数のフィットが良いことを示す。ユーザーは,このフィットのよい効用関数を使って,各種のx1とx2の値を与え,uを計算して,x1とx2の良し悪しを判断する。
例えば,経済学の予算制約線と等高線を重ねて描画をすると,本当に最適点で2本の線がピッタリと接する図が出力でき,図を拡大しても,2本の線がピッタリと接する図が表示され続ける。このため,大衆向けの説得力がアップする。また,誤差が小さいと図を描いて視覚的デバッグができたり,上乗せの土台になれる等のメリットが生じる。
また,このUやuの値が観察データとは異なるときには,関数H(U)なりH(u)を回帰等により生成して変換して観察データに合わせればよい。これは単回帰であるから簡単である。