9

回帰モデルでは、因子のダミー変数が 1 つのみの交互作用を含めることができますか? たとえば、私が持っているとします:

x: numerical vector of 3 variables (1,2 and 3)
y: response variable
z: numerical vector

次のようなモデルを構築することは可能ですか?

y ~ factor(x) + factor(x) : z

の 1 つのレベルとの相互作用のみを含めXます。のレベルごとに個別のダミー変数を作成できることはわかっていますがx、可能であれば単純化したいと考えています。

ご意見をお寄せいただきありがとうございます。

4

4 に答える 4

6

見逃している重要なポイントの1つは、のようなものに有意な効果が見られる場合、それがいつと相互作用するx2:zかを意味するのではなく、と(または参照レベルが何であれ)の違いがzと相互作用することを意味するということです。と相互作用しているレベルではなく、に設定されているコントラストの1つです。xzx == 2x == 2x == 1xzx

したがって、デフォルトの処理コントラストを持つ3レベルの係数の場合:

df <- data.frame(x = sample(1:3, 10, TRUE), y = rnorm(10), z = rnorm(10))
df$x <- factor(df$x)
contrasts(df$x)
  2 3
1 0 0
2 1 0
3 0 1

最初のコントラストだけが重要であると本当に思う場合は、と比較x == 2x == 1て無視する新しい変数を作成できx == 3ます。

df$x_1vs2 <- NA
df$x_1vs2[df$x == 1] <- 0
df$x_1vs2[df$x == 2] <- 1
df$x_1vs2[df$x == 3] <- NA

そして、それを使用して回帰を実行します。

lm(y ~ x_1vs2 + x_1vs2:z)
于 2013-02-18T03:41:11.200 に答える
0

xデータの要因として既にコード化されている場合、次のようなものです

y ~ x + I(x=='some_level'):z

またはx、データ フレームの数値型の場合、

y ~ as.factor(x) + I(as.factor(x)=='some_level'):z

または、データの一部のサブセットのみをモデル化するには、次を試してください。

lm(y ~ as.factor(x) + as.factor(x):z, data = subset(df, x=='some_level'))
于 2013-02-18T03:03:21.647 に答える
0

次のようなものが必要になる場合があります。

y~factor(x)+factor(x=='SomeLevel'):z
于 2013-02-18T02:54:42.860 に答える
0
X <- data.frame(x = sample(1:3, 10, TRUE), y = rnorm(10), z = rnorm(10))
lm(y ~ factor(x) + factor(x):z, data=X)

それはあなたが望むものですか?

于 2013-02-18T02:49:02.567 に答える