2013-06-26 17 views
0

使用下面的數據模型:如何適應預定義的偏移含分類變量R中

​​

我想知道如何適應預定偏移到另一種模式的原始關係,即如何適應從模型A的估計,從而:

ModelA<-lm(Dependent1~Explanatory) 

從而建模B:

ModelB<-lm(Dependent2~Explanatory) 

其中解釋變量是我的數據集中變量「Categorical」或變量「Continuous」。我與一個類似的問題在CV一個有用的答案:

https://stats.stackexchange.com/questions/62584/how-to-fit-a-specific-model-to-some-data

這裏exaplantory變量是「連續」。不過,我還有一些額外的問題需要回答,因爲我認爲它可能更適合於SO。如果情況並非如此,請告訴我,我將刪除此問題:)

具體而言,我在上面的鏈接中建議,爲了適合我的數據集中連續解釋變量的預定義斜率,我應該這樣做:

lm(Dependent2 ~ 1 + offset(Slope * Continuous)) 

其中坡度是從模型A取得的預定義坡度。

現在我想知道,我怎麼做同樣的當x是兩個層次分類變量,然後當x是一個二次項,即X + X^2連續變量?

對於二次項我想:

lm(Dependent2 ~ 1 + offset(Slope * Continuous)+ offset(Slope2 * I((Continuous)^2))) 

其中斜率是的連續任期固定的估計值,SLOPE2是二次項的固定估計值。

我不確定如何卻得到這個工作的分類變數。當我嘗試以適應作爲偏移:

lm(Dependent2 ~ 1 + offset(Slope * Categorical)) 

這裏再次,坡度爲A型採取的固定估計的斜率值,我得到一個錯誤:

"Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases 
In addition: Warning message: 
In Ops.factor(0.25773, Categorical) : * not meaningful for factors" 

如果任何人有一個輸入關於如何創建分類變量的偏移,將不勝感激:)

+0

我猜'偏移量'需要虛擬編碼的因子。 [可重現的代碼和數據]可以給出更好的答案(http://stackoverflow.com/a/5963610/1412059)。 – Roland

+0

嗨,羅蘭,我添加了一些原始數據並澄清了解釋。我希望這有幫助。 – Sarah

回答

2

你大概可以做的是計算手動偏移的因子各個水平的最好:

x <- rep(1:3, each=10) 
df <- data.frame(x=factor(x), y=3 - x) 

# compute the offset for each level of x 
df$o <- with(df, ifelse(x == "1", 2, ifelse(x == "2", 1, 0))) 

# fitted coef's for the models below will all be zero due to presence of offset 
lm(y - o ~ x - 1, data=df) 
# or 
lm(y ~ x + offset(o), data=df) 
+0

謝謝你的回答。我已經試過這在我的帖子中的數據(這是我所謂的「數據」)這樣的: 數據$ 0 < - 用(數據,ifelse(分類==「Y」,0.25773,ifelse(分類==「 N」, - 0。25773))) 但我得到的錯誤: 「錯誤ifelse(分類== 」N「, - 0.25773): 說法 」不「 的缺失,沒有默認值」 你知道的一種解決這個問題的方法? 非常感謝! – Sarah

+0

如果'Categorical'只有2個級別,那麼你只需要一個'ifelse'。請注意有兩種選擇:「if」和「else」...... –

+0

謝謝 - 對不起這個愚蠢的問題:) – Sarah