비선형 방정식 시스템에 대한 최소 제곱 회귀안녕하세요 - 저는 물리적 과정(이것이 무엇을 의미하는지 아는 사람을 위한 이온 흡착)에 대한 다소 복잡한 모델을 가지고 있습니다. 두 개의 시작 변수 x1과 x2, 두 개의 측정된 결과(x1과 x2에 따라 변경되는 y1과 y2), 그리고 측정 불가능하거나 측정하기 어려운 변수 g1,...,gn이 변경되지 않습니다. x1과 x2 중 하나 또는 둘 다 계열의 각 행에 대해 변경될 수도 있습니다. 나는 비선형 방정식 세트 s = f(x1, x2, y1,...,y2, g1,...,gn)와 f의 다른 변수에 대한 다른 함수를 가지고 있습니다. 모델이 되길 원합니다. 예제 방정식은 첨부 파일을 참조하세요.
이를 수행하는 일반적인 방법은 Matlab에서 lsqnonlin을 사용하는 것입니다. 잘 작동하지만 달리기에는 곰입니다. 나는 (그리 간단하지 않은) 열 수식을 사용하는 편이 낫습니다. 그러나 코딩 방법을 완전히 모르겠습니다. 비선형 회귀는 단일 방정식을 위해 만들어졌으며 모두 동일한 s를 설명하는 세 개의 방정식을 사용하면 재귀가 많은 것처럼 보입니다. 또한 손실 함수가 무엇인지 잘 모르겠습니다. MATLAB에서는 추측값을 입력하고, 추측값과 계산된 값 사이의 최소 제곱을 계산하고, 모든 추측과 방정식의 제곱 차이의 합이 허용 오차 범위를 벗어나면 이를 업데이트한 다음 반복합니다. 나는 이것이 비선형 플랫폼에 의해 내부적으로 수행된다고 가정하고 있지만, 차이 제곱의 합이 0이 되기를 원하므로 내 목표는 0입니까? 아니면 그렇지 않은 경우 여러 방정식을 어떻게 수행합니까?
이것이 내가 생각하는 것보다 훨씬 간단하다면 사과드립니다.
고급 통계 모델링윈도우Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀내가 제안하는 한 가지 방법은 적절한 손실 함수를 정의하는 오래된 트릭입니다. 귀하의 경우 손실된 기능은 다음과 같습니다.
(s-f1(...))^2 + (s-f2(...))^2 + (s-f3(...))^2 + ...
각 요소는 시스템의 방정식의 제곱 오류입니다. 이를 요약하고 전반적인 오류를 최소화합니다. 이 접근 방식은 비선형 최소 제곱 문제를 손실 함수 최적화 문제로 변환합니다.
한편, 방정식 시스템에 비선형 최소 제곱을 사용하는 것은 여전히 가능하다고 생각합니다. 단계는 다음과 같습니다.
- 데이터 테이블을 확장하세요. 각 행에 대해 복사본을 만들고 총 복사본 수는 시스템의 방정식 수와 동일합니다. 이것 추가 기능 이 작업에 유용할 수 있습니다. 셀 값이 방정식의 개수인 Freq 열을 만들어야 합니다.
- 이제 그렇게 간단하지 않은 수식 열을 만들어야 합니다. 마지막 단계에서 행을 정렬하는 방법에 따라 수식을 다르게 작성해야 할 수도 있습니다. 그러나 목표는 다음과 같습니다. 원본 행의 각 복사본에 대해 시스템의 방정식 하나에 할당합니다. 따라서 결국 행의 모든 복사본은 시스템의 고유한 방정식과 연결됩니다. 행 번호를 방정식 번호와 연결하는 방법을 알아내야 할 수도 있습니다. 위 추가 기능의 결과로 복사본이 연속된 행에 있는 경우 매핑을 만들기 위해 "모듈로" 기능이 필요할 수 있습니다.
결국, 최소제곱 문제를 해결하려면 아시다시피 비선형을 사용하세요.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀수분 흡착 과정을 모델링하는 데 사용하는 몇 가지 코드가 있습니다. 이는 여러 물리적 모델에 설명된 대로 평형 조건을 찾습니다. 여기에서 공유할 수 있는 코드의 일반 버전을 만들 수 있는지 살펴보겠습니다.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀안녕 @peng_liu 답변 감사드리며 답변이 늦어서 죄송합니다! 논문 + 2개월 된 아기는 후속 조치를 잊어버리게 만듭니다.
s로 무엇을 선택하시겠습니까? 측정된 s가 없으며 matlab 코드에서 s를 추측한 다음 업데이트합니다. 이 작업을 어떻게 제안하시겠습니까?
최소제곱법은 흥미로워 보입니다. 유사한 작업을 수행하는 다른 프로젝트를 위해 만든 테이블이 있습니까? 모든 스크립팅에서 행 기반 수식을 사용하여 많은 작업을 수행하지 않았으며 수행한 경우에도 크게 실패했습니다.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀안녕 @David_Burnham - 예, 일반적인 버전이 있다면 매우 도움이 될 것입니다.Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀축하해요!
따라서 여기서 "s"는 알 수 없는 매개변수입니다. 이 경우 모든 방정식을 다음과 같이 다시 작성하십시오: 0 = f(...) - s.
또는 방정식에 알려진 양이 있는 경우 이를 왼쪽으로 이동합니다. 비선형 플랫폼을 사용할 때 왼쪽은 Y가 됩니다.
예시가 없어서 하나 만들어봤습니다. 첨부: eqns.jmp의 넌센스 시스템
그것은 가지고있다
- Y 열, 알려진 수량.
- 수식 열, 방정식의 오른쪽 크기에 있는 내용
- 레이블 열은 홀수 행이 첫 번째 방정식에 해당하고 짝수 행이 두 번째 방정식에 해당함을 나타냅니다.
- 오른쪽 방정식의 일부인 다른 알려진 양.
단일 열에 두 개의 방정식을 전달하는 방법을 보려면 "수식" 열의 수식을 살펴보세요.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀안내해주셔서 감사합니다 @peng_liu !
테이블을 구성했는데 행이 두 개 있으면 제대로 작동하는 것 같지만, 그 이상을 수행하려고 하면 다음과 같은 결과가 나타납니다.

