WedX - журнал о программировании и компьютерных науках

Преобразование арксинуса процентных данных

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

(csv) HS.PvsPERC

Мой код (с использованием csv: HS.PvsPERC):

mydata<-read.csv(file.choose())

attach(mydata)
summary(mydata)
str(mydata)
head(mydata)
dput(mydata)

mydata <-
structure(list(Herd.size = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L), .Label = c("Large", "Small"), class = "factor"), 
    Any.pregnant.in.herd. = structure(c(2L, 1L, 2L, 1L, 1L, 1L, 
    2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 
    2L, 2L, 2L, 2L, 2L, 1L), .Label = c("no clear evidence", 
    "pregnant"), class = "factor"), percentage.of.heads.up.at.halfway = c(0, 
    100, 80, 25, 57.14, 100, 0, 25, 50, 100, 100, 70, 100, 14.29, 
    26.67, 100, 50, 40, 67.65, 43.59, 5.41, 44.9, 41.5, 69.23, 
    14.29, 7.07, 6.05)), class = "data.frame", row.names = c(NA, 
-27L))

shapiro.test(mydata$percentage.of.heads.up.at.halfway)
length(percentage.of.heads.up.at.halfway)

mydatatrans<-asin(sqrt(mydata$percentage.of.heads.up.at.halfway))

Последняя строка выдает ошибку:

**Предупреждающее сообщение:
В asin(sqrt(mydata$percentage.of.heads.up.at.halfway)) : произведено NaN**

который я не уверен в том, как изменить/интерпретировать.


Я также пробовал (как предлагалось в других ответах):

trans.arcsine<-asin(sign(mydata)*sqrt(abs(mydata)))

**Ошибка в Math.data.frame(mydata): нечисловые переменные во фрейме данных: Herd.size, Any.pregnant.in.herd.**

(для любой беременной в столбце стада я использовал беременную и нет четких доказательств - должен ли я сделать их числовыми, как 1 и 0 или что-то подобное?)

trans.arcsine<-function(mydata){asin(sign(mydata)*sqrt(abs(mydata)))}
trans.arcsine(Herd.size~Any.pregnant.in.herd.)

**Ошибка в знаке (mydata): нечисловой аргумент математической функции**

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

r
04.05.2019

  • Можете ли вы опубликовать образцы данных? Отредактируйте вопрос, указав вывод dput(mydata). Или, если он слишком велик с выводом dput(head(mydata, 20)). 04.05.2019
  • Я надеюсь, что это поможет, если нет, я также включил изображение @RuiBarradas 04.05.2019
  • Да, это помогает. Кроме того, почему квадратный корень? это часть формулы, которую вы пытаетесь применить? 04.05.2019
  • Мой лектор сказал мне добавить, что во время сеанса помощи будет ли смысл без него? @РуиБаррадас 04.05.2019
  • Я действительно не могу сказать, это вопрос к вашему лектору. В любом случае, функцию должно быть легко адаптировать, просто удалите sqrt из кода. 04.05.2019

Ответы:


1

Ваш столбец находится в диапазоне от 0 до 100, а арксинус может применяться только к числам от 0 до 1. Я предполагаю, что эти проценты должны быть масштабированы от 0 до 1 путем деления на 100, а затем взять квадратный корень из масштабированного количество.

mydatatrans <- asin(sqrt(mydata$percentage.of.heads.up.at.halfway / 100))

Результаты для рассматриваемого mydata:

> mydatatrans
 [1] 0.0000000 1.5707963 1.1071487 0.5235988 0.8570431 1.5707963 0.0000000 0.5235988
 [9] 0.7853982 1.5707963 1.5707963 0.9911566 1.5707963 0.3876579 0.5426768 1.5707963
[17] 0.7853982 0.6847192 0.9657860 0.7211213 0.2347441 0.7343093 0.6999833 0.9827854
[25] 0.3876579 0.2691319 0.2485177

Редактировать:

Изменено имя фрейма данных с df на mydata.

04.05.2019
  • asin(sqrt(df$percentage.of.heads.up.at.halfway/100)) Ошибка в df$percentage.of.heads.up.at.halfway: объект типа «замыкание» не является подмножеством @R. Шифини 04.05.2019
  • @BethCarpenter Это связано с тем, что код ответа использует df, а не mydata в качестве имени фрейма данных. Просто измените это, и это сработает. 04.05.2019
  • поэтому он должен выглядеть так: asin(sqrt(mydata$percentage.of.heads.up.at.halfway/100)) numeric(0) Не могли бы вы объяснить немного подробнее, что это на самом деле означает? @РуиБаррадас 04.05.2019
  • @BethCarpenter Я не получаю numeric(0), вы, должно быть, делаете что-то еще, что делает mydata$percentage.of.heads.up.at.halfway вектором нулевой длины. 04.05.2019
  • числовой (0) вывод теперь исчез, данные теперь отображаются, как указано выше, спасибо, так что теперь я использую эти числа в качестве своих новых данных? 05.05.2019
  • Чтобы добавить новый столбец, выполните: mydata$new_column = mydatatrans, где new_column может быть любым именем, которое вы хотите, которое не является столбцом в mydata или одним из уже существующих, чтобы перезаписать этот столбец. 05.05.2019

  • 2

    Вы можете сделать ответ пользователя R. Schifini более общим, определив функция, которая позаботится о масштабировании для вас, а затем вычислит арксинус.

    arcsin <- function(x, col = 3){
      scaled <- x[[col]]/diff(range(x[[col]]))
      asin(sqrt(scaled))
    }
    
    arcsin(mydata)
    arcsin(mydata, 'percentage.of.heads.up.at.halfway')
    

    Заметки:

    • col = 3 — столбец ввода по умолчанию.
    • Если вы передаете имя столбца в аргументе col, это должна быть строка символов, то есть она должна быть заключена в кавычки, как во втором примере использования.
    • Масштабирование использует diff и поэтому не зависит от конкретного диапазона входного вектора.
    04.05.2019
  • so the output values: arcsin(mydata, 'percentage.of.heads.up.at.halfway') [1] 0.0000000 1.5707963 1.1071487 0.5235988 0.8570431 1.5707963 0.0000000 0.5235988 0.7853982 [10] 1.5707963 1.5707963 0.9911566 1.5707963 0.3876579 0.5426768 1.5707963 0.7853982 0.6847192 [19] 0,9657860 0,7211213 0,2347441 0,7343093 0,6999833 0,9827854 0,3876579 0,2691319 0,2485177 Могу ли я запустить на них двухстороннюю анову? @РуиБаррадас 04.05.2019
  • @BethCarpenter Вам понадобятся столбцы факторов. 04.05.2019
  • Как создать столбцы факторов? 05.05.2019
  • стадо1‹-фактор(c(маленькое, большое), заказано = ИСТИНА) preg1‹-фактор(c(беременно, нет четких доказательств), заказано = ИСТИНА) 05.05.2019
  • @BethCarpenter Любой из fit <- lm(percentage.of.heads.up.at.halfway ~ percentage.of.heads.up.at.halfway ~ Herd.size*Any.pregnant.in.herd., mydata);anova(fit) или model <- aov(percentage.of.heads.up.at.halfway ~ Herd.size*Any.pregnant.in.herd., mydata);summary(model). 05.05.2019
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]