안녕하세요...비선형분석 돌리다 질문이 생겨서 글을 남깁니다.
initial value 를 자동으로 제공하는 함수로 nonlinear regression을 fit 하려고 하는데 문제가 자꾸만 생깁니다. 총 질문이 3가지 입니다.
data는 첨부도 하고 아래에도 붙였습니다.
le2_test.csv
1. SSlogis 는 문제가 없는데 다른 function들은 전혀 맥히지가 않습니다.
> library(NRAIA)
> le=read.csv("c:/data/le2.csv")
> GA=nls(GA~SSlogis(YEAR, b1, b2, b3), data= le)
> summary(GA)
Formula: GA ~ SSlogis(YEAR, b1, b2, b3)
Parameters:
Estimate Std. Error t value Pr(>|t|)
b1 120.21 8.16 14.732 < 2e-16 ***
b2 1920.72 15.30 125.508 < 2e-16 ***
b3 123.90 14.17 8.745 1.69e-11 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.144 on 48 degrees of freedom
Number of iterations to convergence: 0
Achieved convergence tolerance: 1.664e-07
하지만 SSgompertz 를 시행하면 바로 에러가 납니다.
> GA2=nls(GA~SSgompertz(YEAR, b1, b2, b3), data= le)
다음에 오류qr.qty(QR.rhs, .swts * ddot(attr(rhs, "gradient"), lin)) :
외부 함수의 호출(arg 5)에 NA/NaN/Inf가 있습니다
도대체 왜 이런 문제가 생기는지 알수가 없습니다.
책에 나오는 SSbiexp( ) 실행이 안되는것은 마찬가지이고요...
오직 logistic function 만 실행이 됩니다.
필요한 모델은 logistic 과 gompertz 두개입니다.
2. nonlinear regression을 돌리고 r-squareds 를 알려면 어떤 추가 명령어를 치면 될런지요...
lm은 summary 만 돌려도 나오는데 nls는 왜 안나오는지 모르겠습니다.
3. 그래프 관련해서 질문인데요..만약에 nls를 3개를 돌리고 각각 이름이 GA, GA1, GA2 이라면
이것들을 한꺼번에 표에 나오게 하려면 어떻게 해야할까요?
책에는 plotfit(GA) 하나만 나와 있어서 동시에 하려면 어찌해야 될지 궁금합니다.
읽어주셔서 감사드리고 답변 꼭 부탁드립니다.
> le
YEAR GA GB GBT GC GCT
1 1960 69.75847 64.57013 66.74877 52.27871 51.91844
2 1961 70.07266 66.20601 67.58606 52.71048 52.34596
3 1962 70.06897 66.60206 67.79440 53.20449 52.82769
4 1963 70.24533 65.93180 67.60692 53.76995 53.37281
5 1964 70.71230 66.34392 67.88056 54.40298 53.97840
6 1965 70.76046 66.74295 68.05018 55.08591 54.62879
7 1966 71.02457 67.99674 68.76493 55.79121 55.29919
8 1967 71.26421 68.20076 68.91259 56.48543 55.95920
9 1968 71.18898 68.46567 68.98365 57.14270 56.58529
10 1969 71.35038 68.79813 69.07821 57.75093 57.16675
11 1970 71.61278 69.11636 69.28248 58.30638 57.70019
12 1971 71.95761 69.55194 69.59917 58.81541 58.19111
13 1972 72.09970 69.68721 69.74757 59.29709 58.65682
14 1973 72.27500 70.06246 69.99888 59.76761 59.11254
15 1974 72.65605 70.36008 70.25688 60.23335 59.56475
16 1975 72.97086 70.73472 70.53611 60.69832 60.01842
17 1976 73.24364 71.00382 70.70547 61.16445 60.47695
18 1977 73.61029 71.25754 70.88480 61.62944 60.93892
19 1978 73.80733 71.56084 71.08933 62.09126 61.40279
20 1979 74.09724 71.78349 71.24744 62.54959 61.86780
21 1980 74.18813 72.17906 71.46163 63.00616 62.33548
22 1981 74.52431 72.50944 71.73641 63.46198 62.80616
23 1982 74.83121 72.73823 71.89499 63.91542 63.27657
24 1983 74.98817 72.93123 71.95511 64.36352 63.74179
25 1984 75.33299 73.38084 72.31226 64.80260 64.19628
26 1985 75.44767 73.72601 72.59952 65.22612 64.63267
27 1986 75.70180 73.95445 72.87159 65.62645 65.04307
28 1987 75.99870 74.27929 73.19416 65.99990 65.42293
29 1988 76.11130 74.36601 73.32321 66.34588 65.76994
30 1989 76.39431 74.87192 73.59539 66.66522 66.08227
31 1990 76.58345 75.19077 73.75749 66.96257 66.36113
32 1991 76.73561 75.53505 74.02304 67.24451 66.60974
33 1992 76.95833 75.67961 74.18112 67.51954 66.83480
34 1993 77.06634 76.11782 74.47316 67.79443 67.04225
35 1994 77.38258 76.28191 74.46826 68.07276 67.23566
36 1995 77.45143 76.40427 74.69644 68.35635 67.41536
37 1996 77.78199 76.81074 75.28311 68.64407 67.57947
38 1997 78.07878 77.08531 75.51309 68.93227 67.72770
39 1998 78.18474 77.24967 75.63449 69.21688 67.86140
40 1999 78.36969 77.48977 75.91566 69.49694 67.98534
41 2000 78.71470 77.99076 76.34401 69.77098 68.10491
42 2001 78.97875 78.35247 76.64182 70.03690 68.22473
43 2002 79.08606 78.52146 76.85357 70.29486 68.35014
44 2003 79.22983 78.72268 77.09181 70.54597 68.48680
45 2004 79.69003 79.06820 77.47954 70.79124 68.63947
46 2005 79.74749 79.35049 77.76938 71.03363 68.81431
47 2006 80.08293 79.57125 78.04600 71.27777 69.01687
48 2007 80.31906 79.88618 78.31914 71.52549 69.24529
49 2008 80.44024 80.10976 78.63503 71.77771 69.49577
50 2009 80.57499 80.52949 79.04449 72.03368 69.76453
51 2010 80.78101 80.89507 79.42303 72.29012 70.04472
첫댓글 1. nonlinear regression은 데이터가 모형에서 조금 벗어나면 fit이 안되는 경우가 많습니다. 전혀 놀라운 일이 아닙니다.
2. r-square는 linear modes에나 있는 개념입니다. nonlinear models에서는 적용이 안됩니다.
3. plotfit()은 그런 기능은 없을겁니다. fitted()로 세개의 결과물의 y-hat을 구해서 x에 대해서 그려야합니다.
답변 감사합니다.
많은 도움이 되었습니다. :)