将lm回归应用于每一行的错误

时间:2018-08-19 18:30:55

标签: r apply

我想对我的数据lm的每一行进行dt回归。 我的代码是

coe <- apply(dt, 1, FUN = function(x) lm(dbl ~ bld, data = as.data.frame(x))$coefficients)

但是它返回:

  

eval(predvars,data,env)中的错误:找不到对象'dbl'

我确认数据dbl中有blddt。 所以我不知道如何处理。

2 个答案:

答案 0 :(得分:1)

我猜想您写错了关于逐行运行回归的信息(这是不可能的,因为x中只有yy ~ 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 

您将无法估算出感兴趣的参数,因为您需要更多的积分才能做到这一点。