2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Помогите с R
Сообщение10.11.2013, 19:29 
Аватара пользователя


15/11/08
502
London, ON
Здраствуйте,
Вот мой код:
Код:
n=10
w=0.5
Yit=1
Yic=1
Yr=0

'создание переменных'
Z<-runif(n)
U<-runif(n)

'определение влияния плацебо:'

for (i in 1:n){
  if (U[i]>0.253)
    Yic[i]<-1
  else if (U[i]>(-0.253)&&U[i]<0.253)
    Yic[i]<-w
  else
    Yic[i]<-0
}

'влияние лекарства:'

for (i in 1:n){
  if (U[i]+Z[i]>0.321553)
    Yit[i]<-1
  else if (U[i]+Z[i]>-0.314919&&U[i]+Z[i]<0.321553)
    Yit[i]<-w
  else
    Yit[i]<-0
}

'рандомизация:'

  s<-sample(1:n,0.75*n,FALSE)
  X <-rep(0,n)
  X[s]<-1

  Y <-X*Yit+(1-X)*Yic

  for (j in 1:n){
    if (Y[j]==0)
      Yr[j]<-1
    else if (Y[j]==w)
      Yr[j]<-2
    else
      Yr[j]<-3
  }

dat<-data.frame(Yr=as.factor(Yr),X=X,Z=Z)
datM<-data.frame(Y=Y,X=X,Z=Z)
Bm<-mlogit(Y ~ X + Z, data = datM, choise="Y", shape="wide")


Но в конечном итоге, выпадает такое сообщение:

Код:
Error in `row.names<-.data.frame`(`*tmp*`, value = value) :
  invalid 'row.names' length


Я уже перечитал все возможные форумы, но на них объясняют решения проблем с уже готовой базой данных, и мне не понятно, что у меня не правильно. До этого пользовался всегда функцией multinom() из nnet package и все работало, но сейчас мне нужен аутпут именно из mlogit.

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 19:31 
Заслуженный участник
Аватара пользователя


18/01/13
12065
Казань
Пока только мельком взглянула и очень удивилась. Зачем столько циклов? Идеология R - векторные вычисления.

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 20:01 
Аватара пользователя


15/11/08
502
London, ON
А у меня по-другому не работает :-(

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 20:21 
Заслуженный участник
Аватара пользователя


18/01/13
12065
Казань
А как делали? Я переделала начало, вроде работает. Но функции mlogit у меня нет. Она из какого-то доп. пакета?

Код:
Код:
n=10
w=0.5
'создание переменных'
Z<-runif(n); U<-runif(n)
'начальные значения векторов'
Yic<-Yit<-rep(w,n)
Yr<-rep(2,n)

'определение влияния плацебо:'
Yic[U>0.253]<-1
Yic[U<(-0.253)]<-0

'влияние лекарства:'
Yit[U+Z>0.3215253]<-1
Yit[U+Z<(-0.321553)]<-0

'рандомизация:'
  s<-sample(1:n,0.75*n,FALSE)
  X <-rep(0,n)
  X[s]<-1

  Y <-X*Yit+(1-X)*Yic
  Yr[Y==0]<-1
  Yr[Y==1]<-3

dat<-data.frame(Yr=as.factor(Yr),X=X,Z=Z)
datM<-data.frame(Y=Y,X=X,Z=Z)
#Bm<-mlogit(Y ~ X + Z, data = datM, choise="Y", shape="wide")


-- 10.11.2013, 21:24 --

Не очень понятно, зачем загонять данные в таблицу, а потом обрабатывать.

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 20:38 
Аватара пользователя


15/11/08
502
London, ON
Я в R учился сам и не долго, в основном работал в Matlab и SAS, поэтому пробовал по разному и не верно. Спасибо, теперь буду знать как можно делать без циклов, а то полуторачасовые симуляции утомляют.
Да, mlogit это функция из пакета mlogit() для создания мультиномиальной логистической регрессии. До этого я пользовался multinom() - она не привередливая и её аутпут просто интерпретировать, но сейчас мне нужно высчитать оценку Хьюбера, а для этого нужен mlogit(). А он работать не хочет, постоянно какие-то ошибки выдает.

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 20:42 
Заслуженный участник
Аватара пользователя


18/01/13
12065
Казань
Какой пакет-то надо подключать? Я бы хоть справку почитала.

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 20:45 
Аватара пользователя


15/11/08
502
London, ON
Пакет mlogit: http://www.rdocumentation.org/packages/ ... ons/mlogit

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 20:46 
Заслуженный участник
Аватара пользователя


18/01/13
12065
Казань
Что касается задания исходных данных, думаю, все можно сделать гораздо компактнее, но пока в этом нет необходимости.

-- 10.11.2013, 22:01 --

Справку посмотрела, там вроде другие параметры. Не сказано,какие данные должны быть $data$ . А как подключить эту функцию? Я подключила пакет $mlogit$, но он тоже такой функции не знает. Может, надо еще какую-нибудь библиотеку открыть?

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 21:08 
Аватара пользователя


15/11/08
502
London, ON
Там вводят формулу, базу данных, choise - как я понял это зависимая переменная, shape="wide" поскольку каждая строчка это отдельный, независимый индивид. Скорее всего пакет MASS тоже нужен.

-- Вс ноя 10, 2013 20:10:15 --

Я не уверен насчёт пакетов, я работаю через R Studio, там дополнительные пакеты скачиваются и устанавливаюся автоматически.

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 21:13 
Заслуженный участник
Аватара пользователя


18/01/13
12065
Казань
Видимо, придется научиться тоже. Мне студенты его советовали :roll:

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 21:19 
Аватара пользователя


15/11/08
502
London, ON
Он удобнее. :-)

