알 수없는 여러 노트로 부분 선형 회귀를 수행하는 방법은 무엇입니까?


14

다중 매듭을 자동으로 감지 할 수있는 부분 선형 회귀를 수행하는 패키지가 있습니까? 감사. strucchange 패키지를 사용할 때 변경점을 감지 할 수 없습니다. 변경점이 어떻게 감지되는지 전혀 모른다. 줄거리에서 나는 그것을 골라내는 데 도움이 될 몇 가지 점이 있음을 알 수 있었다. 누구든지 여기에 예를 줄 수 있습니까?


1
이것은 stats.stackexchange.com/questions/5700/… 과 같은 질문으로 보입니다 . 실질적인 차이가있는 경우 차이점을 반영하도록 질문을 편집하여 알려주십시오. 그렇지 않으면 복제본으로 닫습니다.
whuber

1
질문을 편집했습니다.
Honglang Wang

1
비선형 최적화 문제 로이 작업을 수행 할 수 있다고 생각합니다. 계수와 매듭 위치를 매개 변수로 사용하여 적합 함수의 방정식을 작성하십시오.
mark999

1
나는 segmented패키지가 당신이 찾고있는 것이라고 생각합니다 .
AlefSin

1
나는 같은 문제가 있었고 R의 segmented패키지로 해결했다 : stackoverflow.com/a/18715116/857416
다른 벤

답변:


8

겠습니까 MARS는 적용 할 수? R에는이 earth를 구현 하는 패키지 가 있습니다.


8

일반적으로 조각 단위의 선형으로 무언가를 맞추는 것은 약간 이상합니다. 그러나 실제로 그렇게하려면 MARS 알고리즘이 가장 직접적입니다. 한 번에 한 매듭의 함수를 만들 것입니다. 그런 다음 일반적으로 과잉 맞춤 알라 결정 트리와 싸우기 위해 매듭 수를 정리합니다. 당신은을 통해 R에 화성 algotithm에 액세스 할 수 있습니다 earth또는 mda. 일반적으로 다른 정보 기준 (AIC, BIC 등)에서 아직 제거되지 않은 GCV에 적합합니다.

매듭은 한 번에 하나씩 성장하기 때문에 MARS는 실제로 "최적의"적합을 제공하지 않습니다. 매듭 배치의 가능한 순열이 빠르게 폭발하기 때문에 실제로 "최적의"수의 매듭을 맞추는 것이 실제로 어려울 것입니다.

일반적으로 이것이 사람들이 스플라인 스무딩으로 향하는 이유입니다. 대부분의 스무딩 스플라인은 입방체이므로 불연속성이없는 사람의 눈을 속일 수 있습니다. 그러나 선형 스무딩 스플라인을 수행하는 것이 가능할 것입니다. 스플라인 스무딩의 가장 큰 장점은 최적화 할 단일 매개 변수입니다. 이를 통해 순열을 탐색 할 필요없이 진정한 "최적의"솔루션에 빠르게 도달 할 수 있습니다. 그러나 변곡점을 실제로 찾고 싶고 충분한 데이터가 있다면 MARS와 같은 것이 가장 좋습니다.

다음은 R의 불완전 선형 스무딩 스플라인에 대한 예제 코드입니다.

require(mgcv);data(iris);
gam.test <- gam(Sepal.Length ~ s(Petal.Width,k=6,bs='ps',m=0),data=iris)
summary(gam.test);plot(gam.test);

선택된 실제 매듭이 반드시 실제 변곡점과 상관되는 것은 아닙니다.


3

몇 년 전에 이것을 처음부터 처음부터 프로그래밍했으며 컴퓨터에서 부분 선형 회귀를 수행하기위한 Matlab 파일이 있습니다. 약 1 ~ 4 개의 브레이크 포인트가 약 20 개의 측정 포인트에 대해 계산 가능합니다. 5 개 또는 7 개의 중단 점이 실제로 너무 많아지기 시작합니다.

