<img src="https://raw.githubusercontent.com/NeuroQuestAi/neuroquestai.github.io/main/brand/logo/neuroquest-orange-logo.png" align="right" width="65" height="65"/>
# Five Factor E 🌊
[![Powered by NeuroQuestAI](https://img.shields.io/badge/powered%20by-NeuroQuestAI-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](
https://neuroquest.ai)
[![PyPI Latest Release](https://img.shields.io/pypi/v/five-factor-e.svg)](https://pypi.org/project/five-factor-e/)
![python 3][python_version]
[![PyPi Downloads](https://static.pepy.tech/badge/five-factor-e)](https://pepy.tech/project/five-factor-e)
[![Code style: Black](https://img.shields.io/badge/code%20style-Black-000000.svg)](https://github.com/psf/black)
[![Packaged with Poetry][poetry-badge]](https://python-poetry.org/)
[poetry-badge]: https://img.shields.io/badge/packaging-poetry-cyan.svg
[python_version]: https://img.shields.io/static/v1.svg?label=python&message=3%20&color=blue
<p align="center">
<img src="https://raw.githubusercontent.com/NeuroQuestAi/five-factor-e/main/doc/big-five2.png" alt="Representation of the Big Five"/>
</p>
The International Personality Item Pool [(IPIP)](https://ipip.ori.org/) is a public domain collection of items for use in personality tests. It is managed by the [Oregon Research Institute](https://www.ori.org/).
This project assesses a person's personality based on an inventory of questions. The project uses the **Big Five** theory using the [IPIP-NEO-300](https://drj.virtualave.net/IPIP/ipipneo300.htm) model created by **Lewis R. Goldberg** and [IPIP-NEO-120](https://drj.virtualave.net/IPIP/ipipneo120.htm) the shorter version developed by Professor **Dr. John A. Johnson**, this is a free representation of the [NEO PI-R™](https://en.wikipedia.org/wiki/Revised_NEO_Personality_Inventory).
👉 *"The IPIP-NEO is not identical to the original NEO PI-R, but in my opinion it is close enough to serve as a good substitute. More and more people are beginning to use it in published research, so its acceptance is growing."* - Dr. Johnson
The main idea of the project is to facilitate the use of **Python** developers who want to use **IPIP-NEO** in their projects. *The project is also done in pure Python, it doesn't have any dependencies on other libraries*.
👉 *"That is wonderful, ...! Thank you for developing the Python version of the IPIP-NEO and making it publicly available. It looks like a great resource."* - Dr. Johnson
Note 🚩: *The project is based on the work of Dhiru Kholia, and is an adaptation of [NeuroQuestAI](https://github.com/NeuroQuestAi) for a version that can be reused in other projects of the company.*
### Synopsis 🌐
A little theory, The Big Five or Five Factor is made up of **5** great human personalities also known as the 🌊 **O.C.E.A.N**. Are they:
* **O**penness
* **C**onscientiousness
* **E**xtraversion
* **A**greeableness
* **N**euroticism
To compose each great personality there are **6** traits or facets, totaling **30** traits. The user must answer a questionnaire of **120** or **300** single choice questions with **5** options:
* Very Inaccurate
* Moderately Inaccurate
* Neither Accurate Nor Inaccurate
* Moderately Accurate
* Very Accurate
For more information to demystify the Big Five, please see the article: [Measuring the Big Five Personality Domains](https://pages.uoregon.edu/sanjay/bigfive.html).
User-selected answers follow the position:
| Option | Array |
| ------------------------------- | ----------- |
| Very Inaccurate | 1 |
| Moderately Inaccurate | 2 |
| Neither Accurate Nor Inaccurate | 3 |
| Moderately Accurate | 4 |
| Very Accurate | 5 |
Note 🚩: Some answers have the order of the [score reversed](https://ipip.ori.org/newScoringInstructions.htm), the algorithm treats the questions with the score inverted by (*question_id*).
### Releases 🎈
News about each version please look here:
* [Releases](https://github.com/NeuroQuestAi/five-factor-e/blob/main/RELEASES.md)
### Installation 🚀
From **PyPI**:
```shell
python3 -m pip install --upgrade five-factor-e
```
From source:
```shell
git clone https://github.com/NeuroQuestAi/five-factor-e.git ; cd five-factor-e
python3 -m pip install .
```
or [Poetry](https://python-poetry.org/):
```shell
git clone https://github.com/NeuroQuestAi/five-factor-e.git ; cd five-factor-e
poetry shell && poetry install
```
### How to use 🔥
The construtor requires the questions model, whether it is the **300** model or short model with **120** questions. It also has the version to do simulations with the questions that are [reversed](https://ipip.ori.org/newScoringInstructions.htm). For this, you must turn the **test** variable from false to true, for more details on reverse scoring tests see section [Experiments with reverse scoring questions](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/README.md).
| Parameters | Type | Description |
| ------------- | --------- | ----------------------------------------------------------------- |
| question | int | Question type, 120 or 300. |
| test | boolean | Used to simulate reverse scoring questions, only used for studies.|
Example:
```python
from ipipneo import IpipNeo
ipip = IpipNeo(question=120)
```
The **120** item version is a short version of the inventory, but you can use the full **300** item version. Example:
```python
from ipipneo import IpipNeo
ipip = IpipNeo(question=300)
```
The answers must be in a *standardized json*, you can insert this template in the [data](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/IPIP-NEO/120/answers.json) folder of the project. This dictionary contains random answers, used for testing purposes only. As an example, you can load the file with the **120** test responses:
```python
import json, urllib.request
data = urllib.request.urlopen("https://raw.githubusercontent.com/NeuroQuestAi"\
"/five-factor-e/main/data/IPIP-NEO/120/answers.json").read()
answers120 = json.loads(data)
```
For the long inventory version with **300** items.
```python
import json, urllib.request
data = urllib.request.urlopen("https://raw.githubusercontent.com/NeuroQuestAi"\
"/five-factor-e/main/data/IPIP-NEO/300/answers.json").read()
answers300 = json.loads(data)
```
#### Compute the data 🏁
The **compute** method is used to evaluate the answers, see the table below with the parameters:
| Parameters | Type | Description |
| ------------- | --------- | --------------------------------------------------------- |
| sex | string | Sex assigned at birth (M or F). |
| age | int | Age (in years between 10 and 110 years old). |
| answers | dict | Standardized dictionary with answers. |
| compare | boolean | If true, it shows the user's answers and reverse score. |
Calculate the Big Five for a **40-year-old man**:
```python
IpipNeo(question=120).compute(sex="M", age=40, answers=answers120)
```
For the long version of the inventory just change the parameters *question* to **300**.
```python
IpipNeo(question=300).compute(sex="M", age=40, answers=answers300)
```
Calculating the Big Five for a **25-year-old woman**:
```python
IpipNeo(question=120).compute(sex="F", age=25, answers=answers120)
```
An example of the output of the results:
```json
{
"personalities":[
{
"openness":{
"O":24.29091080263288,
"score": "low",
"traits":[
{
"trait":1,
"imagination":21.43945888481437,
"score":"low"
},
{
"trait":2,
"artistic_interests":4.344187760272675,
"score":"low"
},
{
"trait":3,
"emotionality":8.379530297432893,
"score":"low"
},
{
"trait":4,
"adventurousness":30.805235884673323,
"score":"low"
},
{
"trait":5,
"intellect":47.84680512022845,
"score":"average"
},
{
"trait":6,
"liberalism":84.95164346200181,
"score":"high"
}
]
}
}
]
}
```
Example of the complete output check here: [Big 5️⃣ Output](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/IPIP-NEO/120/result.json)
### Tests 🏗
For the tests it is necessary to download the repository. To run the unit tests use the command below:
```shell
$ ./run-test
```
#### Using inventory for testing 📚
If you want to make an assessment by answering the inventory of questions, just run:
```shell
$ ipipneo-quiz
```
In this program you take an assessment for the short version with **120** items as well as the **300** item version, just follow the program's instructions. It is possible to see the **basic graphs** of your **Big-Five** via terminal, if you want to see the graphs at the end of the questionnaires you need to run the installation command:
```shell
$ pip install five-factor-e[quiz]
```
Example output with graphics:
<p align="center">
<img src="https://raw.githubusercontent.com/NeuroQuestAi/five-factor-e/main/doc/sample-light-1.png" alt="Big Five Results" border="1"/>
</p>
*The complete result is saved in the run folder in json format*.
### About data 📊
Inside the data [data](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/) directory, there are examples of questions and answers. The most important is the response data entry which must follow the pattern of this [file](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/IPIP-NEO/120/answers.json). Example:
```json
{
"answers":[
{
"id_question":50,
"id_select":5
},
{
"id_question":51,
"id_select":2
}
]
}
```
The id question field refers to the question in this [file](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/IPIP-NEO/120/questions.json).
Obviously if you want you can change the translation of the question, *but don't change the ID of the question*.
Note 🚩:
* *The order of answers does not affect the result;*
* *You can rephrase the questions to your need, but don't change the question IDs, they are used by the algorithm.*
### Credits 🏆
* Dr John A. Johnson
* Dhiru Kholia
* Chris Hunt
### License 🙋
* https://ipip.ori.org/newPermission.htm
### Resources 📗
* https://sites.psu.edu/drj5j/
* https://ipip.ori.org/
* https://osf.io/tbmh5/
* https://github.com/kholia/IPIP-NEO-PI
### Authors 👨💻
* [Ederson Corbari](mailto:e@NeuroQuest.ai) 👽
Raw data
{
"_id": null,
"home_page": null,
"name": "five-factor-e",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "IPIP, IPIP-NEO, Big-5, Big-Five, Five-Factor, Personality, Assessment, Psychometrics, Personality-Insights, People-Analytics, Python",
"author": "Ederson Corbari, NeuroQuest AI",
"author_email": "<e@NeuroQuest.ai>",
"download_url": "https://files.pythonhosted.org/packages/25/9a/351408b235e4133c0e0a98aacb2cb4c9ce415ec4f3a942bb85fb1aacd0ac/five_factor_e-1.12.1.tar.gz",
"platform": null,
"description": "\n<img src=\"https://raw.githubusercontent.com/NeuroQuestAi/neuroquestai.github.io/main/brand/logo/neuroquest-orange-logo.png\" align=\"right\" width=\"65\" height=\"65\"/>\n\n# Five Factor E \ud83c\udf0a\n\n[![Powered by NeuroQuestAI](https://img.shields.io/badge/powered%20by-NeuroQuestAI-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](\nhttps://neuroquest.ai)\n[![PyPI Latest Release](https://img.shields.io/pypi/v/five-factor-e.svg)](https://pypi.org/project/five-factor-e/)\n![python 3][python_version]\n[![PyPi Downloads](https://static.pepy.tech/badge/five-factor-e)](https://pepy.tech/project/five-factor-e)\n[![Code style: Black](https://img.shields.io/badge/code%20style-Black-000000.svg)](https://github.com/psf/black)\n[![Packaged with Poetry][poetry-badge]](https://python-poetry.org/)\n\n[poetry-badge]: https://img.shields.io/badge/packaging-poetry-cyan.svg\n[python_version]: https://img.shields.io/static/v1.svg?label=python&message=3%20&color=blue\n\n<p align=\"center\">\n <img src=\"https://raw.githubusercontent.com/NeuroQuestAi/five-factor-e/main/doc/big-five2.png\" alt=\"Representation of the Big Five\"/>\n</p>\n\nThe International Personality Item Pool [(IPIP)](https://ipip.ori.org/) is a public domain collection of items for use in personality tests. It is managed by the [Oregon Research Institute](https://www.ori.org/).\n\nThis project assesses a person's personality based on an inventory of questions. The project uses the **Big Five** theory using the [IPIP-NEO-300](https://drj.virtualave.net/IPIP/ipipneo300.htm) model created by **Lewis R. Goldberg** and [IPIP-NEO-120](https://drj.virtualave.net/IPIP/ipipneo120.htm) the shorter version developed by Professor **Dr. John A. Johnson**, this is a free representation of the [NEO PI-R\u2122](https://en.wikipedia.org/wiki/Revised_NEO_Personality_Inventory). \n\n\ud83d\udc49 *\"The IPIP-NEO is not identical to the original NEO PI-R, but in my opinion it is close enough to serve as a good substitute. More and more people are beginning to use it in published research, so its acceptance is growing.\"* - Dr. Johnson\n\nThe main idea of the project is to facilitate the use of **Python** developers who want to use **IPIP-NEO** in their projects. *The project is also done in pure Python, it doesn't have any dependencies on other libraries*.\n\n\ud83d\udc49 *\"That is wonderful, ...! Thank you for developing the Python version of the IPIP-NEO and making it publicly available. It looks like a great resource.\"* - Dr. Johnson\n\nNote \ud83d\udea9: *The project is based on the work of Dhiru Kholia, and is an adaptation of [NeuroQuestAI](https://github.com/NeuroQuestAi) for a version that can be reused in other projects of the company.*\n\n### Synopsis \ud83c\udf10\n\nA little theory, The Big Five or Five Factor is made up of **5** great human personalities also known as the \ud83c\udf0a **O.C.E.A.N**. Are they:\n\n * **O**penness\n * **C**onscientiousness\n * **E**xtraversion\n * **A**greeableness\n * **N**euroticism\n\nTo compose each great personality there are **6** traits or facets, totaling **30** traits. The user must answer a questionnaire of **120** or **300** single choice questions with **5** options:\n\n* Very Inaccurate\n* Moderately Inaccurate\n* Neither Accurate Nor Inaccurate\n* Moderately Accurate\n* Very Accurate\n\nFor more information to demystify the Big Five, please see the article: [Measuring the Big Five Personality Domains](https://pages.uoregon.edu/sanjay/bigfive.html).\n\nUser-selected answers follow the position:\n\n| Option | Array |\n| ------------------------------- | ----------- |\n| Very Inaccurate | 1 |\n| Moderately Inaccurate | 2 |\n| Neither Accurate Nor Inaccurate | 3 |\n| Moderately Accurate | 4 |\n| Very Accurate | 5 |\n\nNote \ud83d\udea9: Some answers have the order of the [score reversed](https://ipip.ori.org/newScoringInstructions.htm), the algorithm treats the questions with the score inverted by (*question_id*).\n\n### Releases \ud83c\udf88\n\nNews about each version please look here:\n\n * [Releases](https://github.com/NeuroQuestAi/five-factor-e/blob/main/RELEASES.md)\n\n### Installation \ud83d\ude80\n\nFrom **PyPI**:\n\n```shell\npython3 -m pip install --upgrade five-factor-e\n```\n\nFrom source:\n\n```shell\ngit clone https://github.com/NeuroQuestAi/five-factor-e.git ; cd five-factor-e\npython3 -m pip install .\n```\n\nor [Poetry](https://python-poetry.org/):\n\n```shell\ngit clone https://github.com/NeuroQuestAi/five-factor-e.git ; cd five-factor-e\npoetry shell && poetry install\n```\n\n### How to use \ud83d\udd25\n\nThe construtor requires the questions model, whether it is the **300** model or short model with **120** questions. It also has the version to do simulations with the questions that are [reversed](https://ipip.ori.org/newScoringInstructions.htm). For this, you must turn the **test** variable from false to true, for more details on reverse scoring tests see section [Experiments with reverse scoring questions](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/README.md).\n\n| Parameters | Type | Description |\n| ------------- | --------- | ----------------------------------------------------------------- |\n| question | int | Question type, 120 or 300. |\n| test | boolean | Used to simulate reverse scoring questions, only used for studies.|\n\nExample:\n\n```python\nfrom ipipneo import IpipNeo\n\nipip = IpipNeo(question=120)\n```\n\nThe **120** item version is a short version of the inventory, but you can use the full **300** item version. Example:\n\n```python\nfrom ipipneo import IpipNeo\n\nipip = IpipNeo(question=300)\n```\n\nThe answers must be in a *standardized json*, you can insert this template in the [data](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/IPIP-NEO/120/answers.json) folder of the project. This dictionary contains random answers, used for testing purposes only. As an example, you can load the file with the **120** test responses:\n\n```python\nimport json, urllib.request\n\ndata = urllib.request.urlopen(\"https://raw.githubusercontent.com/NeuroQuestAi\"\\\n \"/five-factor-e/main/data/IPIP-NEO/120/answers.json\").read()\n\nanswers120 = json.loads(data)\n```\n\nFor the long inventory version with **300** items.\n\n```python\nimport json, urllib.request\n\ndata = urllib.request.urlopen(\"https://raw.githubusercontent.com/NeuroQuestAi\"\\\n \"/five-factor-e/main/data/IPIP-NEO/300/answers.json\").read()\n\nanswers300 = json.loads(data)\n```\n\n#### Compute the data \ud83c\udfc1\n\nThe **compute** method is used to evaluate the answers, see the table below with the parameters:\n\n| Parameters | Type | Description |\n| ------------- | --------- | --------------------------------------------------------- |\n| sex | string | Sex assigned at birth (M or F). |\n| age | int | Age (in years between 10 and 110 years old). |\n| answers | dict | Standardized dictionary with answers. |\n| compare | boolean | If true, it shows the user's answers and reverse score. |\n\nCalculate the Big Five for a **40-year-old man**:\n\n```python\nIpipNeo(question=120).compute(sex=\"M\", age=40, answers=answers120)\n```\n\nFor the long version of the inventory just change the parameters *question* to **300**.\n\n```python\nIpipNeo(question=300).compute(sex=\"M\", age=40, answers=answers300)\n```\n\nCalculating the Big Five for a **25-year-old woman**:\n\n```python\nIpipNeo(question=120).compute(sex=\"F\", age=25, answers=answers120)\n```\n\nAn example of the output of the results:\n\n```json\n{\n \"personalities\":[\n {\n \"openness\":{\n \"O\":24.29091080263288,\n \"score\": \"low\",\n \"traits\":[\n {\n \"trait\":1,\n \"imagination\":21.43945888481437,\n \"score\":\"low\"\n },\n {\n \"trait\":2,\n \"artistic_interests\":4.344187760272675,\n \"score\":\"low\"\n },\n {\n \"trait\":3,\n \"emotionality\":8.379530297432893,\n \"score\":\"low\"\n },\n {\n \"trait\":4,\n \"adventurousness\":30.805235884673323,\n \"score\":\"low\"\n },\n {\n \"trait\":5,\n \"intellect\":47.84680512022845,\n \"score\":\"average\"\n },\n {\n \"trait\":6,\n \"liberalism\":84.95164346200181,\n \"score\":\"high\"\n }\n ]\n }\n }\n ]\n}\n```\n\nExample of the complete output check here: [Big 5\ufe0f\u20e3 Output](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/IPIP-NEO/120/result.json)\n\n### Tests \ud83c\udfd7\n\nFor the tests it is necessary to download the repository. To run the unit tests use the command below:\n\n```shell\n$ ./run-test\n```\n\n#### Using inventory for testing \ud83d\udcda\n\nIf you want to make an assessment by answering the inventory of questions, just run:\n\n```shell\n$ ipipneo-quiz\n```\n\nIn this program you take an assessment for the short version with **120** items as well as the **300** item version, just follow the program's instructions. It is possible to see the **basic graphs** of your **Big-Five** via terminal, if you want to see the graphs at the end of the questionnaires you need to run the installation command:\n\n```shell\n$ pip install five-factor-e[quiz]\n```\n\nExample output with graphics:\n\n<p align=\"center\">\n <img src=\"https://raw.githubusercontent.com/NeuroQuestAi/five-factor-e/main/doc/sample-light-1.png\" alt=\"Big Five Results\" border=\"1\"/>\n</p>\n\n*The complete result is saved in the run folder in json format*.\n\n### About data \ud83d\udcca\n\nInside the data [data](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/) directory, there are examples of questions and answers. The most important is the response data entry which must follow the pattern of this [file](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/IPIP-NEO/120/answers.json). Example:\n\n```json\n{\n \"answers\":[\n {\n \"id_question\":50,\n \"id_select\":5\n },\n {\n \"id_question\":51,\n \"id_select\":2\n }\n ]\n}\n```\n\nThe id question field refers to the question in this [file](https://github.com/NeuroQuestAi/five-factor-e/blob/main/data/IPIP-NEO/120/questions.json).\nObviously if you want you can change the translation of the question, *but don't change the ID of the question*.\n\nNote \ud83d\udea9:\n * *The order of answers does not affect the result;*\n * *You can rephrase the questions to your need, but don't change the question IDs, they are used by the algorithm.*\n\n### Credits \ud83c\udfc6\n\n * Dr John A. Johnson\n * Dhiru Kholia\n * Chris Hunt\n\n### License \ud83d\ude4b\n\n * https://ipip.ori.org/newPermission.htm\n\n### Resources \ud83d\udcd7\n\n * https://sites.psu.edu/drj5j/\n * https://ipip.ori.org/\n * https://osf.io/tbmh5/\n * https://github.com/kholia/IPIP-NEO-PI\n\n### Authors \ud83d\udc68\u200d\ud83d\udcbb\n\n * [Ederson Corbari](mailto:e@NeuroQuest.ai) \ud83d\udc7d\n",
"bugtrack_url": null,
"license": null,
"summary": "Big 5 IPIP-NEO Personality Traits",
"version": "1.12.1",
"project_urls": null,
"split_keywords": [
"ipip",
" ipip-neo",
" big-5",
" big-five",
" five-factor",
" personality",
" assessment",
" psychometrics",
" personality-insights",
" people-analytics",
" python"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "8ce2579d4dbe9e37d5f5c28d3b86b3e6fce857cb8eee4242a905379340789293",
"md5": "39fdf9fb9fe7c403a4e2d38430a3c0ce",
"sha256": "d6a3b61e68ef974b48d40737c556bf4079f3093a03b7b30258aab389c6391be1"
},
"downloads": -1,
"filename": "five_factor_e-1.12.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "39fdf9fb9fe7c403a4e2d38430a3c0ce",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 23719,
"upload_time": "2024-07-20T20:54:11",
"upload_time_iso_8601": "2024-07-20T20:54:11.287939Z",
"url": "https://files.pythonhosted.org/packages/8c/e2/579d4dbe9e37d5f5c28d3b86b3e6fce857cb8eee4242a905379340789293/five_factor_e-1.12.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "259a351408b235e4133c0e0a98aacb2cb4c9ce415ec4f3a942bb85fb1aacd0ac",
"md5": "774c22297d450b4ed03e2ee2052228e3",
"sha256": "ea71cbb45094c6d84b050ccbc3300583157dd5017de18c238561f50ee7c6c9ce"
},
"downloads": -1,
"filename": "five_factor_e-1.12.1.tar.gz",
"has_sig": false,
"md5_digest": "774c22297d450b4ed03e2ee2052228e3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 36671,
"upload_time": "2024-07-20T20:54:14",
"upload_time_iso_8601": "2024-07-20T20:54:14.015758Z",
"url": "https://files.pythonhosted.org/packages/25/9a/351408b235e4133c0e0a98aacb2cb4c9ce415ec4f3a942bb85fb1aacd0ac/five_factor_e-1.12.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-20 20:54:14",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "five-factor-e"
}