ダミー変数の総数よりも少ないダミー変数が1つ必要であることを理解しています。ただし、Rでlmを実行すると、「特異点のために1が定義されていません」というエラーが表示され続けるため、スタックします。同様の質問がここにあります。このエラーの原因は何ですか。特異点のために係数は定義されていませんが、私の問題とは少し異なります。
私は2つの治療法(1)「利益」と(2)「歴史」を持っています。それぞれ2つのレベル(1)「低」と「高」と(2)「短い」と「長い」、つまり4つの組み合わせです。さらに、私にはコントロールグループがありますが、どちらにもさらされていませんでした。したがって、4つのダミー変数(グループの総数n = 5より1つ少ない)をコーディングしました。続いて、ダミーのコード化されたデータは次のようになります。
low benefit high benefit short history long history
Control group 0 o 0 0
low benefit, short history 1 0 1 0
low benefit, long history 1 0 0 1
high benefit, short history 0 1 1 0
high benefit, long history 0 1 0 1
lmを実行すると、次のようになります。
Model:
summary(lm(X ~ short history + high benefit + long history + low benefit + Control variables, data = df))
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.505398100 0.963932438 5.71139 4.8663e-08 ***
Dummy short history 0.939025772 0.379091565 2.47704 0.0142196 *
Dummy high benefit -0.759944023 0.288192645 -2.63693 0.0091367 **
Dummy long history 0.759352915 0.389085599 1.95163 0.0526152 .
Dummy low benefit NA NA NA NA
Control Varibales xxx xxx xxx xxx
このエラーは、4番目の位置にあるダミーバリバールで常に発生します。制御変数はすべて問題なく計算されます。
私はすでに、コーディングした「履歴」を意味する2つの変数、「長い」を表す1、「短い」を表す0、「利益」を表す1、「高い」を表す1、「低い」を表す0の2つの変数のみを含めようとしました。このように、lmは機能しましたが、問題は、コントロールグループと「短い履歴、低い利益」の組み合わせが同じようにコーディングされていることです。つまり、両方の変数が0と0です。
これが基本的な間違いである場合は申し訳ありませんが、私はそれを理解することができませんでした。さらに詳しい情報が必要な場合は、そのように言ってください。前もって感謝します。
コメントに書いたように、変数は2つしかないので、それらを因数分解してコントラストr
を確認すると、正しいことがわかります。http://www.sthda.com/english/articles/40-regression-analysis/163-regression-with-categorical-variables-dummy-coding-essentials-in-r/も参照してください。
あなたのデータを代表するものを作りましょう。
set.seed(2020)
df <- data.frame(
X = runif(n = 120, min = 5, max = 15),
benefit = rep(c("control", "low", "high"), 40),
history = c(rep("control", 40), rep("long", 40), rep("short", 40))
)
作成benefit
とhistory
要因、コントロールがそれぞれの基本コントラストであることを確認します。
df$benefit <- factor(df$benefit)
df$history <- factor(df$history)
contrasts(df$benefit)
#> high low
#> control 0 0
#> high 1 0
#> low 0 1
contrasts(df$history)
#> long short
#> control 0 0
#> long 1 0
#> short 0 1
回帰を実行し、要約を取得します。4係数はすべて制御/制御と比較されます。
lm(X ~ benefit + history, df)
#>
#> Call:
#> lm(formula = X ~ benefit + history, data = df)
#>
#> Coefficients:
#> (Intercept) benefithigh benefitlow historylong historyshort
#> 9.94474 -0.08721 0.11245 0.37021 -0.35675
summary(lm(X ~ benefit + history, df))
#>
#> Call:
#> lm(formula = X ~ benefit + history, data = df)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -5.4059 -2.3706 -0.0007 2.4986 4.7669
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 9.94474 0.56786 17.513 <2e-16 ***
#> benefithigh -0.08721 0.62842 -0.139 0.890
#> benefitlow 0.11245 0.62842 0.179 0.858
#> historylong 0.37021 0.62842 0.589 0.557
#> historyshort -0.35675 0.62842 -0.568 0.571
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 2.809 on 115 degrees of freedom
#> Multiple R-squared: 0.01253, Adjusted R-squared: -0.02182
#> F-statistic: 0.3648 on 4 and 115 DF, p-value: 0.8333
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加