如果 a 和 b 是数据帧,并且您想将 a 中的各个值回归到 b 中的值,那么您需要将它们转换为向量。例如:
> lm(as.vector(as.matrix(a))~as.vector(as.matrix(b)))
Call:
lm(formula = as.vector(as.matrix(a)) ~ as.vector(as.matrix(b)))
Coefficients:
(Intercept) as.vector(as.matrix(b))
8.418239 -0.005241
默认情况下会删除丢失的数据 - 请参阅 help(lm) 和 na.action 参数。lm 对象上的 summary 方法将告诉您丢弃的观察结果。
当然,忽略空间数据中可能存在的空间相关性意味着您从参数估计中得出的推论将是非常错误的。映射残差。并阅读一本关于空间统计的好书...
[编辑:哦,数据框必须全是数字,否则整个批次都会转换为字符,然后......好吧,谁知道......]
编辑:
从数据帧中获取向量的另一种方法是使用“unlist”:
> a=data.frame(matrix(runif(16),4,4))
> b=data.frame(matrix(runif(16),4,4))
> lm(a~b)
Error in model.frame.default(formula = a ~ b, drop.unused.levels = TRUE) :
invalid type (list) for variable 'a'
> lm(unlist(a)~unlist(b))
Call:
lm(formula = unlist(a) ~ unlist(b))
Coefficients:
(Intercept) unlist(b)
0.6488 -0.3137
我以前没见过 data.matrix,谢谢 Gavin。