스플라인 피팅의 미분을 취하는 방법에 대해 막혔습니다. 내가 작성한 방식은 공식에서 직접 가져온 것이지만 더 강력하게 만들고 싶습니다. 스플라인 예측 변수 열의 도함수를 취하도록 어떻게 코딩할 수 있습니까?
CWfunc = 함수({dt_current}, {기본 로컬},
//함수의 이 부분은 크로스웹 균일성 검사를 생성합니다.//
dt_sub = dt_current;
쇼(dt_sub);
dt_sub << Select Where(:Panel_RS == "Loop Qual Panel 2");
dt_sub2 = dt_sub << 부분 집합(
행(1)을 선택하고
선택한 열만( 0 ),
);
쇼(dt_sub2);
dt_sub3 = dt_sub2 << 요약(
그룹( :Crossweb_LQ, :Loop Lot_LQ ),
Mean( :"기울기(195-250)"n ),
Freq( "없음" ),
가중치( "없음" ),
원본 데이터 테이블에 링크( 0 )
);
dt_sub3:"Crossweb_LQ"n << 데이터 유형 설정("숫자");
dt_sub3:"Crossweb_LQ"n << 모델링 유형 설정("연속");
dt_sub4 = dt_sub3 << 이변량(
Y( :"평균(기울기(195-250))"n ),
X( :크로스웹_LQ ),
By( :Loop Lot_LQ ),
맞춤 스플라인(100),
//예상 저장
);
splinecol = dt_sub4 << (곡선[1] << 예측값 저장);
return(dt_current,dt_sub,dt_sub2,dt_sub3);
);
Derfunc = 함수({dt_sub3}, {기본 로컬},
dt_sub3 << 새 열("미분",
숫자,
"마디 없는",
형식( "최고", 12 ),
공식
Num Deriv(스플라인 평가(
:크로스웹_LQ,
[1 2.20042178298482 0.057778359275709 0 -0.000683765776914872,
5 2.38777421036511 0.02495760198378 -0.00820518932298666 0.000416694078291779,
9 2.38299001014311 -0.0206825968420827 -0.00320486038348031 0.000748030601767463,
13 2.29685581515222 -0.0104160110250642 0.00577150683773822
-0.0000755519945723868,
17 2.34270055280314 0.0321295479373521 0.00486488290286867 -0.000773631610584581,
21 2.49954444792103 0.0339142938522158 -0.00441869642415559
-0.0000691115769849535,
25 2.56007933961637 -0.00475263323630778 -0.00524803534797586
0.0000699348227685678,
29 2.46157606976071 -0.0433800445272273 -0.00440881747475221
-0.000380207536072129,
33 2.19318152974715 -0.09690054605672 -0.00897130790762231
-0.0000379484318864192,
37 1.65960971935758 -0.170492534048238 -0.0094266890902598 0.00104740989891671,
40 1.09157198267128 0 0 0]
)
);
);
dt_sub3 << 새 열("합격/불합격",
성격,
명사 같은,
);
반환(dt_current,dt_sub,dt_sub2,dt_sub3);
);
Slopefunc = 함수({dt_current}, {기본 로컬};
dt_sum = dt_current << 요약(
Group( :"패널 선량(ug/dL)_RS"n, :Loop Lot_LQ, :Foil_LQ ),
평균( :CW 수정된 AR ),
Freq( "없음" ),
가중치( "없음" )
);
쇼(dt_sum);
dt_graph = dt_sum <<이변량(
Y( :"평균(CW 수정된 AR)"n ),
X( :"패널 선량(ug/dL)_RS"n ),
By( :Loop Lot_LQ ),
그룹화 기준( :Foil_LQ ),
);
쇼(dt_그래프);
dt_graph << 적합선;
반환(dt_graph);
);
mainfunc = 함수({dt_current}, {기본 로컬},
출력1 = CWfunc(dt_current);
output2 = DerFunc(출력1[4]);
출력3 = Slopefunc(dt_current);
);