Я ищу для проведения регрессий по подмножеству столбцов в Data1 с использованием переменных «x» из переменных Data1 и «x» из Data2, которые соответствуют столбцам в Data1 , Затем я хочу извлечь значения p. В принципе, я хочу, я хочу регрессий в «петли», как:Применение регрессии по нескольким столбцам с использованием столбцов из разных данных в качестве независимых переменных
Data1 $ Y1 ~ Data1 $ X1 + Data1 $ X2 + Data1 $ X3_Y1
Data1 $ У2 ~ Data1 $ X1 + Data1 $ X2 + Data2 $ X3_Y2
Data1 $ У3 ~ Data1 $ X1 + Data1 $ X2 + Data2 $ X3_Y3
Data1 $ Y4 ~ Data1 $ X1 + Data1 $ X2 + Data2 $ X3_Y4
Вот что я придумал:
X1 <- rnorm(n=50, mean = 10, sd = 5)
X2 <- rnorm(n=50, mean = 15, sd = 6)
Y1 <- rnorm(n=50, mean = 7, sd = 4)
Y2 <- rnorm(n=50, mean = 5, sd = 6)
Y3 <- rnorm(n=50, mean = 9, sd = 7)
Y4 <- rnorm(n=50, mean = 8, sd = 6)
X3_Y1<- rnorm(n=50, mean = 12, sd = 2)
X3_Y2<- rnorm(n=50, mean = 9, sd = 1)
X3_Y3<- rnorm(n=50, mean = 6, sd = 2)
X3_Y4<- rnorm(n=50, mean = 5, sd = 3)
Data1 <- data.frame(X1, X2, Y1, Y2, Y3, Y4)
Data2 <- data.frame(X1, X2, X3_Y1, X3_Y2, X3_Y3, X3_Y4)
Data1_Y<-colnames(Data1[,3:6])
Data2_XY<-colnames(Data2[,3:6])
for (y in Data1_Y) {
for (xy in Data2_XY) {
MergedX<-cbind(Data1[,c(1:2)],Data2[, xy])
test <- lm(y~MergedX)
out<-data.frame ("p.value"=test$p.value)
}}
Это не работает. Я надеюсь, что есть способ сделать это, возможно, используя лаппи?
ПРИМЕЧАНИЕ: Y1, Y2 и т. Д. Являются только репрезентативными метками. В реальном наборе данных Y1, Y2 и т. Д. Являются конкретными именами бактерий.
'lapply (X = 1: 4, FUN = function (ind) lm (Data1 [[paste (" Y ", ind, sep =" ")]] ~ Data1 $ X1 + Data1 $ X2 + Data2 [ paste ("X3_Y", ind, sep = "")]])) '4 модели в списке. Тривиально извлекать любую статистику соответствия из этого списка, используя 'lapply/sapply'. – Vlo
Проблема в том, что в моем наборе данных переменные не помечены как X1, X2 и т. Д. Вместо этого они являются названиями бактерий. Я просто упростил имена для данных примера, которые я предоставил. Поэтому я не думаю, что код, который вы предоставили, будет работать. Я пойду дальше и уточню это в своем вопросе. Благодаря! – Fargonian
Такая же концепция, просто введите список имен 'Y1 ... Y4' и' X3_Y1 ... X3_Y4' в 'mapply'. 'mapply (функция (name1, name2) lm (data1 [[name1]] ~ data1 $ fixedname + data1 $ fixedname2 + data2 [[name2]]), name1 = c ('blah', 'blah', ... ' blah '), name2 = ...) ' – Vlo