행이 너무 많아서 실제로 문제가 됩니까? 행을 최소(이 경우 3)로 줄이고 새 테이블을 만들어야 하면 오류가 지속되는 것 같습니다. 이에 대해 어떤 생각이 있습니까? 다음은 모델의 베어본 버전으로 만든 테이블이므로 번거롭지 않습니다. 또한 매개변수를 자체 열(Phi0, sigma0, pHf)에 넣고 중간 공식을 확장하여 열 공식을 더 쉽게 볼 수 있도록 했습니다.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀이 데이터 테이블을 사용하여 비선형 플랫폼을 실행하는 방법을 잘 모르겠습니다. 어느 것이 Y이고, 어느 것이 X입니까?
하지만 "Formula" 열이 X이면 작동하지 않을 것 같습니다. X의 공식은 테이블 변수가 아닌 매개변수를 사용해야 합니다.
다음은 "말도 안되는 데이터 테이블"에서 X 열의 모양입니다.

"수식" 열에는 매개변수 아래에 나열된 항목이 없습니다.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀여기요 @peng_liu - 예, 매개변수로 인해 공식이 100배 길어졌기 때문에 이를 Phi0, sigma0 및 pHf 열(제목에 "."가 있는 열 뒤의 6-8열)에 덤프한 다음 비선형 플랫폼 하단에 있는 "중간 수식 확장" 상자. 이렇게 하면 매개변수를 사용할 수 있지만 각 매개변수에 대해 "확장된 카테고리"가 너무 많기 때문에 수식 열 작업이 불가능하지는 않습니다.
말이 돼?
첨부된 스크린샷에는 수식에서 해당 열과 해당 위치가 표시되어 더 명확해집니다.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀@peng_liu 또한 1) 수치 미분만 옵션을 사용하면 기본 플랫폼으로 이동하는 것 같고 2) 둘 이상의 방정식에 매개변수가 있는 경우 다음과 같은 결과가 나오는 것 같습니다. 오류. 그것이 당신에게 무엇을 말해 주는지 확실하지 않습니다. 해당 오류에 대한 참조를 찾을 수 없어서 당황스럽습니다.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀설명해주셔서 감사합니다. @ehchandler 나는 당신이 지금 무엇을 하고 있는지 이해합니다. 당신이 하고 있는 일은 이렇게 복잡한 문제를 해결하는 좋은 방법입니다. 나에게 새로운 것!
오류 메시지를 살펴봤습니다. "숫자 파생상품만"을 확인해야 합니다.

