범주별로 확장된 매개변수를 사용한 비선형 회귀<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕
A, B, C, D의 네 가지 맞춤 매개변수가 있는 비선형 모델을 사용하여 맞춤해야 하는 데이터 세트가 있습니다. 데이터셋(Y, 컬럼)은 컬럼인 'Categories'를 이용하여 분리되어야 합니다. 따라서 각 고유 '범주'에 대한 Y는 고유한 데이터 집합입니다.
모든 데이터를 맞추고 모든 '카테고리'의 모든 데이터 세트에 대해 고유한 C 및 D가 필요하고 A, B는 '카테고리'에 따라 달라질 수 있다는 조건으로 매개변수 A, B, C, D를 찾아야 합니다.
이를 위해 모델에 대한 열을 생성하고 매개변수 C, D를 생성하고 A 및 BI에 대해 '범주로 확장, 열 선택'을 선택한 상태에서 매개변수를 생성하고 열에 대해 '범주'를 선택하고 비선형 회귀 피팅을 수행합니다. . 모든 카테고리에서 최적의 C와 D를 얻고 카테고리 전체에서 서로 다른 A와 B를 얻습니다.
제 질문은 이렇습니다. 모든 카테고리에서 고유한 C와 D를 어떻게 찾나요? 각 데이터 세트에 해당하는 데이터 세트를 맞추고 각 세트에 대해 C1, D1, C2, D2 등을 찾은 다음 나중에 중앙값/평균 또는 다른 것을 취합니까?
아니면 C와 D 값의 범위를 찾아 C와 D 내에 미세한 점을 생성하고 모든 데이터 세트를 다시 맞추고 오류가 한계 내에 있을 때까지 점점 더 세밀해 집니까?
내가 해야 할 일을 하고 있는지 확인하고 싶기 때문에 방법을 알아야 합니다.
감사해요
비노이
Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀지연 돼서 죄송합니다. 나는 우리가 끝났다고 생각했다!
내 이전 게시물은 공통된 공식을 보여줍니다. 비 그리고 베타 및 조건부 매개변수 범주 수준. 또 무엇이 필요합니까? 내 첫 번째 답변의 스크립트는 이러한 공식 작성을 자동화합니다. 모델 관점에서 볼 때 그 밖에 무엇이 필요할 수 있는지 이해할 수 없습니다.
어떻게 되는지 물어보시나요? 비선형 플랫폼이 그러한 문제를 해결합니까(매개변수 추정)? 그것은 수치 최적화 절차 그리고 손실 함수 모니터링합니다. 주어진 것을 사용합니다 시작 값 그런 다음 손실 함수(최소화)의 결과를 개선하기 위해 이를 변경합니다. 기본 손실 함수는 다음과 같습니다. 제곱 오차의 합 , 또는 최소제곱 .여러 가지 변화 측정을 모니터링하여 시기를 결정합니다. 수렴 달성되고 중지됩니다.
Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀안녕,
제가 요청한 이 질문에 대한 업데이트가 있습니까?
감사해요
비노이
Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀안녕,
나는 수동으로 수행하는 이 방법을 알고 있습니다. 수동으로 수행하는 것이 매우 쉽다는 것을 이해합니다. 그러나 더 큰 시스템의 일부로 스크립트를 자동화해야 하므로 필요합니다.
귀하의 시간과 노력에 감사드립니다.
비노이
Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀훌륭한!!! 매력처럼 일했습니다. 그것은 내 이전 게시물에 대한 답변에 관한 것입니다 (원래 게시물과 약간 다릅니다.)
시간과 대본을 보내주셔서 감사합니다.
이제 보너스 질문(실제로는 원래 질문이었습니다. 
이 비선형 회귀 피팅에는 모든 범주에 대해 동일하게 유지되는 2개의 매개변수 B와 베타가 있고 P와 R0은 범주에 따라 다릅니다. 이제 우리는 방정식을 통해 B와 베타가 범주에 따라 어떻게 달라지는지 지정하지 않습니다. 그렇다면 JMP는 모든 범주에 적합한 최상의 B와 베타를 어떻게 찾습니까? 사용된 알고리즘은 무엇인가요?
감사해요
비노이
Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀Jeff Perkinson이 귀하가 원하는 것과 유사한 예를 지적한 후 이전 답변에 추가하고 싶습니다. 필요한 모델 공식을 만들기 위해 스크립트가 정말로 필요한지는 확실하지 않습니다. 선택하다 돕다 > 샘플 데이터 라이브러리 , 비선형 예 폴더를 선택하고 마지막으로 조류 Mitscherlich 데이터 테이블. 열기 수식 편집기 와 더불어 미첼리히 열. 다음과 같아야 합니다.

이 경우 귀하의 경우와 마찬가지로 2개의 매개변수 알파 그리고 베타 에 조건부이다 치료 .
내가 만든 너의 데이터 모형을 열어서 선택해 콜스 > 새 칼럼... 내가 부를게 모델 그리고 공식 열 속성. 모델 공식을 만들기 위해 매개변수를 사용하기 전에 매개변수를 생성하겠습니다. 나는 클릭한다 테이블 열 왼쪽 상단에서 매개변수 . 나는 클릭한다 새 매개변수. .. 그리고 입력 비 이름에 대해 시작 값을 지정합니다. 2 을 클릭한 다음 좋아요 . 내가 만든다 베타 = 0 같은 방법으로. 그만큼 비 그리고 베타 매개변수는 무조건적이며 해당 값은 모든 범주에 공통됩니다.
다른 두 매개변수는 다릅니다. 나는 클릭한다 새 매개변수 , 입력하다 R0 이름 때문에, 2 시작 값으로 선택하고 카테고리 확장, 열 선택 . 나는 클릭한다 좋아요 그런 다음 범주 열. 이제 고유한 매개변수가 있습니다. R0 각 카테고리마다. 나는 같은 일을 피 매개변수.
이제 다음 수식을 만들기 위해 매개변수 목록과 테이블 열 목록 사이를 전환하면서 수식을 작성합니다.

매개변수 목록에서 그룹화된 매개변수를 클릭하면 편집기가 자동으로 Match(...) 표현식을 삽입합니다. 이제 각 범주마다 하나의 B, 하나의 베타, 하나의 R0 및 P가 있습니다.
첫 번째 예제 Algae에 이 접근 방식을 사용하면 다음 공식이 생성됩니다.

이 모델은 원래 매개변수화와 비선형을 사용하여 정확히 동일한 추정치를 생성합니다.
귀하의 질문을 잘못 해석했을 수도 있다는 점을 이해해 주시기 바랍니다. 스크립트는 강력하지만 항상 필요한 것은 아닙니다.
Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀저는 이 문제를 해결하기 위해 세 가지 원칙을 사용했습니다. 지금은 쉬워 보이지만 올바르게 시작하기 전에는 지저분한 잘못된 시작이 있었습니다. 저는 모델 공식을 역설계하고, 문제를 더 작은 문제로 나누고, 내부에서부터 솔루션을 구축했습니다. 주어진 이름을 가진 세 개의 데이터 열이 있다고 가정합니다. 실행 사이에 열 이름이 변경되는 경우 사용자 정의 대화 상자를 추가해야 합니다. 그러나 범주 수에는 제한이 없습니다. 범주 수가 많을 때 비선형이 모델을 해결할 수 있을지 모르겠습니다. 또한 시작 값 목록을 준비하고 내 예를 사용하여 고유한 값을 사용하는 것이 좋습니다.
귀하의 데이터 테이블은 없지만 귀하가 가지고 있다고 생각하는 것(Category, rRelax, tStress 열)에 대한 모형이 작동했습니다.
/* 이러한 열이 존재한다고 가정하거나 사용자 정의 대화 상자를 만들어 이를 스크립트 변수에 할당합니다.
범주
t편안함
t스트레스
*/
// 모든 카테고리 찾기
범주# = : 범주 << 가치 얻기 ;
// 표현식을 사용하여 안쪽에서 바깥쪽으로 수식을 작성합니다.
표현식 p#과 일치 = 일치 표현식 r0# = 만료 ( 성냥 ( : 범주 ) ) ;
매개변수 목록# = 목록 ( 비 = 2 , 베타 = 0 ) ;
// 모든 카테고리를 반복합니다.
을 위한 ( 씨 = 1 , 씨 <= N개 품목 ( 범주# ) , 씨 ++,
// 카테고리별 R0 매개변수 만들기
평가 (
구문 분석 (
대리자 (
"Insert Into( 매개변수 목록#, Expr( 이름( \!"R0_ccc\!" ) = 2 ) )" ,
"ccc" ,
범주# [ 씨 ]
)
)
) ;
에 집어 넣다 ( 일치 표현식 r0# , 범주# [ 씨 ] ) ;
평가 (
구문 분석 (
대리자 (
"Insert Into( match expr r0#, Expr( Name( \!"R0_ccc\!" ) ) )" ,
"ccc" ,
범주# [ 씨 ]
)
)
) ;
// 카테고리별 P 매개변수 만들기
평가 (
구문 분석 (
대리자 (
"Insert Into( 매개변수 목록#, Expr( 이름( \!"P_ccc\!" ) = 2 ) )" ,
"ccc" ,
범주# [ 씨 ]
)
)
) ;
에 집어 넣다 ( 표현식 p#과 일치 , 범주# [ 씨 ] ) ;
평가 (
구문 분석 (
대리자 (
"Insert Into( match expr p#, Expr( Name( \!"P_ccc\!" ) ) )" ,
"ccc" ,
범주# [ 씨 ]
)
)
) ;
) ;
// 일반 모델 공식으로 대체
수식 표현식# = 대리자 (
만료 ( 매개변수 ( llll , 으르렁 / ( 1 + 비 * ( : t편안함 / : t스트레스 ) ^ 베타 + ppp ) ) ) ,
만료 ( llll ) ,
매개변수 목록# ,
만료 ( 으르렁 ) ,
이름 만료 ( 일치 표현식 r0# ) ,
만료 ( ppp ) ,
이름 만료 ( 표현식 p#과 일치 )
) ;
// 모델 열 수식 설정
평가 (
대리자 (
만료 ( 현재 데이터 테이블 () << 새 열 ( "모델" , 공식 ( ff ) ) ) ,
만료 ( ff ) ,
이름 만료 ( 수식 표현식# )
)
) ;
Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀안녕,
답장을 보내 주셔서 감사합니다. 저는 매뉴얼대로 진행했습니다. 아직도 내가 찾고 있던 것을 얻을 수 없었습니다.
이제 이 비선형 피팅을 스크립트로 작성하려고 하는데 몇 가지 문제에 직면했습니다. 도움이 필요해. 여기서 문제를 반복하겠습니다.
4개의 맞춤 매개변수가 있는 모델에 맞춰야 하는 데이터가 있습니다. 각 카테고리의 적합성은 서로 독립적이지 않습니다. 위 게시물에 표시된 2개의 적합 매개변수인 B와 베타는 고유해야 합니다. 즉, 회귀 적합성은 모든 범주에 대해 고유한 B와 베타를 추출합니다. 다른 두 매개변수 P와 R0은 범주에 따라 달라질 수 있습니다.
JMP 인터페이스는 아래와 같습니다.

이제 이것을 JSL로 코딩해야 합니다.
네 가지 고유 매개변수를 모두 얻기 위해 아래 작업을 수행할 수 있다는 것을 알고 있습니다.
dt << New Column("모델", 숫자, 연속형, 공식( 매개 변수( {B = 5, 베타 = 0.25, P = 10, R0 = 10}, R0 / (1 + B * (:Name( "tRelax( s)" ) / :Name( "t스트레스" )) ^ beta) + P )));
그러나 이것은 내가 원하는 것이 아닙니다. 그리고 "그룹화" 기능은 추출이 독립적인 경우에만 도움이 되므로 사용하고 싶지 않습니다.
수식을 복사하는 동안 생성된 코드는 다음과 같습니다.
매개변수(
{B = 2, 베타 = 0,
이름( "R0_Category_D03_01_-1.8_100" ) = 2,
이름( "R0_Category_D03_01_-1.8_1000" ) = 3,
이름( "R0_Category_D03_01_-1.8_10000" ) = 3,
이름( "R0_Category_D03_01_-1.8_158" ) = 3,
이름( "R0_Category_D03_01_-1.8_1580" ) = 3,
이름( "P_Category_D03_01_-1.8_100" ) = 0,
이름( "P_Category_D03_01_-1.8_1000" ) = 1,
이름( "P_Category_D03_01_-1.8_10000" ) = 1,
이름( "P_Category_D03_01_-1.8_158" ) = 0,
이름( "P_Category_D03_01_-1.8_251" ) = 0},
Exp( -B * (:이름( "tR" ) / :이름( "tS" )) ^ 베타 ) *
일치(:범주,
"D03_01_-1.8_100", 이름( "R0_Category_D03_01_-1.8_100" ),
"D03_01_-1.8_1000", 이름( "R0_Category_D03_01_-1.8_1000" ),
"D03_01_-1.8_10000", 이름( "R0_Category_D03_01_-1.8_10000" ),
"D03_01_-1.8_158", 이름( "R0_Category_D03_01_-1.8_158" ),
"D10_05_-2.6_6310", 이름( "R0_Category_D10_05_-2.6_6310" )
) + 일치( :범주,
"D03_01_-1.8_100", 이름( "P_Category_D03_01_-1.8_100" ),
"D03_01_-1.8_1000", 이름( "P_Category_D03_01_-1.8_1000" ),
"D03_01_-1.8_10000", 이름( "P_Category_D03_01_-1.8_10000" ),
"D03_01_-1.8_158", 이름( "P_Category_D03_01_-1.8_158" ),
"D10_05_-2.6_6310", 이름( "P_Category_D10_05_-2.6_6310" )
)
)
이것을 자동화해야 하므로 그대로 사용할 수 없습니다.
'Category' 열에서 P_XXX 및 R0_XXX에 대한 배열을 만들 수 있습니다.
나는 이들 P와 R0 각각에 대해 연관 배열을 생성하고 이를 수식에 사용하는 방법을 생각하고 있었지만 작동하지 않았습니다.
물론 이 수식을 만든 후에는 열과 데이터에 대해 비선형 회귀 피팅을 실행해야 합니다.
누군가 제가 코딩하는 것을 도와주실 수 있나요?
감사해요
비노이
Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀비노이,
모델 적합성이 무엇인지 및 적합성 뒤의 통계에 대한 이해를 얻을 수 있는 좋은 곳은 도서 > 전문 모델 아래의 도움말 섹션에 있습니다.비선형 피팅은 105페이지에서 시작됩니다. 피팅 그룹화에 대한 Michael Anderson의 제안은 개별 범주가 어떻게 피팅되는지 보여주고 결합된 피팅의 그래프도 볼 수 있습니다.도움말의 예가 아래에 나와 있습니다.자신만의 매개변수 세트를 사용할 수도 있으며 이에 대한 내용은 7장에 나와 있습니다.통계 섹션은 7장의 152페이지에서 시작됩니다.

Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀안녕,
답장을 보내 주셔서 감사합니다.
더 명확하게. 나는 내가 원하는 것을 할 수 있는 방법을 알고 있다. 어떻게 진행되고 있는지 알고 싶습니다.
아래 예에서 B와 beta는 질문에서 질문한 C와 D에 해당하는 반면, P는 A 또는 B와 같은 매개변수로서 카테고리에 따라 달라질 수 있습니다.
아래는 수행 중인 피팅의 스크린샷입니다. B와 베타는 모든 카테고리에 대해 상수로 유지되는 매개변수이고 P는 카테고리에 따라 달라질 수 있는 매개변수입니다.
문제는 모든 카테고리에서 최고의 B와 베타를 어떻게 얻을 수 있느냐는 것입니다. 처음에는 각 카테고리에 대해 서로 다른 B와 베타를 찾고 모든 카테고리에 적합한 최상의 B와 베타를 얻기 위해 일부 통계를 수행합니까? 그렇다면, 사용된 통계는 무엇입니까?
감사해요
비노이

Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀비선형 플랫폼에서 그룹화 변수를 사용하려는 것 같습니다.X 및 Y 변수를 플랫폼의 적절한 필드에 넣은 다음 "카테고리" 열을 "그룹" 필드에 넣습니다.그 후에 모델을 맞추면 각 그룹에 대한 결과가 계산됩니다.따라서 4개의 범주가 있는 경우 4개의 계수 세트가 있는 4개의 모델을 얻게 됩니다.
[이미지 누락]