2016-09-26 5 views
2

데이터 프레임에 간단한 lm() 회귀 분석을 수행하려고합니다. 명시 적으로, 데이터 프레임과 각 행의 열 이름간에 회귀 분석을 수행하려고합니다. 내 데이터 프레임은 다음과 같습니다 data.frame ~ colnames 행의 lm()

d = data.frame(replicate(6,rnorm(6))) 
colnames(d) = as.character(0:5) 

는하지만, 내 lm()이 작동하지 않습니다 : 사람이 달리기를 얻기 위해 나에게 도움이된다면

lm(d[1,]~colnames(d)) 
#Error in model.frame.default(formula = d[1, ] ~ colnames(d), drop.unused.levels = TRUE) : 
#invalid type (list) for variable 'd[1, ]' 

내가 대단히 감사하겠습니다. 나는 아직 많이 사용하지 않았다 lm() 함수.

은 내가 lm() 기능은 형식 lm(columnA ~ columnB, data = mydata)에 뭔가를 원하는 것을 알고, 그래서 여기에 질문을 게시하기 전에 내 데이터를위한 데이터 프레임을 구축하려고 :

cbind(d[1,],0:5) 

이, 그러나, 드롭하지 않습니다 d의 크기 아무 단서. 이 질문에 답할 수 있다면 R에 대한보다 일반적인 이해가 큰 도움이 될지라도.

+0

'lm (data.frame (y = unlist (d [1,]), x = 0 : 5))' –

+0

간단한 접근 방식은'stack()'이 될 것이라고 생각합니다. 그러나 같은 행에 왜 가치가 있습니까? 동일한 단위의 모든 값이 동일한 단위로 측정됩니까? – gung

+0

예, 동일한 행의 값은 동일한 항목에서 측정됩니다. colnames는 측정 된 수량을 나타냅니다. 나는 테이블의 구조가 이상적이지 않다는 것을 안다. – Feliks

답변

0

적극적으로 명확히하지 않으므로 수행하려는 계획에 대해 몇 가지 가정을해야합니다.

데이터 프레임의 각 행마다 다른 독립 회귀 선이 필요하다고 가정합니다. 따라서

x <- 1:ncol(d) - 1 

, 당신은 "

fit <- lm(t(d) ~ x) 

#Call: 
#lm(formula = t(d) ~ x) 

#Coefficients: 
#    [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  
#(Intercept) 0.23133 0.48307 0.07867 0.62308 0.71174 0.89866 
#x    0.02964 -0.30077 -0.05160 0.06321 -0.17155 -0.43689 

fit 표준"LM "개체가 아닙니다 할 수 있지만 : 즉, (행 당 하나)하지만, 일반적인 공변량 복수 응답이 mlm "(다중 선형 모델). 위에서 볼 수있는 계수 행렬에는 각 열이 각 응답과 연관되어 있습니다.

+0

내 R 문제가 해결되었습니다. Thx @ Zheyuan Li. 그러나 분석에 대해 좀 더 구체적으로 설명하겠습니다. 저는 유전학에서 일하고 종별 매핑 품질을 분석합니다. 상세하게는 주어진 종 (행)에 매핑 할 때 각 읽기 (컬럼 이름으로 주어진)에 대한 불일치의 양을 측정합니다. 난 단지 lm()을 사용하여 부정적인 관계 (불일치 증가에 대한 매핑 된 읽기 감소 수)를 테스트하려고합니다. 따라서 각 종에 대한 관찰은 독립적이지 않다. – Feliks