我想对我的数据lm
的每一行进行dt
回归。
我的代码是
coe <- apply(dt, 1, FUN = function(x) lm(dbl ~ bld, data = as.data.frame(x))$coefficients)
但是它返回:
eval(predvars,data,env)中的错误:找不到对象'dbl'
我确认数据dbl
中有bld
和dt
。
所以我不知道如何处理。
答案 0 :(得分:1)
我猜想您写错了关于逐行运行回归的信息(这是不可能的,因为x
中只有y
和y ~ x
的一个观察值)。相反,您想对某些分组变量重复运行回归吗?
使用groupedstats
很容易做到:
groupedstats::grouped_lm(
data = ggplot2::diamonds,
grouping.vars = c(cut, color), # grouping variables
formula = price ~ carat * clarity # formula
)
#> # A tibble: 547 x 10
#> cut color term estimate std.error t.value conf.low conf.high
#> <ord> <ord> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 Ideal E (Int~ -3085. 64.9 -47.5 -3212. -2958.
#> 2 Ideal E carat 10529. 74.1 142. 10384. 10674.
#> 3 Ideal E clar~ -2088. 267. -7.81 -2612. -1564.
#> 4 Ideal E clar~ 168. 265. 0.633 -352. 688.
#> 5 Ideal E clar~ -926. 217. -4.26 -1352. -500.
#> 6 Ideal E clar~ 625. 157. 3.99 318. 932.
#> 7 Ideal E clar~ -392. 107. -3.65 -602. -181.
#> 8 Ideal E clar~ 83.9 79.1 1.06 -71.1 239.
#> 9 Ideal E clar~ -40.8 67.4 -0.605 -173. 91.4
#> 10 Ideal E cara~ 9746. 287. 34.0 9185. 10308.
#> # ... with 537 more rows, and 2 more variables: p.value <dbl>,
#> # significance <chr>
由reprex package(v0.2.0.9000)创建于2018-08-19。
答案 1 :(得分:0)
您要执行的操作有两个问题。当您将dt
传递到apply
时,它将x
降到(命名的)数字向量上。当您使用as.data.frame
来强制它时,它将变成一个具有一列的data.frame。这就是为什么找不到dbl
的原因。
> x <- c(a = 1, b = 0.58)
> as.data.frame(x)
x
a 1.00
b 0.58
第二点是您想对两点进行回归。本质上,您正在这样做:
> lm(b ~ a, data = data.frame(a = 1, b = 0.58))
Call:
lm(formula = b ~ a, data = data.frame(a = 1, b = 0.58))
Coefficients:
(Intercept) a
0.58 NA
您将无法估算出感兴趣的参数,因为您需要更多的积分才能做到这一点。