내가 보는 순수한 수학적 접근 방식은 사용자 mbq가 제안한대로 가능한 모든 조합을 시도하여 질문 아래의 주석에 링크 된 것입니다.

적합 선은 모두 연속적이고 인접하며 (겹치지 않음) 결합기는 파스칼 삼각형을 따릅니다. 선 세그먼트에 의해 사용 된 데이터 포인트간에 겹치는 부분이 있다면 조합이 두 번째 종류의 스털링 번호를 따르는 것으로 생각합니다.

내 마음에 가장 좋은 해결책은 적합 선의 R ^ 2 상관 값의 표준 편차가 가장 낮은 적합 선의 조합을 선택하는 것입니다. 예를 들어 설명하려고합니다. 데이터에서 몇 개의 브레이크 포인트를 찾아야하는지 묻는 것은 "영국 해안은 얼마나 오래 걸립니까?"라는 질문과 비슷합니다. 프랙탈에 대한 Benoit Mandelbrots (수학자) 논문 중 하나에서와 같이. 그리고 중단 점 수와 회귀 깊이 사이에는 절충점이 있습니다.

이제 예입니다.

와이엑스엑스와이

엑스와이아르 자형2나는이자형1아르 자형2나는이자형2에스미디엄영형에프아르 자형2V이자형에스에스아르 자형이자형V나는나는영형영형에프아르 자형2111,0000,04001,04000,6788221,0000,01181,01180,69871,0000,00041,00040,7067441,0000,00311,00310,7048551,0000,01351,01350,6974661,0000,02381,02380,6902771,0000,02771,02770,6874881,0000,02221,02220,6913991,0000,00931,00930,700410101,0001,9781,0000,70711190,97090,02710,99800,66731280,89510,11391,00900,55231370,77340,25581,02920,36591460,61340,43211,04550,12811550,43210,61341,04550,12821640,25580,77331,02910,3659170,11390,89511,00900,55231820,02720,97080,99800,667219101,0001,0000,70712020,00941,0001,00940,7004210,02221,0001,02220,69142240,02781,0001,02780,68742350,02391,0001,02390,69022460,01361,0001,01360,69742570,00321,0001,00320,70482680,00041,0001,00040,70682790,01181,0001,01180,698728100,041,0001,040,6788

이 y 값에는 그래프가 있습니다.

이상적인 데이터

분명히 두 개의 중단 점이 있습니다. 인수를 위해 R ^ 2 상관 관계 값을 계산합니다 (Excel 셀 수식 사용 (유럽 도트 쉼표 스타일)).

=INDEX(LINEST(B1:$B$1;A1:$A$1;TRUE;TRUE);3;1)
=INDEX(LINEST(B1:$B$28;A1:$A$28;TRUE;TRUE);3;1)

두 개의 적합 선이 겹치지 않는 모든 조합에 적용됩니다. 가능한 모든 R ^ 2 값 쌍에는 그래프가 있습니다.

R ^ 2 값

문제는 어떤 R ^ 2 값 쌍을 선택해야하는지, 제목에서 요구 한대로 여러 중단 점으로 일반화하는 방법은 무엇입니까? 하나의 선택은 R- 제곱 상관의 합이 가장 높은 조합을 선택하는 것입니다. 이것을 플롯하면 아래의 파란색 상단 곡선이 나타납니다.

R 제곱의 합과 R 제곱의 표준 편차

1,0455

조각 현명한 선형 회귀-Matlab-다중 중단 점



0

