2016-12-07 2 views
0

여러 개의 열이있는 목록이 있습니다. 가장 왼쪽의 열은 x 축 데이터이고 나머지는 다양한 y 데이터 집합입니다.특정 범위 내의 여러 열에 대한 선형 회귀를 플롯

각 열에 대해 선형 회귀를 생성하고 싶지만 x의 특정 범위에 대해서만 선형 회귀를 0,0으로 강제합니다. 그리고 마지막으로 상기 선형 회귀의 선 기울기를 추출한다. 아래는 내 데이터의 예입니다. 여기

x  y1  y2  y3  y4 
1 2.495 -1e-04 -1e-03 -1e-04 0e+00 
2 2.995 -2e-04 -7e-04 -2e-04 0e+00 
3 3.495 2e-04 -2e-04 1e-04 2e-04 
4 3.995 0e+00 -3e-04 0e+00 1e-04 
5 4.495 0e+00 -3e-04 0e+00 0e+00 
6 4.995 0e+00 -3e-04 0e+00 1e-04 
7 5.495 1e-04 -2e-04 0e+00 1e-04 
8 5.995 -1e-04 -1e-04 0e+00 3e-04 
9 6.495 1e-04 1e-04 2e-04 3e-04 
10 6.995 1e-04 0e+00 0e+00 3e-04 

예컨대 I 0,0 교차하도록 회귀 강요, 예를 들어 행 (X)의 3 내지 10의 범위에 대한 선형 회귀를 구하는 것이다. 마지막으로 y1, y2 등에 대한 선형 회귀 식의 기울기를 구한다.

나는 abind 및 lm 함수를 알고 있지만 0,0 교차를 강제하지 않고 단일 회귀를 플로팅 할 수만 있습니다. 감사합니다

+0

당신이 당신의 독립 변수이고있는 당신 종속되는 변수 명확히 수 있을까? 절편을 강제로 0으로 설정하려면 회귀 모델에 -1을 추가하면됩니다 (예 :'lm (y ~ x -1)'). – paqmo

+0

열 x는 독립 변수이고 y1, y2 ..는 종속 변수입니다. – AGB

답변

0

회귀 모델은 절편을 사용하지 않고 회귀선을 원점을지나 가게합니다. 이것은 R에 -1을 모델에 추가하여 얻을 수 있습니다. 당신이 원하는 x의 범위를 얻으려면, 단순히 그 범위에 대한 관찰을 부분 집합 및 다른 독립 변수를 통해 루프 lapply를 사용

dat2 <- dat[3:9,] 
fits <- lapply(dat2[,-1], function(x) lm(x ~ dat2[,1] - 1)) 

ggplot2와 데이터 및 회귀 선을 플로팅. reshape2 패키지의 melt을 사용하면 데이터를 길게 만들 수 있습니다. 이 카테고리의 데이터를 파괴 ggplot2하는 데 도움이 :

library(ggplot2); library(reshape2) 
mdat <- melt(dat2,id="x") 
ggplot(data = mdat) + 
    geom_point(aes(y = value, x = x, color=variable)) + 
    geom_smooth(data=mdat,aes(x=x,y=value,color = variable),formula = y ~ x - 1, 
       method = "lm", se = F) 

enter image description here

+0

안녕하세요, 감사합니다. 그것은 정말로 잘 돌아갔다. 나는 sapply 기능에 익숙하지 않습니다. 더 많은 y 열이 있습니다. 어떻게 모든 y 열을 통과하도록 다른 sapply 함수를 코딩 할 수 있습니까? 감사합니다. – AGB

+0

이제'lapply' 함수는 첫 번째 (독립 변수)를 제외한 데이터 프레임의 모든 열을 반복해야합니다. 계획을 세울 때 실제 문제가 발생합니다. 제공하는 코드가 많으면 지루하고 다루기 힘듭니다. y 값을 반복하여 자동화하는 것이 좋습니다. – paqmo

+0

다시 한 번 감사드립니다. 유감입니다. 유감스럽게 생각합니다. 그것은 정말 잘 작동합니다. 마지막으로, 선형 적합의 모든 경사에 대한 값을 얻는 방법은 무엇입니까? – AGB

관련 문제