2016-01-10 3 views
0

Я пытаюсь сделать что-то близкое к неглубоким бутстрапингам, но я борюсь с типом данных. Вот сценарий:Сравнение двух векторов (предсказано/ожидалось)

library(languageR) 
data(dative) 
sub1<-dative[grepl("S10|S11",dative$Speaker),] 
mod_sub1<-glm(RealizationOfRecipient~Verb+SemanticClass+LengthOfRecipient+AnimacyOfRec+DefinOfRec+PronomOfRec+LengthOfTheme+AnimacyOfTheme+DefinOfTheme+PronomOfTheme+AccessOfRec+AccessOfTheme,family='binomial',data=sub1) 
comp_sub1<-dative[!grepl("S10|S11",dative$Speaker),] 
expected_compsub1 <- comp_sub1$RealizationOfRecipient 
predicted_compsub1 <- predict(mod_sub1,ndata=comp_sub1,type="response") 
predictions_sub1 <- prediction(predicted_compsub1,expected_compsub1) 
performance_sub1 <- performance(predictions_sub1,"tpr","fpr") 
plot(performance_sub1) 

В окне глобальной окружающей среды:

- expected_compsub1 : Factor w/ 2 levels "NP","PP" : 1 1 1 ... 
- predicted_compsub1 : Named num [1:1076] 0.1561 0.9889 ... 

Я пытался использовать ifelse (predicted_compsub1 >0.5,"NP","PP"), но он не работает.

я получаю следующую ошибку :

predictions_sub1 <- prediction(y_predicted_compsub1,expected_compsub1) 
Error in prediction(y_predicted_compsub1, expected_compsub1) : 
Number of predictions in each run must be equal to the number of labels for each run. 

я могу видеть, что это вопрос типа, но я не понимаю, как решить эту проблему. Спасибо за понимание!

+0

Где находится функция прогнозирования()? Он не загружен этим пакетом. – Gopala

+0

Обычные функции 'предсказывать', такие как' predict.glm', принимают аргумент 'type'. Вы указываете 'type =" response "', чтобы получить предсказанные значения y, а не, скажем, линейный предиктор. Посмотрите на документацию для вашей функции «предсказание» - какой бы пакет она ни возникла - чтобы увидеть, есть ли у нее что-то подобное. – Gregor

+0

прогноз() происходит из библиотеки ROCR. В документации он работает следующим образом: прогнозирование (прогнозы, метки, label.ordering = NULL) ... Я не вижу, как он относится к «типу» (который я использую в pred()). –

ответ

1

Я наконец нашел, что не так. Я не использовал, если еще в нужном месте:

library(languageR) 
library(ROCR) 
data(dative)  
sub1<-dative[grepl("S10|S11",dative$Speaker),] 
complementaire_sub1<-dative[!grepl("S10|S11",dative$Speaker),] 
mod_sub1<-glm(RealizationOfRecipient~LengthOfRecipient+AnimacyOfRec+DefinOfRec+PronomOfRec+LengthOfTheme+AnimacyOfTheme+DefinOfTheme+PronomOfTheme+AccessOfRec+AccessOfTheme,family='binomial',data=complementaire_sub1) # minus subjects,verbs 
expected_compsub1 <- sub1$RealizationOfRecipient 
predicted_compsub1 <- predict(mod_sub1,newdata=sub1,type="response") 
predicted_compsub1 <- ifelse(predicted_compsub1 > 0.5,0,1) 
predictions_sub1 <- prediction(predicted_compsub1,expected_compsub1) 
performance_sub1 <- performance(predictions_sub1,"tpr","fpr") 
sum(predicted_compsub1 & as.numeric(expected_compsub1))/sum(as.numeric(expected_compsub1)) 
sum(predicted_compsub1 & as.numeric(expected_compsub1))/sum(predicted_compsub1) 
plot(performance_sub1,main="S10|S11") 

Теперь это работает! Спасибо всем за вашу помощь !

Смежные вопросы