... 무엇보다도 AIC AICc BIC Cp와 같은 반복적 인 정보 기준에 따라해야합니다. 매듭 점 수 K = 숫자 od 데이터 점 N 인 경우 "이상적인"적합을 얻을 수 있기 때문입니다. ... 먼저 K = 0을 넣습니다. L = K + 1 회귀 추정, 예를 들어 AICc 계산; 그런 다음 별도의 세그먼트에서 L = 3 또는 L = 4와 같은 최소 수의 데이터 포인트를 가정합니다. ok ... put K = 1; 첫 번째 매듭으로 L 번째 데이터부터 시작하여 SS 또는 MLE을 계산하고 ... N-L 데이터의 마지막 매듭까지 다음 데이터 포인트를 매듭, SS 또는 MLE로 단계적으로 계산합니다. AICc 계산에 가장 적합한 (SS 또는 MLE) 배열을 선택하십시오 ... ... put K = 2; ... 이전의 모든 회귀 (즉, SS 또는 MLE)를 사용하지만 단계별로 단일 세그먼트를 가능한 모든 부분으로 나눕니다 ... AICc 계산에 가장 적합한 (SS 또는 MLE) 배열을 선택하십시오 ... 마지막 AICc가 이전 AICc보다 큰 경우 반복을 중지하십시오! 이것은 AICc 기준에서 최적의 솔루션입니다.


AIC, BIC는 추가 매개 변수에 대해 불이익을 주었으므로 사용할 수 없습니다.
HelloWorld

0

한때 Joinpoint 라는 프로그램을 보았습니다 . 그들은 그들의 웹 사이트에서 "여러 개의 다른 라인이 '조인 포인트 (joinpoints)'에 서로 연결되어있는 결합 점 모델에 적합하다고 말한다." 또한 "사용자는 최소 및 최대 결합 점 수를 제공합니다. 프로그램은 최소 결합 점 수 (예 : 직선 인 0 결합 점)로 시작하여 통계적으로 더 많은 결합 점이 중요하고 모델에 추가되어야하는지 여부를 테스트합니다. (최대 개수까지) "

NCI는 암 비율의 추세 모델링에이 정보를 사용하며, 이는 귀하의 요구에도 적합 할 수 있습니다.


0

데이터에 조각 별 함수를 맞추기 위해 :

여기에 이미지 설명을 입력하십시오

1,2,1,1,2,2,,

여기에 이미지 설명을 입력하십시오

예를 들어 Mats Granvik이 제공 한 정확한 데이터를 통해 결과는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

분산 된 데이터가 없으면이 예제는 그다지 중요하지 않습니다. 산포 된 데이터가있는 다른 예는 참고 문헌에 나와 있습니다.


0

mcp추론 할 변경 지점 수를 알고 있으면 패키지 를 사용할 수 있습니다 . 모델링 유연성과 변경점 및 회귀 매개 변수에 대한 많은 정보를 제공하지만 속도는 떨어집니다.

mcp 웹 사이트에는 많은 적용 예가 포함되어 있습니다.

library(mcp)

# Define the model
model = list(
  response ~ 1,  # plateau (int_1)
  ~ 0 + time,    # joined slope (time_2) at cp_1
  ~ 1 + time     # disjoined slope (int_3, time_3) at cp_2
)

# Fit it. The `ex_demo` dataset is included in mcp
fit = mcp(model, data = ex_demo)

그런 다음 시각화 할 수 있습니다.

plot(fit)

여기에 이미지 설명을 입력하십시오

또는 요약 :

summary(fit)

Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
  1: response ~ 1
  2: response ~ 1 ~ 0 + time
  3: response ~ 1 ~ 1 + time

Population-level parameters:
    name match  sim  mean lower  upper Rhat n.eff
    cp_1    OK 30.0 30.27 23.19 38.760    1   384
    cp_2    OK 70.0 69.78 69.27 70.238    1  5792
   int_1    OK 10.0 10.26  8.82 11.768    1  1480
   int_3    OK  0.0  0.44 -2.49  3.428    1   810
 sigma_1    OK  4.0  4.01  3.43  4.591    1  3852
  time_2    OK  0.5  0.53  0.40  0.662    1   437
  time_3    OK -0.2 -0.22 -0.38 -0.035    1   834

면책 조항 : 저는 mcp의 개발자입니다.


문제에서 "검출"을 사용한다는 것은 변경점의 수와 심지어 존재를 미리 알 수 없음을 나타냅니다.
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.