最適化数学p140「入力誤差モデル」
入力誤差モデルについて
p140を参考にして書いた。
まぁサンプルと思ってください。
出力誤差モデル→入力x後に誤差が加わったのがyと解釈
入力誤差モデル→真の座標(x,y)にそれぞれ誤差が加わったと解釈
どっちが適切かは判断できない。まぁ解釈する側の問題なので。
以下モデル
#-*- coding:utf-8 -*- import numpy as np import pylab as pl a=0 #平均 b=20 #分散1 c=20 #分散2 N=100 #サンプル数 #ノイズデータを出力 x_error=np.random.normal(a,b,N) y_error=np.random.normal(a,c,N) #x,yの真の値を出力 xline=np.linspace(-N,N,N) yline=np.linspace(-N,N,N) #サンプルを作成 xline+=x_error yline+=y_error #作図 pl.plot(xline,yline,'r*') #最小固有値ベクトルを求める x1=np.sum(( xline - np.mean( xline ) )**2) x2= np.sum( np.cov(xline-np.mean(xline),yline-np.mean(yline)) ) x3=np.sum(( yline - np.mean( yline ) )**2 ) #二次形式を最小にする単位ベクトルをMから求める M=np.array([[x1,x2],[x2,x3]]) la,v=np.linalg.eig(M) #最小固有値の単位固有値ベクトルを求める v=np.transpose(v)[min(la)==la] #A,Bは単位固有値ベクトルの1,2である A=v[0][0] B=v[0][1] C=-A*np.mean(xline)-B*np.mean(yline) #真の線を描く xline=np.linspace(-N,N,N) yline= -(A*xline+C)/B pl.plot(xline,yline,'b') pl.show()
ときどきうまくいかないんだけど、これはボクのコードのせいなのか
方法論的な問題なのかようわかりません。