這是有點不清楚你在找什麼(這應該可能在交叉驗證),但這裏有一個開始和線性迴歸的近似描述。
比方說,我有一些三維數據點(Noise
,PC1
,PC2
),你說他們有45個。
x=data.frame(matrix(rnorm(3*45),ncol=3))
names(x)<-c('Noise','PC1','PC2')
這些數據是圍繞這個3維空間隨機分佈的。現在我們想象還有另一個我們特別感興趣的變量,叫做Trait
。我們認爲Noise
,PC1
和PC2
各自的變化可以解釋在Trait
中觀察到的一些變化。特別是,我們認爲每個變量都與Trait
成線性比例關係,所以它只是您以前見過的基本舊的y=mx+b
線性關係,但對於每個變量都有一個不同的斜率m
。所以總的來說,我們想象得到Trait = m1*Noise + m2*PC1 + m3*PC2 +b
加上一些額外的噪音(這是一個恥辱你的變量之一被命名爲Noise
,這是令人困惑的)。因此,要回過頭來模擬一些數據,我們將爲這些斜率選擇一些值,並將它們放入一個名爲beta
的向量中。
beta<-c(-3,3,.1) # these are the regression coefficients
因此模型Trait = m1 Noise + m2 PC1 + m3 PC2 +b
也可能用簡單的矩陣乘法表示,我們可以做到這一點在R,
trait<- as.matrix(x)%*%beta + rnorm(nrow(x),0,1)
,我們已經添加了等於1個標準差的高斯噪聲。
因此,這是線性迴歸模型的「模擬數據」。正如一個全面的檢查,讓我們嘗試
l<-lm(trait~Noise+PC1+PC2,data=x)
summary(l)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.13876 0.11159 1.243 0.221
Noise -3.08264 0.12441 -24.779 <2e-16 ***
PC1 2.94918 0.11746 25.108 <2e-16 ***
PC2 -0.01098 0.10005 -0.110 0.913
所以注意到,我們挑選了PC2
斜率很小(0.1
)相對於數據的總體變化是,它沒有被檢測爲一個統計顯著預測。另外兩個變量對Trait
有相反的影響。因此,在模擬數據時,您可以調整變量的觀察範圍,以及迴歸係數的大小beta
。
您究竟想要如何創建這些模擬數據集?你是在尋求統計建議,還是真的是一個特定的編程問題。如果前者,可能會在[stats.se]中提問;如果是後者,則用樣本輸入和期望的輸出創建一個[可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – MrFlick 2014-11-24 21:56:17
您似乎沒有意識到可能會擔心這些預測變量之間的相關性,我沒有看到您已經檢查過非線性函數關係的可能性。如果你遵循下面的關於keegans的建議,你不會對你的關係有任何洞見,因爲他只提供最簡單的數據關係,可能會產生你所看到的邊際估計。 – 2014-11-24 22:48:08