古いデータと新しいデータを含む大きなデータセットがあります。2つのデータフレームを作成しました。古いデータを使用してEarlyYearsを作成し、新しいデータを使用してLaterYearsを作成したため、同じ列になります。
私がやりたいのは、初期のデータを回帰して方程式を決定し、それを後年に適用して方程式の強度をテストすることです-AとBは定数です、入力は私がテストしているものです-私はそれをさまざまな実行のために変更しますコード-そしてダミーは1で、入力用のデータがありません。ただし、EarlyYearsとLaterYearsの両方のデータを変数の1つの五分位で分割し、EarlyYearsの五分位1で見つかった方程式を、五分位1にあるLaterYearsのデータに適用したいと思います。持ってる:
Model<-data.frame(Date = rep(c("3/31/09","3/31/11"),each = 20),
InputRating = rep(c(1:5), 8), Dummy = rep(c(rep(0,9),1),4),
Y = rep(1,3,5,7,11,13,17,19), A = 1:40,B = 1:40*3+7)
newer<-as.numeric(grep("/11",Model$Date))
later<-as.numeric(grep("/11",Model$Date,invert = TRUE))
LaterYears<-Model[newer,]
EarlyYears<-Model[later,]
newModel<-EarlyYears
DataSet.Input<-data.frame(Date = newModel$Date, InputRating = newModel$InputRating,
Dummy = newModel$Dummy, Y = newModel$Y, A = newModel$A,B = newModel$B)
quintiles<-quantile(DataSet.Input$A,probs=c(0.2,0.4,0.6, 0.8, 1.0))
VarQuint<-findInterval(DataSet.Input$A,quintiles,rightmost.closed=TRUE)+1L
regressionData<-do.call(rbind,lapply(split(DataSet.Input,VarQuint),
FUN = function(SplitData) {
SplitRegression<-lm(Y ~ A + B + InputRating + Dummy, data = SplitData, na.action = na.omit)
c(coef.Intercept = coef(summary(SplitRegression))[1],
coef.A = coef(summary(SplitRegression))[2],
coef.B = coef(summary(SplitRegression))[3],
coef.Input = coef(summary(SplitRegression))[4],
coef.Dummy= coef(summary(SplitRegression))[5])
}))
i = 0
quintiles.LY<-quantile(LaterYears$A,probs=c(0.2,0.4,0.6, 0.8, 1.0))
Quint.LY<-findInterval(LaterYears$A,quintiles,rightmost.closed=TRUE)+1L
LaterYears$ExpectedValue <-apply(split(LaterYears,Quint.LY),1,
FUN = function(SplitData) {
i=i+1
regressionData[i,1]+regressionData[i,2]*SplitData$A +
regressionData[i,3]*SplitData$B + regressionData[i,4]*SplitData$Input +
regressionData[i,5]*SplitData$Dummy
})
最初の部分は、regressionDataでデータを取得するのに最適です。方程式を適用したこの結果をLaterYearsデータセット内の列に保持したいのですが、エラーが発生します-
Error in apply(split(LaterYears, Quint.LY), 1, FUN = function(SplitData) { :
dim(X) must have a positive length
これをapplyで実行する場合は空白、lapplyで実行する場合は空白にします。これは私が最初に試したものです。
これを修正する方法についての助けをいただければ幸いです。ありがとう!