R을 사용하여 "다봉"로그 정규 분포 피팅

P. 차키 테이

내 질문은 여기 에있는 것과 비슷 하지만 R에서하고 싶습니다. 데이터 프레임은

x<-c(0.35,0.46,0.60,0.78,1.02,1.34,1.76,2.35,3.17,4.28,5.77,7.79,10.50,14.20,19.10,25.80)
y<-c(32.40,43.00,37.20,26.10,17.40,14.00,19.90,36.90,48.60,55.30,64.60,70.20,63.90,47.60,22.70,10.30)

df<-data.frame(x,y)
plot(df,log='xy')

여기에 이미지 설명 입력

여기에 플로팅하면 데이터가 어떻게 보이는지 나타납니다. x 스케일 단위로 0.5 정도의 모드와 8 정도의 모드가 있습니다.

이러한 데이터에 "다중 모드"로그 정규 분포를 어떻게 맞출 수 있습니까 (이 경우 2 개의 곡선이 있음)? 내가 시도한 것입니다. 문제를 해결하는 데 도움이나 지시 사항이 있으면 대단히 감사하겠습니다.

ggplot(data=df, aes(x=x, y=y)) + 
  geom_point() + 
  stat_smooth(method="nls", 
              formula=y ~ a*dlnorm(x, meanlog=8, sdlog=2.7),
              method.args = list(start=c(a=2e6)), 
              se=FALSE,color = "red", linetype = 2)+
  scale_x_log10()+
  scale_y_log10()
jay.sf

나는 당신이 원한다고 가정하고 nls있습니다. 방정식에서 두 개의 매개 변수 (예 : a및) 를 정의하여 두 가지 모드를 고려할 수 있습니다 b. start=모두에 대해 정의하십시오 . (지금은 모든 값을 추측했습니다.)

fit <- nls(y ~ a*dlnorm(x, meanlog=.5, sdlog=.5) + b*dlnorm(x, meanlog=8, sdlog=2.7),
           data=df1, start=list(a=1, b=1))
summary(fit)
# Formula: y ~ a * dlnorm(x, meanlog = 0.5, sdlog = 0.5) + b * dlnorm(x, 
#     meanlog = 8, sdlog = 2.7)
# 
# Parameters:
#   Estimate Std. Error t value Pr(>|t|)    
# a   -81.97      16.61  -4.934  0.00022 ***
# b 30695.42    2417.90  12.695 4.53e-09 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 11.92 on 14 degrees of freedom
# 
# Number of iterations to convergence: 1 
# Achieved convergence tolerance: 4.507e-07

fitted()이미 데이터 프레임의 값을 y따라 적합 값을 제공합니다 x.

fitted(fit)
# [1] 45.56775 44.59130 38.46212 27.34071 15.94205 12.76579 21.31640
# [8] 36.51385 48.68786 53.60069 53.56958 51.40254 48.41267 44.95541
# [15] 41.29045 37.41424
# attr(,"label")
# [1] "Fitted values"

predict()이것을 위해 사용할 수도 있습니다 .

stopifnot(all.equal(predict(fit), as.numeric(fitted(fit))))

그러나 더 부드러운 선을 얻으 려면 축을 따라 더 미세한 집합을 따라 predict이온 (즉, y값)이 필요 x합니다 x.

plot(df1, log='xy')
x.seq <- seq(0, max(df$x), .1)
lines(x=x.seq, y=predict(fit, newdata=data.frame(x=x.seq)), col=2)

여기에 이미지 설명 입력

참고 사항 : 이것이 매우 일반적 이더라도 데이터 프레임의 이름을 지정 하면 F 분포 df의 밀도 함수 df()사용되는 것과 동일한 이름을 사용 하므로 혼동이 발생할 수 있습니다! 이런 이유로 나는 df1.


데이터:

df1 <- structure(list(x = c(0.35, 0.46, 0.6, 0.78, 1.02, 1.34, 1.76, 
2.35, 3.17, 4.28, 5.77, 7.79, 10.5, 14.2, 19.1, 25.8), y = c(32.4, 
43, 37.2, 26.1, 17.4, 14, 19.9, 36.9, 48.6, 55.3, 64.6, 70.2, 
63.9, 47.6, 22.7, 10.3)), class = "data.frame", row.names = c(NA, 
-16L))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파이썬을 사용하여 "다중 모드"로그 정규 분포를 데이터에 피팅

분류에서Dev

특정 모수를 사용하여 R의 정규 분포 플로팅

분류에서Dev

histfit을 사용하여 정규 분포를 피팅 할 때 Bin 가장자리 지정

분류에서Dev

R로 분포 피팅하기

분류에서Dev

로그 정규 분포 플로팅

분류에서Dev

사용자 지정 Scipy 분포 피팅

분류에서Dev

R에서 'sapply'를 사용하여 정규 분포로 행렬 생성

분류에서Dev

범위를 지정하기 위해 콜백 / 위젯을 사용하여 정규 분포를 플로팅합니다.

분류에서Dev

R의 상자 그림 옆에 수직 정규 분포 플로팅

분류에서Dev

