В настоящее время я провожу совместный эксперимент через Qualtrics. В частности, в этом эксперименте, во -первых, в каждом блоке таблица совместной связи включает в себя три регулярные особенности: пол (уровни: женщина и мужчина), партия (уровни: DEM и Rep) и идеология (уровни: консервативные, либеральные и независимые) и одна из двух особенностей (случайно выбранные): аборт (уровни: поддержка, противоположные и нейтральные) и оружие (уровни: поддержка, противоположность и нейтрально). Во -вторых, в каждом блоке функции в совместной таблице случайным образом переупорядочиваются. Проблема сейчас в том, что вышеуказанные цели выполняются, экспортируемые данные не смогут захватить название функции «оружия», то есть, хотя элемент пистолет был выбран и показан ответчику, в экспортированных данных название этой функции все еще остается абортом. Ниже приведен JavaScript, который я использую. Любая помощь приветствуется. < /P>
javascript: < /p>
// Code to randomly generate conjoint profiles in a Qualtrics survey
// Terminology clarification:
// Task = Set of choices presented to respondent in a single screen (i.e. pair of candidates)
// Profile = Single list of attributes in a given task (i.e. candidate)
// Attribute = Category characterized by a set of levels (i.e. education level)
// Level = Value that an attribute can take in a particular choice task (i.e. "no formal education")
// Attributes and Levels stored in a 2-dimensional Array
/* Randomize array in-place using Durstenfeld shuffle algorithm */
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array;
array = array[j];
array[j] = temp;
}
return(array);
}
// Function to generate weighted random numbers
function weighted_randomize(prob_array, at_key)
{
var prob_list = prob_array[at_key];
// Create an array containing cutpoints for randomization
var cumul_prob = new Array(prob_list.length);
var cumulative = 0.0;
for (var i=0; i < prob_list.length; i++){
cumul_prob = cumulative;
cumulative = cumulative + parseFloat(prob_list);
}
// Generate a uniform random floating point value between 0.0 and 1.0
var unif_rand = Math.random();
// Figure out which integer should be returned
var outInt = 0;
for (var k = 0; k < cumul_prob.length; k++){
if (cumul_prob[k] 1){
for (var p = 1; p < constraints.length; p++){
if (featureArrayKeys.includes(constraints[p])){
var remkey = featureArrayKeys.indexOf(constraints[p]);
featureArrayKeys.splice(remkey, 1);
}
}
}
}
}
// Re-randomize the featurearray keys
featureArrayKeys = shuffleArray(featureArrayKeys);
// Re-insert the non-free attributes constrained by $attrconstraintarray
if (attrconstraintarray.length != 0){
for (const constraints of attrconstraintarray){
if (constraints.length > 1){
var insertloc = constraints[0];
if (featureArrayKeys.includes(insertloc)){
var insert_block = [];
for (var p = 1; p < constraints.length; p++){
insert_block.push(constraints[p]);
}
var begin_index = featureArrayKeys.indexOf(insertloc);
featureArrayKeys.splice(begin_index+1, 0, ...insert_block);
}
}
}
}
// Re-generate the new $featurearray - label it $featureArrayNew
var featureArrayNew = {};
for (var h = 0; h < featureArrayKeys.length; h++){
featureArrayNew[featureArrayKeys[h]] = featurearray[featureArrayKeys[h]];
}
// Initialize the array returned to the user
// Naming Convention
// Level Name: F-[task number]-[profile number]-[attribute number]
// Attribute Name: F-[task number]-[attribute number]
// Example: F-1-3-2, Returns the level corresponding to Task 1, Profile 3, Attribute 2
// F-3-3, Returns the attribute name corresponding to Task 3, Attribute 3
var returnarray = {};
// For each task $p
for(var p = 1; p
Подробнее здесь: https://stackoverflow.com/questions/795 ... -qualtrics
Вопросы о проведении совместного эксперимента через Qualtrics ⇐ Javascript
Форум по Javascript
-
Anonymous
1744707563
Anonymous
В настоящее время я провожу совместный эксперимент через Qualtrics. В частности, в этом эксперименте, во -первых, в каждом блоке таблица совместной связи включает в себя три регулярные особенности: пол (уровни: женщина и мужчина), партия (уровни: DEM и Rep) и идеология (уровни: консервативные, либеральные и независимые) и одна из двух особенностей (случайно выбранные): аборт (уровни: поддержка, противоположные и нейтральные) и оружие (уровни: поддержка, противоположность и нейтрально). Во -вторых, в каждом блоке функции в совместной таблице случайным образом переупорядочиваются. Проблема сейчас в том, что вышеуказанные цели выполняются, экспортируемые данные не смогут захватить название функции «оружия», то есть, хотя элемент пистолет был выбран и показан ответчику, в экспортированных данных название этой функции все еще остается абортом. Ниже приведен JavaScript, который я использую. Любая помощь приветствуется. < /P>
javascript: < /p>
// Code to randomly generate conjoint profiles in a Qualtrics survey
// Terminology clarification:
// Task = Set of choices presented to respondent in a single screen (i.e. pair of candidates)
// Profile = Single list of attributes in a given task (i.e. candidate)
// Attribute = Category characterized by a set of levels (i.e. education level)
// Level = Value that an attribute can take in a particular choice task (i.e. "no formal education")
// Attributes and Levels stored in a 2-dimensional Array
/* Randomize array in-place using Durstenfeld shuffle algorithm */
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return(array);
}
// Function to generate weighted random numbers
function weighted_randomize(prob_array, at_key)
{
var prob_list = prob_array[at_key];
// Create an array containing cutpoints for randomization
var cumul_prob = new Array(prob_list.length);
var cumulative = 0.0;
for (var i=0; i < prob_list.length; i++){
cumul_prob[i] = cumulative;
cumulative = cumulative + parseFloat(prob_list[i]);
}
// Generate a uniform random floating point value between 0.0 and 1.0
var unif_rand = Math.random();
// Figure out which integer should be returned
var outInt = 0;
for (var k = 0; k < cumul_prob.length; k++){
if (cumul_prob[k] 1){
for (var p = 1; p < constraints.length; p++){
if (featureArrayKeys.includes(constraints[p])){
var remkey = featureArrayKeys.indexOf(constraints[p]);
featureArrayKeys.splice(remkey, 1);
}
}
}
}
}
// Re-randomize the featurearray keys
featureArrayKeys = shuffleArray(featureArrayKeys);
// Re-insert the non-free attributes constrained by $attrconstraintarray
if (attrconstraintarray.length != 0){
for (const constraints of attrconstraintarray){
if (constraints.length > 1){
var insertloc = constraints[0];
if (featureArrayKeys.includes(insertloc)){
var insert_block = [];
for (var p = 1; p < constraints.length; p++){
insert_block.push(constraints[p]);
}
var begin_index = featureArrayKeys.indexOf(insertloc);
featureArrayKeys.splice(begin_index+1, 0, ...insert_block);
}
}
}
}
// Re-generate the new $featurearray - label it $featureArrayNew
var featureArrayNew = {};
for (var h = 0; h < featureArrayKeys.length; h++){
featureArrayNew[featureArrayKeys[h]] = featurearray[featureArrayKeys[h]];
}
// Initialize the array returned to the user
// Naming Convention
// Level Name: F-[task number]-[profile number]-[attribute number]
// Attribute Name: F-[task number]-[attribute number]
// Example: F-1-3-2, Returns the level corresponding to Task 1, Profile 3, Attribute 2
// F-3-3, Returns the attribute name corresponding to Task 3, Attribute 3
var returnarray = {};
// For each task $p
for(var p = 1; p
Подробнее здесь: [url]https://stackoverflow.com/questions/79574743/questions-about-conducting-conjoint-experiment-through-qualtrics[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия