2016-04-17 1 views
0
  • я работаю на очень большой наборе данных и выложенный простую версию нижеВыполните то же линейную регрессию на различные факторы в кадре же данных

    group <- c(rep("A", 3), rep("B", 3), rep("C", 3)) 
    X <- c(0, 1, 2, 0, 1, 2, 0, 1, 2) 
    Y <- c(0, 2, 4, 0, 3, 6, 0, 4, 8) 
    df <- data.frame(group, X, Y) 
    
  • Я пытаюсь получить через линейную регрессию , коэффициенты трех линий, соответствующих группам A, B и C (фактор-переменные) ... с небольшой удачей от кода ниже ...

  • Я наткнулся на некоторый R-код, где был предложен знак '*' для использования на независимой переменной (в случае пример) вычисляют наклон линии A, B и C. A, B и C являются фактор-переменной.

    lin.reg <- lm(Y ~ X*group, data = df) 
    coefficients_for_ABC <- summary(lin.reg) 
    

Я думаю, что это код, который я наткнулся неправильно и что мне нужно применить по функции или подобным. Любая помощь/понимание оценены!

+0

увидеть это ответ [http://stackoverflow.com/questions/1169539/linear-regression-and-group-by-in-r] – cccmir

ответ

0

Это должно сработать. Сделайте то, что когда-либо захотите сделать внутри функции!

lapply(split(df,df$group),function(x){lm(x$Y ~ x$X)}) 
+0

Благодаря @ChirayuChamoli, это хорошо работает для примера данных Вот. Когда я применил его к моему большому набору данных, я получил следующую ошибку: Ошибка в lm.fit (x, y, offset = offset, singular.ok = singular.ok, ...): 0 (не-NA) случаях Do вы знаете, почему это может быть или это вопрос для другого потока? Я уже проверил, что NA и нуль существуют в фрейме данных, используя sapply (newdf, function (x) sum (is.na (x))) – Ben

+0

@Ben Это похоже на работу с NA тоже. в любом случае добавьте na.action = na.omit внутри lm при работе с NA. –

Смежные вопросы