2017-11-26 1 views
1

현재 R의 ggplot2을 사용하여 일부 밀도 분포 함수를 플롯하려고합니다.stat_functions를 사용한 기본 계산 - 위험 요소 플로팅

https://i.stack.imgur.com/w2nlZ.gif

위의 코드는 저에게이 있습니다 : 플롯 할

f <- stat_function(fun="dweibull", 
        args=list("shape"=1), 
          "x" = c(0,10)) 
stat_F <- stat_function(fun="pweibull", 
        args=list("shape"=1), 
          "x" = c(0,10)) 
S <- function() 1 - stat_F 

h <- function() f/S 
wei_h <- ggplot(data.frame(x=c(0,10))) + 
     stat_function(fun=h) + 
     ... 

은 기본적으로 내가 의미하는 매개 변수를 변화와 이블 분포에 따라 위험의 기능을 플롯 할 : 나는 다음과 같은 코드가 있습니다 오류 : 내가 직접

을 사용하려고

Computation failed in stat_function() : unused argument (x_trans)

S <- 1 - stat_function(fun="pweibull", ...) 

위의 "해결 방법"대신 사용자 지정 함수 구성을 사용하십시오.

non-numeric argument for binary operator

은 그 오류,하지만 난 솔루션에 대한 생각이 없다 : 나는 물체에 숫자를 arithmetics을하려고 이후이 또 다른 오류가 발생했습니다.

나는 약간의 연구를했지만 성공하지 못했습니다. 나는 이것이 솔직해야한다고 생각합니다. 또한 가능한 한 "수동으로"하고 싶습니다만,이 작업을 수행 할 간단한 방법이 없다면 패키지 된 솔루션도 괜찮습니다.

미리 제안 해 주셔서 감사합니다.

추신 : 기본적으로 연결된 PDF 파일의 10 페이지의 Kiefer, 1988에서 찾을 수있는 그래프를 다시 만들고 싶습니다.

답변

1

3 개 의견 :

  1. stat_function이 ggplot2에 대한 함수 통계입니다, 당신은 서로에 의해 두 stat_function 표현을 분할 할 수 없거나 다른 S <- 1 - stat_function(fun="pweibull", ...) 같이 수학적 표현식에서 사용할. 그것은 stat_function의 근본적인 오해입니다. stat_function은 아래 예제와 같이 항상 ggplot2 플롯에 추가해야합니다.

  2. stat_function의 인수는 문자열이 아닌 인수로 함수를 취합니다. 이미 존재하지 않는 함수가 필요할 경우 즉석에서 함수를 정의 할 수 있습니다.

  3. aes 기능을 통해 미적 매핑을 설정해야합니다.

이 코드는 작동합니다

args = list("shape" = 1.2) 
ggplot(data.frame(x = seq(0, 10, length.out = 100)), aes(x)) + 
    stat_function(fun = dweibull, args = args, color = "red") + 
    stat_function(fun = function(...){1-pweibull(...)}, args = args, color = "green") + 
    stat_function(fun = function(...){dweibull(...)/(1-pweibull(...))}, 
       args = args, color = "blue") 

enter image description here