[R] Error in x %*% coef(object) : non-conformable arguments
Mike Harwood
harwood262 at gmail.com
Fri Jan 7 22:15:24 CET 2011
Hello, and thanks in advance!
What does the error message "Error in x %*% coef(object) : non-
conformable arguments" when indicate when predicting values for
newdata with a model from bigglm (in package biglm), and how can I
debug it? I am attempting to do Monte Carlo simulations, which may
explain the somewhat interesting loop which follows. After the code I
have included the output, which shows that a) the simulations are
changing the values, and b) there are not any atypical values for the
factors in the seventh iteration. At the end of the output is the
aforementioned error message.
Code:
=======
iter <- nrow(nov.2010)
predict.nov.2011 <- vector(mode='numeric', length=iter)
for (i in 1:iter) {
iter.df <- nov.2010
##---------- Update values of dynamic variables ------------------
iter.df$age <- iter.df$age + 12
iter.df$pct_utilize <-
iter.df$pct_utilize + mc.util.delta[i]
iter.df$updated_varname1 <-
ceiling(iter.df$updated_varname1 + mc.varname1.delta[i])
if(iter.df$state=="WI")
iter.df$varname3 <- iter.df$varname3 + mc.wi.varname3.delta[i]
if(iter.df$state=="MN")
iter.df$varname3 <- iter.df$varname3 + mc.mn.varname3.delta[i]
if(iter.df$state=="IL")
iter.df$varname3 <- iter.df$varname3 + mc.il.varname3.delta[i]
if(iter.df$state=="US")
iter.df$varname3 <- iter.df$varname3 + mc.us.varname3.delta[i]
##--- Bin Variables ------------------
iter.df$bin_varname1 <- as.factor(recode(iter.df$updated_varname1,
"300:499 = '300 - 499';
500:549 = '500 - 549';
550:599 = '550 - 599';
600:649 = '600 - 649';
650:699 = '650 - 699';
700:749 = '700 - 749';
750:799 = '750 - 799'; 800:849 = 'GE 800'; else =
'missing';
"))
iter.df$bin_age <- as.factor(recode(iter.df$age,
"0:23 = ' < 24mo.';
24:72 = '24 - 72mo.';
72:300 = '72 - 300mo'; else = 'missing';
"))
iter.df$bin_util <- as.factor(recode(iter.df$pct_utilize,
"0.0:0.2 = ' 0 - 20%';
0.2:0.4 = ' 20 - 40%';
0.4:0.6 = ' 40 - 60%';
0.6:0.8 = ' 60 - 80%';
0.8:1.0 = ' 80 - 100%';
1.0:1.2 = '100 - 120%'; else = 'missing';
"))
iter.df$bin_varname2 <- as.factor(recode(iter.df$varname2_prop,
"0:70 = ' < 70%';
70:85 = ' 70 - 85%';
85:95 = ' 85 - 95%';
95:110 = '95 - 110%'; else = 'missing';
"))
iter.df$bin_varname1 <- relevel(iter.df$bin_varname1, 'missing')
iter.df$bin_age <- relevel(iter.df$bin_age, 'missing')
iter.df$bin_util <- relevel(iter.df$bin_util, 'missing')
iter.df$bin_varname2 <- relevel(iter.df$bin_varname2, 'missing')
#~ print(head(iter.df))
if (i>=6 & i<=8){
print('---------------------------------')
browser()
print(i)
print(table(iter.df$bin_varname1))
print(table(iter.df$bin_age))
print(table(iter.df$bin_util))
print(table(iter.df$bin_varname2))
#~ debug(predict.nov.2011[i] <-
#~ sum(predict(logModel.1, newdata=iter.df,
type='response')))
}
predict.nov.2011[i] <-
sum(predict(logModel.1, newdata=iter.df, type='response'))
print(predict.nov.2011[i])
}
Output
==========
[1] 36.56073
[1] 561.4516
[1] 4.83483
[1] 5.01398
[1] 7.984146
[1] "---------------------------------"
Called from: top level
Browse[1]>
[1] 6
missing 300 - 499 500 - 549 550 - 599 600 - 649 650 - 699 700 - 749
750 - 799 GE 800
842 283 690 1094 1695 3404
6659 18374 21562
missing < 24mo. 24 - 72mo. 72 - 300mo
16 2997 19709 31881
missing 0 - 20% 20 - 40% 40 - 60% 60 - 80% 80 - 100% 100
- 120%
17906 4832 4599 5154 7205
14865 42
missing < 70% 70 - 85% 85 - 95% 95 - 110%
10423 19429 10568 8350 5833
[1] 11.04090
[1] "---------------------------------"
Called from: top level
Browse[1]>
[1] 7
missing 300 - 499 500 - 549 550 - 599 600 - 649 650 - 699 700 - 749
750 - 799
847 909 1059 1586 3214 6304
16349 24335
missing < 24mo. 24 - 72mo. 72 - 300mo
16 2997 19709 31881
missing 0 - 20% 20 - 40% 40 - 60% 60 - 80% 80 - 100% 100
- 120%
17145 4972 4617 5020 6634
16139 76
missing < 70% 70 - 85% 85 - 95% 95 - 110%
10423 19429 10568 8350 5833
Error in x %*% coef(object) : non-conformable arguments
Model
=======
Large data regression model: bigglm(outcome ~ bin_varname1 +
bin_varname2 + bin_age + bin_util +
state + varname3 + varname3:state, family = binomial(link =
"logit"),
data = dev.data, maxit = 75, sandwich = FALSE)
Sample size = 1372250
More information about the R-help
mailing list