R에서 DirichReg 패키지를 사용하여 수식 개체를 Dirichlet 회귀로 전달하려고합니다. 아래 그림과 같이 패키지가 수식을 받아들이지 않는 것 같습니다. 이 형식으로되어 있지만 설명서의 어떤 것도이 제한 사항에 유의하지 않습니다. 이 워크 플로의 이유는 서로 다른 공식 (다른 공변량의 IE)에 적용 할 수있는 교차 유효성 검사 기능을 설정하고 모델 선택에 도움이되는 샘플 외부 예측 기능을 반환하기 위해서입니다.수식 개체를 DirichReg에 전달하는 방법 (기능 설정)
library (DirichletReg)
df <- ArcticLake # plug-in your data here
df$Y <- DR_data(df[,1:3]) # prepare the Y's
Warning in DR_data(df[, 1:3]) :
not all rows sum up to 1 => normalization forced
formula <- reformulate(termlabels = "depth", response="Y")
mod <- DirichReg(formula, df)
Error: object of type 'symbol' is not subsettable
Error during wrapup:
mod <- DirichReg(Y~depth, df)
str(Y~depth)
Class 'formula' language Y ~ depth
..- attr(*, ".Environment")=<environment: R_GlobalEnv>
str(formula)
Class 'formula' language Y ~ depth
..- attr(*, ".Environment")=<environment: R_GlobalEnv>
formula <- as.formula("Y~depth")
mod <- DirichReg(formula, df)
Error: object of type 'symbol' is not subsettable
Error during wrapup:
작동중인 DirichReg 호출에 지정된대로 '수식'개체와 수식간에 차이가없는 것 같습니다.
내 생각에 응답 변수는 DR_data 명령을 사용하여 형식이 지정되는 방식과 관련이 있지만 함수에서 즉시 수식을 지정하는 방법을 알 수는 없습니다.
> str(df$Y)
DirichletRegData [1:39, 1:3] 0.775 0.719 0.507 0.524 0.7 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:39] "1" "2" "3" "4" ...
..$ : chr [1:3] "sand" "silt" "clay"
- attr(*, "Y.original")='data.frame': 39 obs. of 3 variables:
..$ sand: num [1:39] 0.775 0.719 0.507 0.522 0.7 0.665 0.431 0.534 0.155 0.317 ...
..$ silt: num [1:39] 0.195 0.249 0.361 0.409 0.265 0.322 0.553 0.368 0.544 0.415 ...
..$ clay: num [1:39] 0.03 0.032 0.132 0.066 0.035 0.013 0.016 0.098 0.301 0.268 ...
- attr(*, "dims")= int 3
- attr(*, "dim.names")= chr [1:3] "sand" "silt" "clay"
- attr(*, "obs")= int 39
- attr(*, "valid_obs")= int 39
- attr(*, "normalized")= logi TRUE
- attr(*, "transformed")= logi FALSE
- attr(*, "base")= num 1
조언을 주셔서 감사합니다.하지만 불행히도 as.formula와 reformulate와 같은 결과가 있습니다. - 편집을 참조하십시오. – jFrostad