300개 이상의 매개변수가 있는데 기본 기호 파생이 한계에 도달했습니다.
행은 337개이지만 매개변수는 339개입니다. 이 하위 집합은 솔루션을 얻지 못합니다. 전체 세트에 문제가 없기를 바랍니다.
한편, 귀하의 설정을 살펴보는 동안 흥미로운 점이 하나 발견되었습니다. 나는 당신의 주제를 모른다. 그러나 설정에서 Phi0, sigma0 및 pHf는 pH0의 이산 함수입니다. 세 가지와 pH0 사이의 관계가 알려져 있습니까? 알 수 없는 매개변수가 더 적은 연속 관계가 알려진 경우 매개변수 수를 크게 줄일 수 있습니다.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀@peng_liu 알았어 그게 더 말이 되네. 기호 파생 코드의 용어 또는 매개변수 수에 대한 제한을 알고 계십니까? 왜냐하면 몇 개의 숫자가 포함된 열을 만든 다음 "기준" 기능을 사용하여 계산을 분할할 수 있다고 생각하기 때문입니다. 상징적 파생물은 훨씬 더 빠릅니다.
그리고 흠. 새 매개변수가 어디서 왔는지 확실하지 않습니다. 들어오면 확인해보겠습니다. 알아봐주셔서 감사합니다. 관련 질문 세 가지: 1) 매개변수 개수를 어떻게 확인했는지, 2) 열 수식 메뉴에서 매개변수를 일괄 삭제할 수 있는 방법이 있나요? 내가 알 수 있는 한, 마우스 오른쪽 버튼을 클릭하고 하나씩 삭제를 클릭해야 합니다. 3) 테이블을 사용하여 매개변수와 그 경계를 입력하는 방법이 있습니까? 이것은 정말 속도에 도움이 될 것입니다.
감사해요!
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀매개변수 수에 따른 제한은 없습니다. 그러나 귀하의 경우에는 매개변수의 수가 중요한 요소입니다. 그래서, 당신은 시도하고 확인해야합니다.
귀하의 시스템에는 Phi, sigma, pHf의 세 가지 고유한 매개변수 유형이 있습니다. 그것들은 모두 pH0 값에 따라 조절됩니다. 따라서 매개변수는 서로 다른 pH0에 따라 독립적입니다. 따라서 당신 말이 맞습니다. "By" 맞춤을 사용하면 복잡성을 줄일 수 있습니다.
PS "By"가 원하는 대로 작동하지 않습니다. 모든 행에는 열의 모든 매개변수가 표시됩니다. 매개변수의 하위 집합만 보기 위해 By의 개별 행을 허용하는 것이 가능하지 않습니다.
비선형을 시작한 후 매개변수 수를 확인합니다. 매개변수가 있습니다. 마우스 오른쪽 버튼을 클릭하고 테이블을 만들고 행 수를 계산합니다. 마지막 두 행의 경우 JSL 수식을 편집하는 것이 좋습니다. 열의 수식 편집기를 엽니다. 이를 복사하여 JSL 편집기에 붙여넣습니다. 편집 후 다시 복사하여 붙여넣으세요. 이를 통해 매개변수 목록을 편집할 수 있습니다.
"1" 섹션은 매개변수 목록입니다. "2"는 실제 공식입니다.

Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀'작성자' 사용 방법에 대해 자세히 알아보세요.
행 간의 독립성을 활용하기 위해 By를 사용하고 매개 변수 수를 줄이는 방법이 있는 것 같습니다.
"말도 안되는 시스템"의 v2를 첨부합니다. 먼저 제가 설정한 내용을 설명해주세요.

나는 두 가지 선형 방정식 시스템을 설정했습니다. 행 1과 2는 그룹 열인 시스템 "a"입니다. 그리고 행 3과 4는 시스템 "b"입니다.
각 선형 시스템에는 두 개의 매개변수 "b0"과 "b1"이 있지만 시스템마다 다릅니다. 그리고 매개변수 x1과 x2를 사용하여 "SimY"를 생성합니다. 분석을 위해 SimY를 Y에 복사합니다.
이제 "공식" 열을 보면 "b0" 광고 "b1"을 그룹별로 구분하지 않습니다.

이제 By = Group을 사용하여 비선형을 실행합니다. 보고서는 다음과 같습니다.

