1

x変数を少し変更して同じ回帰を数回実行しています。私の目的は、この線形回帰モデルの各変数の適合性と重要性を決定した後、すべての主要なプロットを表示することです。各プロットを1つずつ作成する代わりに、次のリストの変数(x1 ... xn)をループする関数が必要です。

フィット<-lm(y〜x1 + x2 + ... xn))

すべてのxに対して作成したいプロットは、1)上記の関数のすべてのxについて'x対y'です。2)'x対予測y3)x対残差4)x対時間。ここで、時間はで使用される変数ではありません。回帰ですが、データの元となるデータフレームで提供されます。

fitから係数にアクセスする方法は知っていますが、名前が文字であるため、サマリーの係数名を使用してプロットを作成する関数で再利用することはできません。

私の質問が明確に説明されていて、まだ質問されていないことを願っています。

ありがとう!

4

3 に答える 3

1

あなたが言うように、係数はフィットオブジェクトに保存されますが、次のように参照することで、関数で一般的にそれらにアクセスできます。

x <- 1:10
y <- x*3 + rnorm(1)
plot(x,y)

fit <- lm(y~x)
fit$coefficient[1] # intercept
fit$coefficient[2] # slope
str(fit) # a lot of info, but you can see how the fit is stored

私の推測では、summary(fit)から取得している係数にアクセスする方法を知っていると言うと、近似から直接取得するよりもアクセスが少し難しくなります。fit $ coeff [1]などを使用することで、関数に変数の名前を含める必要がなくなります。

于 2011-10-12T23:23:14.867 に答える
1

私が思うに直接答える3つのオプションは質問でした:文字引数を使用して係数にアクセスする方法:

x <- 1:10
y <- x*3 + rnorm(1)
fit <- lm(y~x)
# 1
fit$coefficient["x"]
# 2
coefname <- "x"
fit$coefficient[coefname]
#3
coef(fit)[coefname]

さまざまな関数をどのようにプロットするかが問題である場合は、十分に複雑な構造(R)を提供して、適切に指定されたオブジェクトのセットを使用したメソッドのデモンストレーションを可能にする必要があります。

于 2011-10-12T23:40:09.523 に答える
1

モックデータを作成する

dat <- data.frame(x1=rnorm(100), x2=rnorm(100,4,5), x3=rnorm(100,8,27), 
  x4=rnorm(100,-6,0.1), t=(1:100)+runif(100,-2,2))
dat <- transform(dat, y=x1+4*x2+3.6*x3+4.7*x4+rnorm(100,3,50))

フィットさせる

fit <- lm(y~x1+x2+x3+x4, data=dat)

予測値を計算する

dat$yhat <- predict(fit)

残差を計算する

dat$resid <- residuals(fit)

変数名のベクトルを取得します

vars <- names(coef(fit))[-1]

この名前の文字表現を使用して数式の文字列バージョンを作成し、それを変換すると、プロットを作成できます。以下の4つのプロットは、すべての変数をループでラップしています。さらに、これは、各プロットを表示する機会が得られるように、に設定askすることで囲まれています。TRUEまたは、画面上に複数のプロットを配置するか、後で確認するためにすべてをファイルに書き込みます。

opar <- par(ask=TRUE)
for (v in vars) {
  plot(as.formula(paste("y~",v)), data=dat)
  plot(as.formula(paste("yhat~",v)), data=dat)
  plot(as.formula(paste("resid~",v)), data=dat)
  plot(as.formula(paste("t~",v)), data=dat)
}
par(opar)
于 2011-10-13T00:00:12.893 に答える