Если 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
Отсутствующие данные по умолчанию удаляются - см. справку (lm) и параметр na.action.Сводный метод для объекта lm расскажет вам о пропущенных наблюдениях.
Конечно, игнорирование пространственной корреляции, которая может присутствовать в пространственных данных, будет означать, что ваши выводы из оценок параметров будут совершенно неверными.Карта остатков.И прочитайте хорошую книгу о пространственной статистике ...
[Правка: о, и кадры данных должны быть всеми числами, или вся партия преобразуется в символы, а затем ... ну, кто знает ...]
Редактировать:
Еще один способ получения векторов из фреймов данных - просто использовать '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Спасибо Гэвин.