我試圖在R中實現流行擴散模型。擴散公式爲delta_y =(a + b * y)*( NY)。 y描述t期的當前用戶,N描述潛在用戶的數量,delta_y描述t中的新用戶,a以及b是待估計的參數。請注意,y是以前所有delta_y的累計總和。對於單一的觀察(以delta_y和y爲載體)模型簡單地兼容於:R:使用二維非線性最小二乘法(nls)的流行擴散模型
model1 <- nls(delta_y ~ (a+b * y) * (N-y))
現在的問題是,我有一組這種類型的意見,我想估計相同的參數a和b爲他們所有。我試圖從上面使用相同的公式,但現在delta_y和y是二維數組而不是矢量。我在qr.qty(QR,resid)中收到錯誤: 'qr'和'y'必須具有相同的行數「
有關數據的詳細信息:y以及delta_y是二維數組有16列和20103行。陣列創建如下:
y=matrix(c(data$nearby_1998,data$nearby_1999, data$nearby_2000, ..., data$nearby_2013),nrow=20103)
invCum <- function (data) {result=matrix(nrow=nrow(data), ncol=ncol(data)); result[,1]=data[,1]; for (i in 2:ncol(data)) {result[,i] <- data[,i]-data[,i-1]}; return(result)}
delta_y <- invCum(y)
invCum是返回噸新用戶給出的累積用戶噸(實際上逆cumsum功能)的功能。 str(y)傳遞「int [1:20103,1:16] 0 0 0 0 0 0 0 0 0 0 ...」。 str(delta_y)還提供了「int [1:20103,1:16] 0 0 0 0 0 0 0 0 0 0 ...」。 請注意,並非所有條目都是0,只是許多第一個條目。
每列數據都有20103條目。上述模型適用於單行數據。
的asteristiks只是不知何故沒有顯示,我編輯的文本,以便他們是可見的。我構建了像y = matrix(c(數據$ 1998,數據$ 1999,數據$ 2000,...,data $ 2013),nrow = 2)的數組。數據的每一列都有20103行。 –
對不起,我的意思是y =矩陣(c(數據$ 1998,數據$ 1999,數據$ 2000,...,數據$ 2013),nrow = 20103) –
好吧,你是對的,我的原始列名是nearby_1998,nearby_1999等我只是想舉一個我如何創建陣列的例子... –