-- Вс ноя 10, 2013 20:28:25 --

Вот список пакетов, которые он использует: Formula, graphics, grDevices, MASS, maxLik, methods, statmod, utils.
Но я сам уже убил на это 6 часов и не смею просить вашей помощи. Эта функция очень сложная.

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 21:36 
Заслуженный участник
Аватара пользователя


18/01/13
12065
Казань
Ну. подключила я R Studio, никакой разницы. Вы какие-нибудь install.packages делали?

-- 10.11.2013, 22:37 --

Neytrall в сообщении #787269 писал(а):
Но я сам уже убил на это 6 часов и не смею просить вашей помощи. Эта функция очень сложная.

Ничего, мне самой полезно.

(Оффтоп)

Тем более я на второй половине экрана шоу "Повтори" смотрю :wink:

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 21:38 
Аватара пользователя


15/11/08
502
London, ON
Я установил только $mlogit$. Остальные скачались автоматом.

-- Вс ноя 10, 2013 20:48:48 --

Я попробовал запустить ещё раз вот так:
Код:
datM<-data.frame(Y=Y,X=X,Z=Z)
dat<-mlogit.data(data = datM,choice="Y",shape="wide")
Bm<-mlogit(Y ~ X + Z, data = dat)


И в итоге получил такое сообщение:

Код:
Error in solve.default(H, g[!fixed]) :
  Lapack routine dgesv: system is exactly singular: U[2,2] = 0

 Профиль  
                  
 
 Re: Помогите с R
Сообщение10.11.2013, 23:31 
Заслуженный участник
Аватара пользователя


18/01/13
12065
Казань
Уже что-то осмысленное. Может. просто решения нет? Жаль, что я плохо знаю эту часть статистики. Кстати, с какими данными должна работать команда, бинарными или действительными? Переменная $Z$ - не бинарная.

-- 11.11.2013, 00:32 --

Кстати. у меня команда так и не запустилась :-(

 Профиль  
                  
 
 Re: Помогите с R
Сообщение11.11.2013, 01:29 
Аватара пользователя


15/11/08
502
London, ON
$Z$ - не бинарная.
$X$ - бинарная $X\in\{0,1\}$
$Y$ - категориальная $Y \in\{0,w,1\}$.

Я попробовал
Код:
Bm<-mlogit(Y ~ 1|X + Z, data = dat)

И оно заработало, но не так как надо. Итогом должна быть матрица 2Х3, а мне выдаёт лишь один вектор. Она каким-то образом из мультиномиальной логистической регрессии делает обычную логистическую...

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group