2017-10-01 17 views
0

두 개의 인수, 0:16과 네 개의 매개 변수 값이 포함 된 벡터 사이의 숫자를 사용하는 함수를 작성했습니다. 벡터의 매개 변수를 변경하면 함수의 출력이 변경되지만 0:16 사이의 숫자를 변경하면 변경되지 않습니다.함수가 값을 변경하지 않습니다.

나는 문제가있는 기능에 동일한 인수를 사용하는 다른 함수 ('pi')가 포함되어 있다고 덧붙일 수 있습니다. 필자는 0:16에서 값을 변경하면 'pi'함수가 실제로 값을 변경한다는 것을 확인했습니다 (매개 변수의 값을 변경하면 변경됩니다).

첫째, 여기 내 코드가 있습니다. pterm_ny (I, C (0.2,0.2,2,2)) 0.75 반환

pterm_ny <- function(x, theta){ 
(1-sum(theta[1:2]))*(theta[4]^(x))*exp((-1)*theta[4])/pi(x, theta) 
} 

pi <- function(x, theta){ 
theta[1]*1*(x==0)+theta[2]*(theta[3]^(x))*exp((-1)*(theta[3]))+(1- 
sum(theta[1:2]))*(theta[4]^(x))*exp((-1)*(theta[4])) 
} 

가 있었다 I = 1, 표시기 하더군요 ..., 16 및 I에 대한 0.2634 = 0, 'pi'의 함수 부분이 작동하지 않습니다.

특정 권력으로 숫자를 올리는 것과 관련하여, 내가 원하는 전화 번호를 'I'로 묶어야한다고 예를 들었습니다.

x^I(2) 

나는 내 코드에서 그렇게하려고 시도했지만 그 역시 도움이되지 못했습니다. 나는 그것을하는 것에 대한 논쟁을 기억할 수는 없지만, 괄호 안의 숫자가 정수로 해석되어야한다고 생각합니다.

내 최종 목표는 'pterm'의 17 가지 값을 얻고이를 달성하기 위해이 같은 sapply 함수를 사용하려고 생각했습니다.

나는 누군가가 내가 여기에서 놓치고있는 것을 지적 할 수 있기를 정말로 바란다.

미리 감사드립니다.

+0

그것은 세타 [3]'조건이 동일하지 않은이 값을보십시오. 상쇄하고 그래서 [4]'당신이 세타을 '동일'때문입니다 I(x^2)으로 사용된다 실제로 다른 x에 대해 다른 결과를 얻습니다. –

+0

@AndrewGustar 감사합니다! Ben의 답변과 결합하여 저에게 해주었습니다. 그 점을 알아 차렸을 것입니다! –

답변

2

주 식과 pi() 함수 모두에 theta[4]^x이라는 용어가 있습니다. 이 또한

... x의 변화에 ​​불변 결과를 떠나, 상쇄되어 있습니다 : 그것은 또한 내장 변수 (3.14159의로

  • 당신은 함수 이름으로 pi을 사용하지 않도록 할 수 있습니다 ...) - 때때로 혼란을 일으킬 수 있습니다.
  • "있는 그대로"기능을 사용하는 방법에 대한 조언 I()은 수식 내에서만 관련이 있습니다. lm() (선형 회귀 분석)에서 사용 된 것처럼. (하지 x^I(2)
+0

그 점을 지적 해 주셔서 감사합니다. 그냥 지워 버리면 두 항 모두에서 해소되는 theta [4]^x가 아니라 x의 힘으로 올라간 결과가 분모와 항의 양쪽 항의 같은 크기로 발생하기 때문에 효과가 있습니다. 분자, 맞습니까? –

+0

예 (q를 읽지 않았습니다. 신중하게 충분히 uite). –