3
我有一個用於實驗的CRM數據集,其中虛擬W對應於治療/對照組(請參閱下面的代碼)。當我測試的來自其它特徵W上的獨立性,我意識到兩兩件事:因相似性和pvalues而未定義的Coef
- 當使用model.matrix,一些係數(在該虛設數據集1)沒有因爲相似性的定義。直餵養DT到LM()
- 在這兩種情況下獲得的模型會產生不同的結果,即當這並沒有發生,個別特性的p值的變化
我(想我)明白多重共線性的概念,但在這種特殊情況下,我不太明白a)爲什麼會出現b)爲什麼它對model.matrix和lm有不同的影響
我錯過了什麼?
非常感謝!
set.seed(1)
n = 302
DT = data.table(
zipcode = factor(sample(seq(1,52), n, replace=TRUE)),
gender = factor(sample(c("M","F"), n, replace=TRUE)),
age = sample(seq(1,95), n, replace=TRUE),
days_since_last_purchase = sample(seq(1,259), n, replace=TRUE),
W = sample(c(0,1), n, replace=TRUE)
)
summary(DT)
m = model.matrix(W ~ . +0, DT)
f1 = lm(DT$W ~ m)
f2= lm(W~ ., DT)
p_value_ratio <- function(lm)
{
summary_randomization = summary(lm)
p_values_randomization = summary_randomization$coefficients[, 4]
L = length(p_values_randomization)
return(sum(p_values_randomization <= 0.05)/(L-1))
}
all.equal(p_value_ratio(f1), p_value_ratio(f2))
alias(f1)
alias(f2)
謝謝羅蘭。我正在閱讀這篇文章https://www.r-bloggers.com/be-careful-with-using-model-design-in-r/其中作者指出,做lm(0 + ...)結果一個不同的R^2和F統計量。我的閱讀是應該避免。我誤解了這一點嗎? – Stefano
@Stefano不,你沒有誤解。如果這是一個問題,你可以使用'f1 = lm(DT $ W〜m [, - 1])''。你*應該*做的就是簡單地使用'f2'。如果你想去手動路線,最好做到這一點,即使用'lm.fit(m,DT [[「W」]])'並自己計算統計量。 – Roland
謝謝!全清!我會看看我不知道的lm.fit,並花些時間閱讀治療對比。 – Stefano