4) 주어진 데이터를 regression 하여,
함수를 구하는 방법으로,
analytical 함수를 얻기 위해 polynomial 등의 일반식을 이용하는 경우가 많으나,
실제로는 데이터의 regression이 생각보다 잘 나오지 않는다
예를 들어, 아래와 같은 데이터가 있다고 한다면,
Data (Reaction: A --> B)
T (min) 0.0 1.0 3.5 7.0 12.0
A (mol)
0.05 0.04 0.03
0.02 0.01
Python의 numpy polyfit 을 통해 2nd order 의 함수를 얻기는 했으나,
데이터의 오차로 치부해 버리기 쉬우나,
신빙성이 높은 실제 데이터라고 한다면, 저 차이를 무시하기 어렵다
그렇다고, 3차 또는 4차 식으로 만들지도 못한다
Regression의 모양이 매우 이상해진다
4-1) Tensorflow 를 이용하여 regression 을 해보자
프로그램 활용에 조금은 시간 투자를 해야 하지만,
Tensorflow를 활용하여 regression 한 경우,
물론, 반응 속도를 계산하기 위해 미분값을 이용하기 위해서는,
analytical로 활용하지 못하고 numerical method 를 활용하여야 하나,
특정 시간의 미분값이 실제값에 훨씬 더 근접한 계산이 될 수 있다
4-2) 간단하게는 numpy의 gradient 함수를 이용할 수도 있다
*반응 속도의 값을 비교하기 위해서는 regression으로 얻은 함수를 시간에 대해 미분하여, 각각의 Time point에 해당하는 반응 속도를 구할 수 있다
**다만, 실제로 상기 두 가지의 regression에서 T=0 에서의 미분값을 구하면 2배 이상의 값 차이가 생긴다 (데이터 fit의 차이에 따른 값이 꽤나 크다 / 얼핏 보아도 처음 붉은점 2개의 기울기가 푸른 실선의 기울기 보다 크게 보인다)
***이 정도의 반응 속도 차이를 보인다면, design equation 등에도 활용하기가 까다롭다 (어느 것이 신뢰가 높을지 판단하기도 어렵다 / 어느 것을 오차로 치부할지도 어렵다)
****그래프를 그려서 육안으로 보이는 경향성을 신뢰하자 (데이터는 오차가 없다는 가정을 하던지, 실험을 많이 해서 오차가 없는 데이터를 얻어내던지)
댓글 없음:
댓글 쓰기