성의 예측에 대한 간격을 1 개 이상의 선형 모델에서 R?

0

질문

내가 하려고 생성하는 간격으로 예측 기능을 사용하여 예측()에 대한 새로운 데이터 세트,하지만에서보다 더 하나의 모델에는 내가에 대해 생성합니다. 나는 상대적으로 경험하에서 사용 lapply 지만,그것을 파악해야에 도움이 될 이 프로세스

#Calling in my libraries:
library(dplyr)

#Creating dataset:

DNase <- DNase

#Generating models, one for each "Run" in DNAse:
model_dna <- DNase %>% 
  group_by(Run) %>% 
  do(model_dna_group = lm(log(density) ~ log(conc), data = .)) %>%   ungroup()

#Creating a new data set to be used to generate predictions:
new_dna <- as.data.frame(DNase$conc) %>% 
  mutate(conc = DNase$conc * 2) %>% select(conc)

#Attempting to apply predict to these models for a new data frame:
new_dna_w_predictions <- lapply(
                           X = model_dna, 
                           FUN = predict, 
                           newdata = new_dna, 
                           interval = "prediction", 
                           level = 0.9
                          )

그러나,이것을 그립니다 다음과 같은 오류가:

오류에서 얻(니다.문자(재),mode="function",envir=envir): 체'model_dna 의'모드'기능'발견되지 않았

나는 확실하지 않는 최선의 방법 구조를 이 lapply 기능,특히 때에 걸쳐 사용되고 있는 더 이상 하나의 모델이다. 가 일반적으로 청소기 방법으로 접근하는 이?

dplyr lm model predict
2021-11-19 15:33:36
2

최고의 응답

1

여기에서 당신은 전체 tidyverse 솔루션:

# Calling in my libraries:
library(dplyr)
library(purrr)

# Creating dataset:
DNase <- DNase

# Creating a new data set to be used to generate predictions:
new_dna <- DNase %>% transmute(conc = conc * 2)  # simplified

# Generating models, one for each "Run" in DNAse:
model_dna <- DNase %>% 
  group_by(Run) %>% 
  summarise(model_dna_group = list(lm(log(density) ~ log(conc))))
  
model_dna
#> # A tibble: 11 x 2
#>    Run   model_dna_group
#>    <ord> <list>         
#>  1 10    <lm>           
#>  2 11    <lm>           
#>  3 9     <lm>           
#>  4 1     <lm>           
#>  5 4     <lm>           
#>  6 8     <lm>           
#>  7 5     <lm>           
#>  8 7     <lm>           
#>  9 6     <lm>           
#> 10 2     <lm>           
#> 11 3     <lm>


# Run predictions
model_dna %>%
  group_by(Run) %>% 
  summarise(map(model_dna_group, predict, newdata = new_dna, interval = "prediction", level = 0.9) %>% map_dfr(as_tibble),
            .groups = "drop")

#> # A tibble: 1,936 x 4
#>    Run       fit    lwr    upr
#>    <ord>   <dbl>  <dbl>  <dbl>
#>  1 10    -2.16   -2.48  -1.85 
#>  2 10    -2.16   -2.48  -1.85 
#>  3 10    -1.33   -1.64  -1.03 
#>  4 10    -1.33   -1.64  -1.03 
#>  5 10    -0.918  -1.22  -0.617
#>  6 10    -0.918  -1.22  -0.617
#>  7 10    -0.503  -0.804 -0.201
#>  8 10    -0.503  -0.804 -0.201
#>  9 10    -0.0873 -0.392  0.217
#> 10 10    -0.0873 -0.392  0.217
#> # ... with 1,926 more rows

생 2021-11-19 에 의해 reprex 패키지 (v2.0.0)

주의 사항:

  • 후에 dplyr 1.0 당신을 사용할 필요가 없 do 더 이상 이러한 종류의 케이스
  • mapmap_dfr 을 계산할 수 있습니다 당신의 예측하고 그들에 잘 h tibble
2021-11-19 18:05:38
1

귀하의체 model_dna 는 데이터입니다.프레임(자에게 tibble)을 포함하는 lm-객체에서 두 번째 열에"model_dna_group".

lapply-전화를 참조해야하는 열 전체 데이터를 프레임입니다. Lapply 사용하려고 시도 predict 의 열에 데이터가 대신 프레임의 lm-객체 내에서 두 번째 열에 있습니다.

그래서 편집하는 호출을 다음과 같이 작동:

new_dna_w_predictions <- lapply(
                           X = model_dna$model_dna_group, 
                           FUN = predict, 
                           newdata = new_dna, 
                           interval = "prediction", 
                           level = 0.9
                          )
2021-11-19 17:22:23

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................