범주별로 확장된 매개변수를 사용한 비선형 회귀<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕
A, B, C 및 D의 네 가지 적합 매개변수가 있는 비선형 모델을 사용하여 적합해야 하는 데이터 세트가 있습니다. 데이터 세트(Y, 열)는 열인 'Categories'를 사용하여 구분해야 합니다. 따라서 각각의 고유한 'Category'에 대한 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: 범주별로 확장된 매개변수를 사용한 비선형 회귀이 문제를 해결하기 위해 세 가지 원칙을 사용했습니다. 지금은 쉬워 보이지만 제대로 시작하기 전에 지저분한 잘못된 시작이 있었습니다. 모델 공식을 리버스 엔지니어링하고 문제를 더 작은 문제로 나누고 내부에서 외부로 솔루션을 구축했습니다. 주어진 이름을 가진 세 개의 데이터 열이 있다고 가정합니다. 열 이름이 실행 간에 변경되는 경우 사용자 지정 대화 상자를 추가해야 합니다. 그러나 범주의 수에는 제한이 없습니다. 많은 수의 범주가 있는 경우 Nonlinear가 모델을 해결할 수 있을지 모르겠습니다. 또한 시작 값 목록을 준비하고 제 예제를 사용하여 고유한 값을 사용하고 싶을 수도 있습니다.
나는 당신의 데이터 테이블이 없지만 당신이 가지고 있다고 생각하는 것(Category, rRelax, tStress 열)에 대한 내 모형이 효과가 있었습니다.
/* 이러한 열이 존재한다고 가정하거나 스크립트 변수에 할당하기 위해 사용자 지정 대화 상자를 만듭니다.
범주
t릴렉스
스트레스
*/
// 모든 카테고리 찾기
범주# = : 범주 << 값 가져오기 ;
// 표현식을 사용하여 내부에서 외부로 공식 작성
일치 expr p# = 일치 expr r0# = 특급 ( 성냥 ( : 범주 ) ) ;
매개변수 목록# = 목록 ( 비 = 2 , 베타 = 0 ) ;
// 모든 범주에 대해 반복
을 위한 ( 씨 = 1 , 씨 <= N 항목 ( 범주# ) , 씨 ++,
// 카테고리별 R0 매개변수를 만듭니다.
평가 (
구문 분석 (
대리자 (
"Insert Into( 매개변수 목록#, Expr( Name( \!"R0_ccc\!" ) = 2 ) )" ,
"cc" ,
범주# [ 씨 ]
)
)
) ;
에 집어 넣다 ( 일치 expr r0# , 범주# [ 씨 ] ) ;
평가 (
구문 분석 (
대리자 (
"Insert Into( match expr r0#, Expr( Name( \!"R0_ccc\!" ) ) )" ,
"cc" ,
범주# [ 씨 ]
)
)
) ;
// 카테고리별 P 매개변수를 만듭니다.
평가 (
구문 분석 (
대리자 (
"Insert Into( 매개변수 목록#, Expr( Name( \!"P_ccc\!" ) = 2 ) )" ,
"cc" ,
범주# [ 씨 ]
)
)
) ;
에 집어 넣다 ( 일치 expr p# , 범주# [ 씨 ] ) ;
평가 (
구문 분석 (
대리자 (
"Insert Into( match expr p#, Expr( Name( \!"P_ccc\!" ) ) )" ,
"cc" ,
범주# [ 씨 ]
)
)
) ;
) ;
// 일반 모델 공식으로 대체
수식 expr# = 대리자 (
특급 ( 매개변수 ( ㄹㅇ , rrr / ( 1 + 비 * ( : t릴렉스 / : 스트레스 ) ^^ 베타 + ppp ) ) ) ,
특급 ( ㄹㅇ ) ,
매개변수 목록# ,
특급 ( rrr ) ,
이름 Expr ( 일치 expr r0# ) ,
특급 ( ppp ) ,
이름 Expr ( 일치 expr p# )
) ;
// 모델 열 수식 설정
평가 (
대리자 (
특급 ( 현재 데이터 테이블 () << 새 열 ( "모델" , 공식 ( ffff ) ) ) ,
특급 ( ffff ) ,
이름 Expr ( 수식 expr# )
)
) ;
Re: 범주별로 확장된 매개변수를 사용한 비선형 회귀안녕,
답장을 보내 주셔서 감사합니다. 설명서를 통해 봤습니다. 여전히 내가 찾던 것을 얻을 수 없었습니다.
저는 지금 이 비선형 피팅을 스크립트로 작성하려고 하고 있으며 몇 가지 문제에 직면하고 있습니다. 도움이 필요해. 여기서 문제를 반복합니다.
4개의 적합 매개변수가 있는 모델에 적합해야 하는 데이터가 있습니다. 각 범주에 대한 적합은 서로 독립적이지 않습니다. 위의 게시물에 표시된 것처럼 2개의 적합 매개변수인 B와 베타는 고유해야 합니다. 즉, 회귀 적합은 모든 범주에 대해 고유한 B와 베타를 추출합니다. 다른 두 매개변수 P와 R0은 범주에 따라 다를 수 있습니다.
JMP 인터페이스는 다음과 같습니다.

이제 이것을 JSL로 코딩해야 합니다.
4개의 고유한 매개변수를 모두 얻기 위해 다음을 수행할 수 있다는 것을 알고 있습니다.
dt << New Column("모델", 숫자, 연속, Formula( Parameter( {B = 5, beta = 0.25, P = 10, R0 = 10}, R0 / (1 + B * (:Name( "tRelax())) s)" ) / :이름( "tStress(s)" )) ^ 베타) + 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 및 베타는 질문에서 묻는 C 및 D에 해당하는 반면 P는 범주에 따라 다를 수 있는 A 또는 B와 같은 매개변수입니다.
아래는 모든 범주에 대해 일정하게 유지되는 매개변수로 B와 베타를 사용하여 수행 중인 피팅의 스크린샷이고 P는 범주에 따라 다를 수 있는 매개변수입니다.
문제는 모든 카테고리에서 최고의 B와 베타를 얻는 방법입니다. 처음에는 각 범주에 대해 다른 B와 베타를 찾고 모든 범주에 충분히 좋은 최상의 B와 베타를 얻기 위해 일부 통계를 수행합니까? 그렇다면 통계는 무엇을 사용합니까?
감사
비노이

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