각 시스템에 대해 별도의 올바른 솔루션을 찾습니다.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀@peng_liu 예, 저도 by 문제에 직면했습니다. 당신의 솔루션은 좋아 보인다! 그러나 이를 테이블에 적용하려고 하면 오류가 발생합니다. 첨부된 표에 눈에 띄는 문제가 보이시나요? Phi0, sigma0, pHf는 모두 이전과 동일합니다. 그런데 말씀하신 "기준" 방법에 대해 "순환 분류" 열을 만들었지만 "열별 매개변수"가 생겼습니다. 이 열의 수준을 사용하여 범주별로 매개변수를 확장합니다. :Cyclic Categorization 및 :Parameter by 열은 직교(또는 올바른 단어가 무엇이든)하므로 매개변수가 약간의 오프셋(pH0은 x축)으로 전체 곡선에 대해 반복될 수 있어야 하며, 그런 다음 간단히 합칠 수 있습니다. 마지막에 다시. 그러나 내가 말했듯이 매개변수 수준 중 하나만 업데이트하는 데 실패하고 그 이유는 확실하지 않습니다.
by가 카테고리별로 확장된 매개변수와 상호작용하는 방식에 문제가 있을 수 있나요?
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀Column3에 누락된 값이 있습니다. 이는 하나의 그룹에만 결과가 있는 이유를 설명합니다. 하지만 "공식"은 제가 추천한 대로 설정되어 있지 않습니다. 설명을 위해 test.v2를 첨부합니다. 이 접근 방식을 사용하면 더 이상 중간에 Phi0, sigma0 및 pHf가 필요하지 않습니다.
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀@peng_liu 아 이런. 누락된 많은 행을 어떻게 놓쳤는지 잘 모르겠습니다. 알아봐주셔서 감사합니다.
제가 오해하고 있는 것일 수도 있지만, pH0가 x축이므로 귀하의 솔루션은 by 열이 x 열이라는 것을 의미합니까? 예를 들어 100개의 x 값이 있다면 말하자면 100개의 "그룹"이 있는 것입니까?
그렇다면 각 지점에 대한 자체 포함 최소화보다는 여러 지점에서 오류를 최소화하기 때문에 열별 확장 버전이 더 좋지 않습니까? 아니면 손실 함수를 처리하는 더 나은 방법이 단계별로 있습니까? 저는 JMP에 필요한 MATLAB 코드를 맞추는 중이지만 최소화 알고리즘에 대한 전문 지식이 없기 때문에 최고의 기술이 무엇이든 마음에 듭니다.
추신 그리고 아마도 제가 명확하게 밝히지 않았을 수도 있지만, 각 pH0 값(종속 변수)에 대한 각 매개변수의 고유한 값 세트가 있어야 합니다. 그래서 카테고리별로 확장이 필요하다고 생각했어요.
감사해요!
Re: 비선형 방정식 시스템에 대한 최소 제곱 회귀원래 표의 "공식" 열은 pH0에 따라 달라집니다. 그러나 test.jmp의 "공식" 열은 pH0에 의존하지 않습니다. 그건 우리 사이의 오해인 것 같아요. 원래 데이터를 계속 사용하겠습니다. 따라서 Phi0, sigma0, pHf는 "열별 매개변수"가 아닌 pH0에 따라 달라집니다.
처음 세 행을 살펴보겠습니다.

pH0 = 0.2입니다. 따라서 첫 번째 행의 공식은 다음과 같이 표시될 수 있습니다.
f1(Phi0_pH0_0.2, sigma0_pH0_0.2, pHf0_pH0_0.2).
두 번째 및 세 번째 행 수식은 다음과 같습니다.
f2(Phi0_pH0_0.2, sigma0_pH0_0.2, pHf0_pH0_0.2) 및
f3(Phi0_pH0_0.2, sigma0_pH0_0.2, pHf0_pH0_0.2). 세 개의 행이 그룹 1을 형성합니다.
이제 4, 5, 6행을 살펴보세요. pH0 = 0.3입니다. 따라서 세 가지 공식은 다음과 같습니다.
f1(Phi0_pH0_0.3, sigma0_pH0_0.3, pHf0_pH0_0.3),
f2(Phi0_pH0_0.3, sigma0_pH0_0.3, pHf0_pH0_0.3) 및
f3(Phi0_pH0_0.3, sigma0_pH0_0.3, pHf0_pH0_0.3). 세 개의 행이 그룹 2를 형성합니다.
Group1과 Group2는 동일한 매개변수 세트를 공유하지 않습니다. 그들은 독립적입니다. Group1의 오류 최소화는 Group2의 오류 최소화와 아무 관련이 없습니다. 따라서 그룹별로 최적화할 수 있습니다.
Phi0_pH0_0.2, Phi0_pH0_0.3, Phi0_pH0_0.4 등 세 개의 중간 열에 매개변수 세트를 유지하면 각 행에 모든 매개변수가 표시됩니다. pH0으로 비선형을 실행하면 모든 그룹에 수백 개의 매개변수가 나열되는 것을 볼 수 있습니다. 하지만 그중에서도 각 행, 세 행마다 3개만 관련됩니다.
내가 한 일은 "수식" 열 내부에 세 개의 매개변수만 생성한 것입니다. 나는 그것들의 이름을 paramPhi0, paramSigma0, parampHf로 지정했습니다. 3개만 있어도 "pH0"을 기준으로 비선형을 실행하면 플랫폼은 "pH0"을 기준으로 3가지 매개변수의 서로 다른 세트를 생성합니다. 말 그대로 "pH0"에 의해 수백 개의 매개변수가 생성됩니다. 그리고 pH0에 의한 각각의 작은 비선형은 세 가지 매개변수에 대해 걱정하면 됩니다.