2016-08-24 6 views
1

비선형 실제 데이터를 시작하지 않고 파라미터 N = 2,600R 오류 : 값

SAMPLE 
X values 71.33 74.98 80 85.35 90.03 
Y values 119.17 107.73 99.72 75 54.59 

는 I 수동 R의 NLS 수식을 사용하여 시작점

formula: y = b/x^2+a 
manual: y = 800000/x^2-39.5 
sum of residuals = 185 
correlation forecast to actual =0.79 

를 수식 그래프 오류 메시지가 표시됩니다.

a_start = -39.5 
b_start = 800000 
m<-nls(y~b/(x^2)+a, start=list(a=a_start,b=b_start)) 

Error in nls(y~ b/(x^2) + a, start = list(a = a_start, b = b_start)) : 
parameters without starting value in 'data': y, x 

여기에 무엇이 누락되어 있는지 확실하지 않습니다.

답변

3

오류가 재현 될 수 있습니다. nls 함수에 data 인수가 누락되었습니다.

m<-nls(y ~ b/(x^2)+a, start=list(a=a_start, b=b_start)) 
# Error in nls(y ~ b/(x^2) + a, start = list(a = a_start, b = b_start)) : 
# parameters without starting value in 'data': y, x 

이제 데이터 df이 생성되어 nls 기능으로 전달됩니다. I()의 절연 된 표현식이 의도 된 것인지 확인하십시오.

df <- data.frame(x = c(71.33, 74.98 , 80 , 85.35 , 90.03), 
       y = c(119.17, 107.73 , 99.72 , 75, 54.59)) 
a_start <- -39.5 
b_start <- 800000 
m <- nls(y ~ I(b/(x^2+a)), data = df, start=list(a=a_start, b=b_start)) 
summary(m) 

# Formula: y ~ I(b/(x^2 + a)) 
# 
# Parameters: 
# Estimate Std. Error t value Pr(>|t|) 
# a -1743.2  872.5 -1.998 0.1396 
# b 412486.2 89981.4 4.584 0.0195 * 
# --- 
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
# 
# Residual standard error: 9.103 on 3 degrees of freedom 
# 
# Number of iterations to convergence: 6 
# Achieved convergence tolerance: 4.371e-06 

격리 된 표현식은 공식 맨 페이지를 참조하십시오.

?formula 

formula의 맨 페이지는 공식 연산자와 산술 연산자 사이의 모호성을 방지하기 위해 I()를 사용하여 제안 또한

The^operator indicates crossing to the specified degree. For example (a+b+c)^2 is identical to (a+b+c)*(a+b+c) which in turn expands to a formula containing the main effects for a, b and c together with their second-order interactions

말한다.

여기 공식 메뉴얼 페이지

avoid this confusion, the function I() can be used to bracket those portions of a model formula where the operators are used in their arithmetic sense. For example, in the formula y ~ a + I(b+c), the term b+c is to be interpreted as the sum of b and c.

에서 다른 견적 또한이 사람 페이지

?AsIs 

In function formula. There it is used to inhibit the interpretation of operators such as "+", "-", "*" and "^" as formula operators, so they are used as arithmetical operators. This is interpreted as a symbol by terms.formula.

+0

사티시를 읽는 가치가, 감사합니다! – aSportsguy

+0

예, 완벽하게 변경되었습니다. 나는 프로그래머가 아니기 때문에 R 문서 중 일부를 읽기가 어렵거나 특정 구문 솔루션을 찾기 위해 여기를 찾는다. . . – aSportsguy