Функция лог с отрицательными наблюдениями - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть следующие данные, и я хотел бы применить функцию log():

 v1 
 2 
 3 
 4 
-1 
 5

Ожидаемый результат:

 v1
 2  0.30 ~ log(2)
 3  0.48 ~ log(3)
 4  0.60 ~ log(4)
-1    .
 5  0.70 ~ log(5)

Это просто упрощенная версия проблемы,В моем наборе данных содержится 35000 наблюдений, и я не смог найти простых правил, таких как drop if v1 <= 0, для решения этой проблемы.

Не проверяя сначала мои данные, у меня на уме один метод - использовать цикл for и запускать функцию log() над наблюдениями.Однако я не смог найти ни одного сайта, рассказывающего мне, как это сделать.

1 Ответ

0 голосов
/ 01 декабря 2018

Stata вернет отсутствующий, если его попросят принять логарифм нулевых или отрицательных значений.Но

generate log_x = log(x) 

и

generate log_x = log(x) if x > 0 

будут иметь точно такой же результат, пропуски в наблюдениях с проблемными значениями.

Большой вопрос здесь - статистический.Почему вы хотите взять логарифмы такой переменной в любом случае?Если ваша идея заключается в преобразовании переменной, тогда доступны другие преобразования.Если переменная является ответной или конечной переменной, то обобщенная линейная модель с логарифмической связью будет работать, даже если есть нулевые или отрицательные значения;идея состоит в том, что средняя функция должна оставаться положительной.

Было много, много тем, поднимающих эти проблемы на Cross Validated и Statalist.

Я не могу представить, почему вы думаете, что цикл необходим или полезен здесь.С generate утверждениями вышеописанного типа Stata автоматически зацикливается на наблюдениях.

...