在從 DGP 模擬 100,000 個觀測值并將它們拆分以創建一個包含 1000 個資料幀的串列后,每個資料幀有 100 個觀測值,我想分別將相同的方程擬合到每個資料幀。我想知道如何為每個資料幀獲取單獨的系數?
α <- 6
?_1 <- 0.5
?_2 <- 0.1
X_i <- rnorm(n = 100000, mean = 5, sd = 2)
X_i_squared <- X_i^2
e_i <- rnorm(n = 100000, mean = 0, sd = 1)
Y_i <- α ?_1*X_i ?_2*X_i^2 e_i
df <- data.frame(Y_i, X_i, X_i_squared, e_i)
Splitted_df <- split(df, rep(1:1000, each = 100))
我使用函式 split() 將原始資料幀拆分為 1000 個新資料幀串列,但我不確定如何繼續?我需要使用apply family的一些功能嗎?如果有人可以提供幫助,我將不勝感激!
uj5u.com熱心網友回復:
使用lapply您可以創建一個模型串列,如下所示:
mods <- lapply(Splitted_df, function(x) lm(Y_i ~ X_i X_i_squared, data = x))
purrr::map_df為方便起見,您可以將broom::tidy系數作為資料框獲取,如下所示:
mods_tidy <- purrr::map_df(mods, broom::tidy, .id = "model")
head(mods_tidy)
#> # A tibble: 6 × 6
#> model term estimate std.error statistic p.value
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 1 (Intercept) 5.79 0.475 12.2 2.83e-21
#> 2 1 X_i 0.591 0.170 3.48 7.51e- 4
#> 3 1 X_i_squared 0.0942 0.0147 6.39 5.84e- 9
#> 4 2 (Intercept) 6.38 0.521 12.3 2.07e-21
#> 5 2 X_i 0.410 0.220 1.86 6.53e- 2
#> 6 2 X_i_squared 0.107 0.0220 4.86 4.55e- 6
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/529911.html
標籤:r回归申请
上一篇:在R中選擇值在 /-1范圍內的行
