R에 100 개의 매개 변수가있는 모델에 대해 선형 회귀를 작성하는 쉬운 방법이 있습니까? 10 개의 값을 가진 벡터 Y와 10 개의 열과 100 개의 행을 가진 데이터 프레임 X가 있다고 가정 해 봅시다 Y = X[[1]] + X[[2]] + ... + X[[100]]
. R 구문에서 비슷한 것을 어떻게 작성합니까?
R에 100 개의 매개 변수가있는 모델에 대해 선형 회귀를 작성하는 쉬운 방법이 있습니까? 10 개의 값을 가진 벡터 Y와 10 개의 열과 100 개의 행을 가진 데이터 프레임 X가 있다고 가정 해 봅시다 Y = X[[1]] + X[[2]] + ... + X[[100]]
. R 구문에서 비슷한 것을 어떻게 작성합니까?
답변:
이 시도
df<-data.frame(y=rnorm(10),x1=rnorm(10),x2=rnorm(10))
lm(y~.,df)
y ~ . + .^2
. 등등.
y ~ . + .:x1
(제외하면 각 변수의 상호 작용을 얻을 것이다 x1
으로)를 x1
. 등등; 당신은 아이디어를 얻는다.
각 행이 관측치이고 각 열이 예측 변수이므로 가 길이의 벡터이고 가 행렬 ( 이 경우 )이면 다음을 수행 할 수 있습니다.N X N × P P = 100
Z = as.data.frame(cbind(Y,X))
lm(Y ~ .,data=Z)
예측 변수로 포함하지 않으려는 다른 열 X
이있는 경우이 트릭을 사용하거나 -
모델 수식에서 제외 하기 전에 열 을 제거해야 합니다. 예를 들어 67 번째 예측 변수 (해당 이름이 있음 x67
) 를 제외하려는 경우 다음과 같이 쓸 수 있습니다.
lm(Y ~ .-x67,data=Z)
또한 상호 작용 등을 포함 시키려면 (예 :)와 같이 수동으로 상호 작용을 추가해야합니다.
lm(Y ~ .+X[,1]*X[,2],data=Z)
또는의 열로 입력했는지 확인하십시오 X
.
formula
및 paste
기능 의 조합을 사용할 수도 있습니다 .
설정 데이터 :하자 우리가 예측 변수가 포함 된 data.frame이 상상의 x1
에 x100
우리의 종속 변수를 y
뿐만 아니라 성가신 변수가 있다는 것을 asdfasdf
. 또한 예측 변수는 data.frame에서 모두 연속적이지 않은 순서로 배열됩니다.
Data <- data.frame(matrix(rnorm(102 * 200), ncol=102))
names(Data) <- c(paste("x", 1:50, sep=""),
"asdfasdf", "y", paste("x", 51:100, sep=""))
예측 변수의 이름이 포함 된 문자열이 있다고 가정 해보십시오. 이 경우 paste
함수를 사용하여 쉽게 만들 수 있지만 다른 상황 grep
이나 다른 방법을 사용하여이 문자열을 가져올 수도 있습니다.
PredictorVariables <- paste("x", 1:100, sep="")
접근법 적용 : 다음과 같이 공식을 구성 할 수 있습니다.
Formula <- formula(paste("y ~ ",
paste(PredictorVariables, collapse=" + ")))
lm(Formula, Data)
collapse
인수 삽입 +
예측 인자 변수 사이formula
문자열을 lm
함수에 적합한 클래스 수식의 객체로 변환합니다 .더 일반적으로 예측 변수를 변수 이름의 벡터로 제공하려는 경우 다음 함수를 매우 정기적으로 사용합니다.
regression <- function(dv, ivs, data) {
# run a linear model with text arguments for dv and ivs
iv_string <- paste(ivs, collapse=" + ")
regression_formula <- as.formula(paste(dv, iv_string, sep=" ~ "))
lm(regression_formula, data)
}
예 :
regression("y", PredictorVariables, Data)
do.call
lm