MATLAB으로 로그 정규 분포의 적분을 계산하는 방법

분류에서Dev

정규식을 사용하여 아포스트로피가있는 단어를 선택하는 방법

분류에서Dev

루비에서 정규식을 사용하여 따옴표 주위의 공백 (아포스트로피) 제거

분류에서Dev

R을 사용하여 두 개의 정규 분포의 혼합물에서 샘플링 된 일련의 관측치에 대한 로그 우도 계산

분류에서Dev

정규식을 사용하여 그룹의 문자열 구분

분류에서Dev

python matplotlib를 사용하여 정규 분포에 대한 히스토그램을 어떻게 그리나요?

분류에서Dev

팬더는 정규식을 사용하여 열로 분할

분류에서Dev

or 문으로 정규식을 사용하여 문자열 분할

분류에서Dev

ggplot을 사용하여 정규 분포로 그룹화 된 히스토그램을 만드는 방법은 무엇입니까?

분류에서Dev

SQL Server 2012의 열을 기반으로 정규 분포를 사용하여 임의의 행 선택

분류에서Dev

막대 그래프를 R에서 정규 분포로 정규화하는 방법은 무엇입니까?

분류에서Dev

ggplot을 사용하여 히스토그램에 다른 분포를 플로팅합니다.

분류에서Dev

정규식을 사용하여 문자열을 여러 문자열로 분할

분류에서Dev

R에서 : 정규식을 사용하여 값을 열 이름으로 깔끔하게 분할하고 스윙

분류에서Dev

MATLAB에서 곡선 피팅을 사용하여 포아송 PDF 매개 변수 추정

분류에서Dev

JFreechart를 사용하여 여러 줄로 된 정규 분포 그래프 만들기

분류에서Dev

정규식 찾기 포팅 응용 프로그램에 대한 문자열의 개별 부분 바꾸기

분류에서Dev

정규식을 사용하여 문장에서 해시 태그 구문 분석

분류에서Dev

정규식 파이썬을 사용하여`| 태그에 오류가`으로 구분

분류에서Dev

Perl은 정규식을 사용하여 xml 태그를 수동으로 구문 분석합니다.

Related 관련 기사

  1. 1

    파이썬을 사용하여 "다중 모드"로그 정규 분포를 데이터에 피팅

  2. 2

    특정 모수를 사용하여 R의 정규 분포 플로팅

  3. 3

    histfit을 사용하여 정규 분포를 피팅 할 때 Bin 가장자리 지정

  4. 4

    R로 분포 피팅하기

  5. 5

    로그 정규 분포 플로팅

  6. 6

    사용자 지정 Scipy 분포 피팅

  7. 7

    R에서 'sapply'를 사용하여 정규 분포로 행렬 생성

  8. 8

    범위를 지정하기 위해 콜백 / 위젯을 사용하여 정규 분포를 플로팅합니다.

  9. 9

    R의 상자 그림 옆에 수직 정규 분포 플로팅

  10. 10

    MATLAB으로 로그 정규 분포의 적분을 계산하는 방법

  11. 11

    정규식을 사용하여 아포스트로피가있는 단어를 선택하는 방법

  12. 12

    루비에서 정규식을 사용하여 따옴표 주위의 공백 (아포스트로피) 제거

  13. 13

    R을 사용하여 두 개의 정규 분포의 혼합물에서 샘플링 된 일련의 관측치에 대한 로그 우도 계산

  14. 14

    정규식을 사용하여 그룹의 문자열 구분

  15. 15

    python matplotlib를 사용하여 정규 분포에 대한 히스토그램을 어떻게 그리나요?

  16. 16

    팬더는 정규식을 사용하여 열로 분할

  17. 17

    or 문으로 정규식을 사용하여 문자열 분할

  18. 18

    ggplot을 사용하여 정규 분포로 그룹화 된 히스토그램을 만드는 방법은 무엇입니까?

  19. 19

    SQL Server 2012의 열을 기반으로 정규 분포를 사용하여 임의의 행 선택

  20. 20

    막대 그래프를 R에서 정규 분포로 정규화하는 방법은 무엇입니까?

  21. 21

    ggplot을 사용하여 히스토그램에 다른 분포를 플로팅합니다.

  22. 22

    정규식을 사용하여 문자열을 여러 문자열로 분할

  23. 23

    R에서 : 정규식을 사용하여 값을 열 이름으로 깔끔하게 분할하고 스윙

  24. 24

    MATLAB에서 곡선 피팅을 사용하여 포아송 PDF 매개 변수 추정

  25. 25

    JFreechart를 사용하여 여러 줄로 된 정규 분포 그래프 만들기

  26. 26

    정규식 찾기 포팅 응용 프로그램에 대한 문자열의 개별 부분 바꾸기

  27. 27

    정규식을 사용하여 문장에서 해시 태그 구문 분석

  28. 28

    정규식 파이썬을 사용하여`| 태그에 오류가`으로 구분

  29. 29

    Perl은 정규식을 사용하여 xml 태그를 수동으로 구문 분석합니다.

뜨겁다태그

보관